Mudar Tema e Ícones do XFCE4 pelo Terminal

Se você gosta de usar o terminal e tem muitos temas instalados, usar comandos é uma ótima solução para mudar o tema e ícones do XFCE4.

Para saber o nome do tema, é só ir ao programa nativo de temas do xfce4, chamado Aparência ou xfce4-appearance-settings.


Leia também:


Como alterar

Alterando o tema GTK:

xfconf-query -c xsettings -p /Net/ThemeName -s "THEME_NAME"

Alterar o tema do XFWM4:

xfconf-query -c xfwm4 -p /general/theme -s "THEME_NAME"

Alterar os ícones:

xfconf-query -c xsettings -p /Net/IconThemeName -s "ICON_NAME"

Alterar o tema e os ícones dos programas Flatpak:

sudo flatpak override --env=GTK_THEME="THEME_NAME"  
sudo flatpak override --env=ICON_THEME="ICON_NAME"

No lugar de “THEME_NAME” e “ICON_NAME” coloque o nome do tema e ícone desejado.

Script em Bash para automação

  1. Crie um arquivo onde e com o nome que desejar.
touch PATH_DO_ARQUIVO
  1. Dê permissão de execução para o arquivo:
chmod +x PATH_DO_ARQUIVO
  1. Adicione esse script no arquivo:
#!/bin/bash  
  
tema="NOME_DO_TEMA"
icone="NOME_DO_ICONE"  
  
xfconf-query -c xsettings -p /Net/ThemeName -s "$tema"  
xfconf-query -c xfwm4 -p /general/theme -s "$tema"  
xfconf-query -c xsettings -p /Net/IconThemeName -s "$icone"  
sudo flatpak override --env=GTK_THEME="$tema"  
sudo flatpak override --env=ICON_THEME="$icone"
  1. Altere “NOME_DO_TEMA” e “NOME_DO_ICONE” para o tema desejado.

Alguns anos atrás tentei achar algo parecido, mas focado em personalizar absolutamente tudo do XFCE4 pelo terminal.

A ideia era criar máquinas com temas exatamente iguais via script e foi tão difícil encontrar que acabei criando um Gist com a solução.

Se alguém se interessar, vou deixar como um complemento para a publicação 🤝

Listando os canais disponíveis para alteração

   xfconf-query -l

Listando as propriedades por canal

   xfconf-query -c $PROPERTY -l -v

   # Por exemplo, a propriedade "xfce4-desktop":
   xfconf-query -c xfce4-desktop -l -v
  • -v: mostra o valor das propriedades.
  • Cada / é uma subpropriedade.

Monitorando as alterações em tempo real

   xfconf-query -c $PROPERTY -m

   # Por exemplo, a propriedade "xfce4-desktop":
   xfconf-query -c xfce4-desktop -m
  • Por exemplo, se o plano de fundo do workspace0 for alterado, o monitoramento irá mostrar o caminho completo da propriedade alterada: /backdrop/screen0/monitorrdp0/workspace0/last-image.
  • Você pode iniciar a monitoração e fazer as alterações via GUI, onde todas as alterações serão exibidas no Terminal para usar posteriormente via Linha de Comando.

Criando ou atualizando uma propriedade

   xfconf-query -c $CHANNEL -np $PROPERTY -t 'bool' -s 'true';

   # Por exemplo, o canal "xfce4-panel" e a propriedade "/panels/dark-mode":
   xfconf-query -c xfce4-panel -np '/panels/dark-mode' -t 'bool' -s 'true';
  • -n: garante que se a propriedade não existir, ela será criada.
  • Você precisa informar o tipo do valor da propriedade:
       [ 'string', 'int', 'bool', 'double' ]
    
  • -s: define o valor da propriedade.
  • Para inserir um array com múltiplos elementos, basta inserir o tipo e valor em sequência:
       -t int -s 0 -t int -s 1 -t int -s 2 #...
    
  • Para forçar um único item como array:
       -t int -s 0 -a
    

Removendo uma propriedade

   xfconf-query -c $CHANNEL -p $PROPERTY -r -R;

   # Por exemplo, removendo o "Panel 2" completamente:
   xfconf-query -c xfce4-panel -p '/panels/panel-2' -r -R;
  • -r: indica a remoção.
  • -R: garante que todas as subpropriedades serão excluídas junto com a propriedade.

