Encontrado isso é possível usando o 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"
}
Exemplo de mapeamento Shift-Tab para executar este comando (adicionar a ~/.zshrc
):
zle -N roxterm_cycle_profile
# Shift-Tab to cycle
bindkey "^[[Z" roxterm_cycle_profile
Note que eu não encontrei uma maneira de ler o perfil atual, então a primeira vez que isso é acessado, o perfil padrão é usado.