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 🙁 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?