Xfce Terminal

  • Você pode editar as preferências do Xfce Terminal em: ~/.config/xfce4/terminal/terminalrc.
  • Você pode realizar as alterações via GUI e copiar o arquivo para uso posterior.
    • Apenas feche e reabra o Terminal para visualizar as alterações.

Whisker Menu

  • Se você usa o Whisker Menu, você pode editar as preferências em: ~/.config/xfce4/panel/whiskermenu-**.rc.
    • Substitua ** pela a ordem do plugin:

      Busque pelo plugin whistermenu em xfce4-panel/plugins para visualizar a ordem do plugin.

      Por exemplo, se o Whister Menu for o plugin-19, então: ~/.config/xfce4/panel/whiskermenu-19.rc.

  • Você pode realizar as alterações via GUI e copiar o arquivo para uso posterior.

Considerações:

  • A maioria das alterações que afetam o frontend necessitam deslogar e logar novamente para visualizar as alterações, especialmente o panel.
  • O comando xfconf-query só funciona com o display ativo.

Abaixo, uma solução completa como exemplo:

   #!/bin/sh

   # Check the display's availability
   if [ -z $DISPLAY ]; then exit 1; fi;

   # Prevent suspend and lock the sreen
   xfconf-query -c xfce4-screensaver -np '/lock/enabled' -t 'bool' -s 'false';
   xfconf-query -c xfce4-screensaver -np '/lock/saver-activation/enabled' -t 'bool' -s 'false';
   xfconf-query -c xfce4-screensaver -np '/saver/enabled' -t 'bool' -s 'false';
   xfconf-query -c xfce4-power-manager -np '/xfce4-power-manager/inactivity-on-ac' -t int -s 0;
   xfconf-query -c xfce4-power-manager -np '/xfce4-power-manager/blank-on-ac' -t int -s 0;
   xfconf-query -c xfce4-power-manager -np '/xfce4-power-manager/dpms-on-ac-sleep' -t int -s 0;
   xfconf-query -c xfce4-power-manager -np '/xfce4-power-manager/dpms-on-ac-off' -t int -s 0;
   xfconf-query -c xfce4-power-manager -np '/xfce4-power-manager/lock-screen-suspend-hibernate' -t 'bool' -s 'false';
   xfconf-query -c xfce4-power-manager -np '/xfce4-power-manager/dpms-enabled' -t 'bool' -s 'false';

   # Remove dock
   xfconf-query -c xfce4-panel -p '/panels/panel-2' -r -R;
   xfconf-query -c xfce4-panel -np '/panels' -t int -s 1 -a;

   # Removing wallpaper
   xfconf-query -c xfce4-desktop -np '/backdrop/screen0/monitorrdp0/workspace0/color-style' -t int -s 0;
   xfconf-query -c xfce4-desktop -np '/backdrop/screen0/monitorrdp0/workspace0/image-style' -t int -s 0;
   xfconf-query -c xfce4-desktop -np '/backdrop/screen0/monitorrdp0/workspace0/rgba1' -t double -s 0.184314 -t double -s 0.207843 -t double -s 0.258824  -t double -s 1.000000;

   # Personal settings
   xfconf-query -c xfce4-desktop -np '/desktop-icons/tooltip-size' -t 'double' -s 48.000000;
   xfconf-query -c xfce4-desktop -np '/desktop-icons/gravity' -t int -s 0;
   xfconf-query -c xfwm4 -np '/general/workspace_count' -t int -s 1;

   # Put menu in bottom
   xfconf-query -c xfce4-panel -np '/panels/dark-mode' -t 'bool' -s 'true';
   xfconf-query -c xfce4-panel -np '/panels/panel-1/position' -t 'string' -s 'p=10;x=0;y=0';
   xfconf-query -c xfce4-panel -np '/plugins/plugin-1/show-tooltips' -t 'bool' -s 'true';

   # Grouping tasklist
   xfconf-query -c xfce4-panel -np '/plugins/plugin-2/grouping' -t int -s 1;

   # Logout settings
   xfconf-query -c xfce4-session -np '/shutdown/ShowSuspend' -t 'bool' -s 'false';
   xfconf-query -c xfce4-session -np '/shutdown/LockScreen' -t 'bool' -s 'false';
   xfconf-query -c xfce4-session -np '/shutdown/ShowHibernate' -t 'bool' -s 'false';
   xfconf-query -c xfce4-session -np '/general/PromptOnLogout' -t 'bool' -s 'false';

   # Logout to save changes
   xfce4-session-logout --logout --fast;