Eine Antwort schreiben

Schreibe deinen Beitrag und versende ihn
Beitragsoptionen
Deine Antwort

Zurück

Themen-Übersicht (Neuester Beitrag zuerst)

sekret
20.05.2018 11:50:51

@Stefan, also gmidimonitor ist im Pfad, hab das Programm aus dem AUR. Wenn ich das in dmenu_run (also das 1-zeilige Skript, das in dmenu integriert ist und ich oben in meinem Skript auskommentiert integriert habe) so eingebe startet das Programm auch korrekt, also wird der Parameter --alsa übernommen.

Die Variable TERM kann ich problemos ändern, danke für den Hinweis!

@Schard, ich hab die "" mal weggemacht, jetzt geht es. Da bin ich echt nicht drauf gekommen! Wieder mal was gelernt smile Danke auch für deine ausführliche Erklärung!

schard
20.05.2018 10:35:20

Der Fehler ist unmissverständlich:

gmidimonitor --alsa

ist kein Kommando.

gmidimonitor

ist ein Kommando und

--alsa

(womöglich) ein Parameter für dieses.

Falls

COMMAND="gmidimonitor --alsa"

darfst du es nicht versuchen, mit

"${COMMAND}"

auszuführen, da so der gesamte String von der Shell als das Kommando interpretiert wird und o.g. Fehler entsteht, sondern

${COMMAND}

ohne Anführungszeichen.

stefanhusmann
20.05.2018 00:05:18

Ist gmidimonitor im Pfad? Woher stammt dies Programm überhaupt? "pacman -Fs gmidimonitor" hat mir dazu nichts verraten.

Und die Variable TERM würde ich anders nennen. Es gibt Programme, die sich anders verhalten, wenn diese Variable gesetzt ist.

sekret
19.05.2018 22:25:16

Ich hab für meine Zwecke das originale Skript dmenu_run um die Möglichkeit, Programme im Terminal zu starten usw. erweitert. Hier der Code:

#!/bin/sh

# Original:
# dmenu_path | dmenu "$@" | ${SHELL:-"/bin/sh"} &

DMENU="dmenu -i"
TERM="st"
RUN="$(dmenu_path | $DMENU "$@")" || exit
case "$RUN" in
        *,) # ,=Terminal Programme
                RUN="$(echo $RUN | sed 's/,$//')"
                "$TERM" -t "$RUN" -e "$RUN" &
                ;;
        *,s) # s=sudo
                RUN="$(echo $RUN | sed 's/,s$//')"
                "$TERM" -t "$RUN" -e sudo -A "$RUN" &
                ;;
        *,h) # h=hold
                RUN="$(echo $RUN | sed 's/,h$//')"
                "$TERM" -t "$RUN" -e sh -c "$RUN ; echo Press Enter to kill me... && read line" &
                ;;
        *,sh|*,hs) # sh|hs=sudo + hold
                RUN="$(echo $RUN | sed -e 's/,sh$//' -e 's/,hs$//')"
                "$TERM" -t "$RUN" -e sudo -A sh -c "$RUN ; echo Press Enter to kill me... && read line" &
                ;;
        *,p) # p=pager
                RUN="$(echo $RUN | sed 's/,p$//')"
                "$TERM" -t "$RUN" -e sh -c "$RUN | less" &
                ;;
        *,sp|*,ps) #sp|ps=sudo + pager
                RUN="$(echo $RUN | sed -e 's/,sp$//' -e 's/,ps$//')"
                "$TERM" -t "$RUN" -e sudo -A sh -c "$RUN | less" &
                ;;
        *,ss) #ss=sudo für GUI
                RUN="$(echo $RUN | sed 's/,ss$//')"
                sudo -A "$RUN" &
                ;;
        *) # =gui apps
                "$RUN" &
                ;;
esac

Was aber jetzt nicht klappt ist, Programmen einen Parameter mitzugeben. Wenn ich z.B. in dmenu dann

gmidimonitor --alsa

eingebe, bekomme ich, wenn ich dmenu-run (so heißt mein Skript) im Terminal starte, diese Ausgabe:

$ dmenu-run
/usr/local/bin/dmenu-run: line 39: gmidimonitor --alsa: command not found

Wo liegt mein Fehler? Ich komm net drauf, hab doch alles in "" gesetzt sad Wenn ich beispielsweise

ranger -h,h

eingebe, soll es ja ein Terminal benutzen (wegen dem Komma) und das Terminal nicht gleich wieder schließen (wegen dem h). Das klappt!


Mag mir jemand unter die Arme greifen?

Fußzeile des Forums

Powered by FluxBB