Existe alguma maneira de abrir janelas na barra do Windows usando um atalho? por exemplo, para abrir a primeira janela à esquerda Ctrl+1, para abrir a segunda janela à esquerda Ctrl+2.
Estou usando o xfce4 neste momento, mas se no xfce4 não for possível, existe algum outro ambiente de desktop que permita isso?
Como tenho várias janelas abertas para o mesmo aplicativo, não procuro sortcuts relacionados ao aplicativo, mas como digo abaixo, à janela.
Responder1
Com um pequeno script e uma pequena cirurgia em seu sistema, tudo pode ser organizado exatamente como você descreve.
Ingredientes
wmctrl
; possivelmente precisa ser instalado.- O roteiro abaixo
xprop
, para obter as propriedades da janela. Isso já está instalado em seu sistema.- Mudanças nas configurações do painel xfce
- Atalhos de teclado adicionais
Como configurar
Instalar
wmctrl
:sudo apt-get install wmctrl
Crie um diretório
~/bin
(/home/<yourname>/bin
). Copie o script abaixo em um arquivo vazio, salve-o comopanel_navigate
(sem extensão)~/bin
etorná-lo executável.Alterar as configurações do painel:
Vá para Gerenciador de configurações > "Painel" > "Itens" (guia) > "Botões da janela" >- "Ordem de classificação" > Escolha:Carimbo de data e hora
- "Agrupamento de janelas" > Escolha: "Nunca"
- Certifique-se de que "Mostrar janelas de todos os espaços de trabalho ou viewports" estejaunmarcado
- "Ordem de classificação" > Escolha:Carimbo de data e hora
Adicionar atalhos de teclado:
vá para Gerenciador de configurações > "Teclado" > "Atalhos de aplicativos", escolha "Adicionar". Adicione o comando:panel_navigate 1
Defina-o para a combinação de teclas Ctrl+1
Agora você pode escolher:
- repetir este procedimento para adicionar
panel_navigate 2
em Ctrl+ 2e assim por diante (até 9)
(opção salvar)ou(se você não tem medo de editar os arquivos de configuração manualmente):
você pode editar o arquivo:
~/.config/xfce4/xfconf/xfce-perchanel-xml/xfce4-keyboard-shortcuts.xml
no qual os atalhos de teclado (em
xfce
) são armazenados. Abra o arquivo commousepad
e procure uma linha como:<property name="<Primary>1" type="string" value="panel_navigate 1"/>
Copie a linha, cole-a na próxima linha (insert) e altere ambas as ocorrências de 1 para 2, para obter:
<property name="<Primary>1" type="string" value="panel_navigate 1"/> <property name="<Primary>2" type="string" value="panel_navigate 2"/>
e assim por diante..
Certifique-se de que o recuo seja exatamente o mesmo. Repita o procedimento até às 9.
- repetir este procedimento para adicionar
Saia e entre novamente e deve funcionar:
Ctrl+1
Ctrl+3
E assim por diante...
O roteiro
#!/usr/bin/env python3
import subprocess
import sys
def get_value(command):
return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").strip()
def run_command(command):
subprocess.Popen(["/bin/bash", "-c", command])
current_workspace = [l for l in get_value("wmctrl -d").splitlines() if l.split(" ")[2] == "*"][0][0]
wlist_ids = [item.split()[0:4] for item in get_value("wmctrl -l").splitlines()]
relevant = [item for item in wlist_ids if item[1] == current_workspace]
panel = []
for item in relevant:
data = get_value("xprop -id "+item[0])
if ("_TYPE_NORMAL" in data, "TYPE_DIALOG" in data).count(True) == 1:
panel.append(item)
try:
window = panel[int(sys.argv[1])-1][0]
run_command("wmctrl -ia "+window)
except IndexError:
pass
Explicação
A solução é oportunista. Ocorreu-me que a lista de janelas, chamada pelo comando wmcrl -l
, é ordenada pela idade das janelas. Ao fazer o painel xfce fazer o mesmo (configurações), ambos os pedidos correspondem perfeitamente. O que o script faz é criar uma lista de janelas, filtrar as janelas "reais" visíveis (com xprop
) e mudar para uma janela escolhida pelo comando panel_navigate
, com o número da janela (da esquerda para a direita) como argumento.
Problemas
Notei uma exceção: as janelas IDLE (intérprete python) possuem pid 0 e suas propriedades não podem ser "pesquisadas" pelo xprop
. As janelas não aparecem na lista de janelas e são ignoradas pelo script.
Observação
Embora a combinação de teclas Ctrl+ <number>
não tenha gerado erros durante o teste, ela pode entrar em conflito com alguns aplicativos. Talvez seja mais seguro escolher (por exemplo)
Ctrl+ Alt+1
Responder2
Não tenho certeza para o mesmo aplicativo, mas Unity
você pode alternar aplicativos com super+number
, como por exemplo, super + 1
= primeiro item do inicializador, super + 2
= o segundo item do inicializador, super + n
= o enésimo item do inicializador. Isso também ajuda a abrir qualquer item colocado no inicializador, como se o nautilus fosse o primeiro item do inicializador, super + 1
abriria o gerenciador de arquivos do nautilus.