Как привязать ключ к профилям цикла в roxterm?

250
ideasman42

Я хотел бы иметь возможность переключать профили в roxterm, не обращаясь к меню каждый раз.

Как это можно сделать?

0

1 ответ на вопрос

0
ideasman42

Обнаружено, что это возможно с помощью dbus:

# 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" } 

Пример отображения Shift-Tab для запуска этой команды (добавить в ~/.zshrc):

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

Обратите внимание, я не нашел способа прочитать текущий профиль, поэтому при первом обращении к нему используется профиль по умолчанию.