Hallo ich bin gerade dabei mir ein Skript zu erstellen mit dem ich folgendes realisieren möchte:
Taste "X" steuert folgenden Prozess:
Wenn das zu startente Programm nicht bereits läuft - starte es
Wenn das Programm bereits läuft aber nicht fokusiert ist - fokusiere es
Wenn das Programm fokusiert ist (und läuft) - minimiere es.
Ich habe das ganze schon beinahe beisammen:
Das ganze funktioniert solange das Programm seinen Namen im "Window Name" hat z.B: Ein Firefox Prozess hat immer den Namen Firefox enthalten aber z.B. der File Manager Nemo hat im Prozess nicht "Nemo" stehen - das heißt im Umkehrschluss für mich, dass Ich Nemo mit meinem obigen Skript nicht minimieren kann...
Ein Ansatz war bis jetzt, dass ich nicht über den Namen gehe sondern über die PID. Problem hierbei ist, dass xdotools mit ganzen Zahlen arbeitet und wmctrl mit Hexadezimal.
Würde mich sehr freuen wenn mir jemand hier weiterhelfen könnte
LG
Taste "X" steuert folgenden Prozess:
Wenn das zu startente Programm nicht bereits läuft - starte es
Wenn das Programm bereits läuft aber nicht fokusiert ist - fokusiere es
Wenn das Programm fokusiert ist (und läuft) - minimiere es.
Ich habe das ganze schon beinahe beisammen:
Bash:
!/bin/bash
#Get focused window
focused_wid=$(xdotool getactivewindow)
# Get list of windows with the name which we want to launch or minimize
xdotool search --name "$1" > /tmp/widids
# Check if the window is in the list (returns nothing if it's not)
focused_wid=$(awk -v var="$focused_wid" '$0 ~ var' /tmp/widids)
# Check if awk returned something
case "$focused_wid" in
# If it didn't launch the program
"") wmctrl -xa "$1" || "$2" & disown ;;
# If did minimize the window
*) xdotool windowminimize "$focused_wid" ;;
esac
Das ganze funktioniert solange das Programm seinen Namen im "Window Name" hat z.B: Ein Firefox Prozess hat immer den Namen Firefox enthalten aber z.B. der File Manager Nemo hat im Prozess nicht "Nemo" stehen - das heißt im Umkehrschluss für mich, dass Ich Nemo mit meinem obigen Skript nicht minimieren kann...
Ein Ansatz war bis jetzt, dass ich nicht über den Namen gehe sondern über die PID. Problem hierbei ist, dass xdotools mit ganzen Zahlen arbeitet und wmctrl mit Hexadezimal.
Bash:
/bin/bash
# Get focused window PID
focused_wid=$(xprop -root | awk '/_NET_ACTIVE_WINDOW(WINDOW)/{print $NF}')
# LIST all windows PIDs
wmctrl -l | awk '{print $1}' > /tmp/widids
# AB hier ist der Code falsch bzw. nicht kombatibel. Ich verstehe die awk Zeile auch nicht ganz...
# Check if the window is in the list (returns nothing if it's not)
focused_wid=$(awk -v var="$focused_wid" '$0 ~ var' /tmp/widids)
# Check if awk returned something
case "$focused_wid" in
# If it didn't launch the program
"") wmctrl -xa "$1" || "$1" & disown ;;
# If did minimize the window; Hier entsteht ein Problem weil xdotool die Hexadezimal nicht lesen kann
*) xdotool windowminimize "$focused_wid" ;;
esac
Würde mich sehr freuen wenn mir jemand hier weiterhelfen könnte
LG