Recentemente comecei a testar uma ideia envolvendo as Atividades do KDE Plasma e o resultado acabou sendo muito mais interessante do que eu esperava. O experimento nasceu de uma necessidade bem simples do meu fluxo de trabalho, mas rapidamente abriu espaço para vários outros cenários que poderiam ser explorados pela comunidade.
As Atividades do Plasma são um daqueles recursos curiosos do KDE, existem há muitos anos, fazem parte da identidade do ambiente, mas raramente aparecem em discussões mais profundas. Muita gente trata as Atividades apenas como uma versão “mais avançada” dos desktops virtuais, quando na prática elas podem funcionar quase como perfis completos de ambiente.
E foi justamente aí que a ideia começou a ficar interessante.
Mais do que desktops virtuais
Parte do meu fluxo de trabalho envolve gravar a tela para produzir vídeos e capturar b-rolls. Dependendo do tipo de gravação, eu costumo alterar a escala dos monitores para melhorar a legibilidade e a composição visual.
O problema é que repetir esse processo manualmente várias vezes por dia rapidamente se torna cansativo.
Então comecei a procurar formas de automatizar isso. Minha primeira ideia foi usar ferramentas tradicionais do Linux, como o Xrandr, mas eu queria algo mais integrado ao próprio Plasma, principalmente porque isso aumentaria as chances de reutilizar a configuração em outras máquinas no futuro.
A solução acabou vindo dos próprios componentes do KDE, a ideia é relativamente simples:
| Atividade | Escala |
|---|---|
| Padrão | 100% |
| Estúdio | 150% |
Sempre que eu alterno entre as Atividades do Plasma, um script detecta essa mudança e aplica automaticamente um novo layout de monitores usando o KScreen.
O resultado é que a Atividade “Estúdio” já abre com o ambiente preparado para gravação, enquanto a Atividade “Padrão” retorna para o layout normal do dia a dia.
As ferramentas necessárias
Depois de alguma pesquisa, encontrei dois componentes fundamentais para isso funcionar:
- KScreen-Doctor: interface de linha de comando do KScreen, responsável por controlar layouts de monitores no Plasma.
- QDbus6: ferramenta para interagir com o DBus do KDE e monitorar eventos do sistema.
Atenção: no Plasma 5 o comando pode aparecer apenas como
qdbus.
O interessante é que essa abordagem utiliza a própria infraestrutura do Plasma, em vez de depender exclusivamente de ferramentas externas e foi testada com sucesso no Debian 13 e no KDE Linux.
Criando uma Atividade dedicada
O primeiro passo é criar uma nova Atividade! Abra: Configurações do Sistema → Área de Trabalho → Atividades e depois clique em Criar Nova Atividade.
No meu caso, criei uma chamada: Estúdio com as configurações padrão.
Cada Atividade possui um identificador único (UUID), e vamos usar isso para saber quando o Plasma mudou de contexto.
Para listar todas as Atividades disponíveis:
qdbus6 org.kde.ActivityManager /ActivityManager/Activities ListActivities
E para descobrir qual Atividade está atualmente em uso:
qdbus6 org.kde.ActivityManager /ActivityManager/Activities CurrentActivity
Capturando o layout do monitor
Agora entre na Atividade “Estúdio” e faça todos os ajustes desejados manualmente:
- escala,
- posição dos monitores,
- resolução,
- refresh rate,
- rotação,
- etc.
O KScreen-Doctor permite exportar todas essas informações em formato JSON:
kscreen-doctor -j > layout-plasma.json
Esse comando gera um dump completo do estado atual dos monitores.
Outra opção útil é listar todas as saídas disponíveis:
kscreen-doctor -o
Isso ajuda a descobrir os nomes corretos das interfaces, como:
DP-1HDMI-A-1eDP-1
No meu caso, eu preferi não reutilizar o JSON completo automaticamente. Em vez disso, usei o arquivo apenas como referência e criei scripts mais enxutos contendo apenas os parâmetros realmente importantes.
Monitorando a troca de Atividades
Agora vem a parte interessante. A ideia é criar um pequeno monitor que verifica constantemente qual Atividade está ativa. Sempre que o Plasma muda de contexto, o script executa automaticamente o layout correspondente.
Eu preferi salvar tudo dentro do diretório do KScreen:
~/.local/share/kscreen/
Mas os scripts podem ficar em qualquer lugar acessível ao usuário.
Primeiro, torne o script executável:
chmod +x ~/.local/share/kscreen/monitor_atividades.sh
Depois crie o monitor:
#!/bin/bash
ESTUDIO="4f5120d8-21b7-4525-8c84-d535af3dddea"
PADRAO="81e0a547-f024-4214-97ce-e39b27516c5c"
LAST_ACTIVITY=""
while true; do
CURRENT=$(qdbus6 org.kde.ActivityManager /ActivityManager/Activities CurrentActivity)
if [ "$CURRENT" != "$LAST_ACTIVITY" ]; then
case "$CURRENT" in
"$ESTUDIO")
~/.local/share/kscreen/layout-estudio.sh
;;
"$PADRAO")
~/.local/share/kscreen/layout-padrao.sh
;;
esac
LAST_ACTIVITY="$CURRENT"
fi
sleep 1
done
qdbus6 org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.refreshCurrentShell
Exemplo de layout para gravação
Neste exemplo, a Atividade “Estúdio” aplica uma escala de 150% no monitor principal.
#!/bin/bash
kscreen-doctor \
output.DP-1.enable \
output.DP-1.mode.2560x1440@165 \
output.DP-1.scale.1 \
output.DP-1.position.0,0 \
\
output.HDMI-A-1.enable \
output.HDMI-A-1.mode.3840x2160@60 \
output.HDMI-A-1.scale.1.5 \
output.HDMI-A-1.position.0,1440
Exemplo do layout padrão
Já a Atividade “Padrão” restaura a escala convencional de 100%.
#!/bin/bash
kscreen-doctor \
output.DP-1.enable \
output.DP-1.mode.2560x1440@165 \
output.DP-1.scale.1 \
output.DP-1.position.640,0 \
\
output.HDMI-A-1.enable \
output.HDMI-A-1.mode.3840x2160@60 \
output.HDMI-A-1.scale.1 \
output.HDMI-A-1.position.0,1440
O mais interessante é o potencial disso
A parte mais curiosa desse experimento é que ele praticamente transforma as Atividades do Plasma em perfis dinâmicos de hardware e interface. E isso abre muitas possibilidades.
Por exemplo:
- uma Atividade para gravação,
- outra para programação,
- outra para jogos,
- outra para leitura,
- outra para reuniões.
Se você usa um monitor vertical para programar, pode automatizar a rotação:
kscreen-doctor output.HDMI-1.rotation.right
Ou:
kscreen-doctor output.HDMI-1.rotation.left
Também é possível criar Atividades específicas para:
- alterar refresh rate,
- mudar resolução,
- reorganizar monitores,
- ligar ou desligar telas,
- criar layouts diferentes para dock e notebook,
- otimizar ambientes para streaming,
- ou até integrar isso com scripts mais avançados via DBus.
Na prática, qualquer parâmetro ajustável pelo KScreen pode ser automatizado.
Esse pequeno “hack” eliminou um dos gargalos mais irritantes da minha rotina, porque agora praticamente não existe mais troca manual de layout durante as gravações.
Mas honestamente, essa provavelmente é uma das aplicações mais simples possíveis para esse conceito.
Tenho a impressão de que as Atividades do Plasma ainda são um território pouco explorado pela comunidade, principalmente quando começamos a integrar DBus, automações e scripts personalizados.
E talvez seja justamente aí que esse recurso fique realmente interessante.
Adendo importante.: Esqueci de dizer que eu inicio o script automaticamente quando o usuário faz login, se você quiser usar algo mais elegante, pode criar um serviço no SystemD.
Links úteis
- Documentação oficial das Atividades - KDE Plasma Activities Wiki
- KScreen e gerenciamento de monitores - KScreen no KDE Invent / Documentação do KScreen Doctor
- DBus e automações no Plasma - Introdução ao DBus no KDE / Documentação do QDBusViewer e ferramentas DBus do Qt
- Automação e scripting no KDE - KWin Scripting API / Plasma DBus Interfaces
- Artigo relacionado - Streamline Plasma with Activities to be more focused and productive
