#1 19.05.2018 22:25:16

sekret
Mitglied

[gelöst] Meine Version von dmenu_run: Ein Problem

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?

Beitrag geändert von sekret (24.07.2018 21:53:12)

Offline

#2 20.05.2018 00:05:18

stefanhusmann
Moderator

Re: [gelöst] Meine Version von dmenu_run: Ein Problem

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.

Offline

#3 20.05.2018 10:35:20

schard
Mitglied

Re: [gelöst] Meine Version von dmenu_run: Ein Problem

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.

Beitrag geändert von schard (20.05.2018 10:36:38)

Offline

#4 20.05.2018 11:50:51

sekret
Mitglied

Re: [gelöst] Meine Version von dmenu_run: Ein Problem

@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!

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums