Qualquer forma de abrir janelas a partir da barra de janelas usando um atalho

5

Qualquer maneira de abrir janelas a partir da 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 xfce4 neste momento, mas se sob o 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 estou procurando por classificadores relacionados ao aplicativo, mas como abaixo, à janela.

    
por tirengarfio 05.12.2014 / 19:09

2 respostas

5

Com um pequeno script e uma pequena cirurgia no seu sistema, ele pode ser organizado exatamente como você descreve.

Ingredientes

  1. %código%; possivelmente precisa ser instalado.
  2. O script abaixo
  3. wmctrl , para obter as propriedades da janela. Isso já está instalado no seu sistema.
  4. Alterações de configurações nas configurações do painel do xfce
  5. Atalhos de teclado adicionais

Como configurar

  • Instale xprop :

    sudo apt-get install wmctrl
    
  • Crie um diretório wmctrl ( ~/bin ). Copie o script abaixo em um arquivo vazio, salve-o como /home/<yourname>/bin (sem extensão) em panel_navigate e torne-o executável .

  • Alterar configurações do painel:
    Vá para o Gerenciador de configurações & gt; "Painel" & gt; "Itens" (tab) & gt; "Botões da janela" & gt;

    • "Ordem de classificação" & gt; Escolha: Timestamp
    • "Agrupamento de janelas" & gt; Escolha: "Nunca"
    • Verifique se "Mostrar janelas de todas as áreas de trabalho ou viewports" está un marcado

  • Adicionar atalhos de teclado:
    vá para o Gerenciador de configurações & gt; "Teclado" & gt; "Atalhos de aplicativos", escolha "Adicionar". Adicione o comando:

    panel_navigate 1
    

    Defina para a combinação de teclas Ctrl + 1

  • Agora você pode escolher:

    • para repetir este procedimento para adicionar ~/bin em Ctrl + 2 e assim por diante (até 9)

    (opção de 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
      

      em que os atalhos de teclado (em panel_navigate 2 ) são armazenados. Abra o arquivo com xfce e procure por uma linha como:

      <property name="&lt;Primary&gt;1" type="string" value="panel_navigate 1"/>
      

      Copie a linha, cole-a na próxima linha (inserir) e altere as ocorrências de 1 para 2, para obter:

      <property name="&lt;Primary&gt;1" type="string" value="panel_navigate 1"/>
      <property name="&lt;Primary&gt;2" type="string" value="panel_navigate 2"/>
      

    e assim por diante.

    Verifique se o recuo é exatamente o mesmo. Repita o procedimento até 9.

Faça o logout e volte a funcionar e isso deve funcionar:

Ctrl + 1

Ctrl + 3

E assim por diante ...

O script

#!/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 mousepad , é ordenada pela idade das janelas. Ao fazer o painel xfce fazer o mesmo (configurações), ambos os pedidos são correspondentes perfeitamente. O que o script faz é criar uma lista de janelas, filtrar as janelas visíveis "reais" (com wmcrl -l ) e alternar para uma janela escolhida pelo comando xprop , com o número da janela (da esquerda para a à direita) como um instrumento.

Problemas

Eu notei uma exceção: as janelas IDLE (interpretador de python) possuem pid 0 e suas propriedades não podem ser "pesquisadas" por panel_navigate . As janelas não aparecem na lista de janelas e são ignoradas pelo script.

Nota

Embora a combinação de teclas Ctrl + xprop não tenha gerado nenhum erro durante o teste, pode entrar em conflito com alguns aplicativos. Pode ser mais seguro escolher (por exemplo) Ctrl + Alt + 1

    
por Jacob Vlijm 11.12.2014 / 12:27
2

Não tenho certeza para o mesmo aplicativo , mas em Unity você pode alternar os aplicativos com super+number , como por exemplo, super + 1 = primeiro item no inicializador, super + 2 = o segundo item do lançador, super + n = o enésimo item do lançador. Isso também ajuda a abrir qualquer item colocado no lançador, como se nautilus fosse o primeiro item do lançador, super + 1 abriria o gerenciador de arquivos nautilus.

    
por Pavak Paul 05.12.2014 / 20:16