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

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

1 ответ1

0

Обнаружено, что это возможно с помощью 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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .