Wie bindet man einen Schlüssel an ein Zyklusprofil in Echtzeit?

278
ideasman42

Ich möchte in der Lage sein, Profile in Echtzeit zu wechseln, ohne jedes Mal auf das Menü zugreifen zu müssen.

Wie kann das gemacht werden?

0

1 Antwort auf die Frage

0
ideasman42

Gefunden ist dies mit dbus möglich:

# uses _ROXTERM_PROFILE env var to cycle profiles roxterm_cycle_profile() { IFS="$(printf '\n')" if [ -z "$_ROXTERM_PROFILE" ]; then export _ROXTERM_PROFILE=Default fi PROFILES=$(ls -1 ~/.config/roxterm.sourceforge.net/Profiles) TOTAL_LINES=$(echo $PROFILES | wc -l) INDEX_NEW=$(echo $PROFILES | grep -n "^$_ROXTERM_PROFILE\$" | cut -d: -f 1) INDEX_NEW=$(expr $(($INDEX_NEW+1)) % $TOTAL_LINES) if [ "0" -eq $INDEX_NEW ]; then INDEX_NEW=1 fi export _ROXTERM_PROFILE=$(echo $PROFILES | sed $INDEX_NEW"q;d") dbus-send \ --session /net/sf/roxterm/Options \ net.sf.roxterm.Options.SetProfile \ string:"$ROXTERM_ID" \ string:"$_ROXTERM_PROFILE" } 

Beispiel für die Zuordnung von Shift-Tab zum Ausführen dieses Befehls (Hinzufügen zu ~/.zshrc):

zle -N roxterm_cycle_profile # Shift-Tab to cycle bindkey "^[[Z" roxterm_cycle_profile 

Hinweis: Ich habe keine Möglichkeit gefunden, das aktuelle Profil zu lesen. Beim ersten Aufruf wird das Standardprofil verwendet.