Eu tenho um aplicativo usando várias janelas. Como posso trazer rapidamente todas as janelas desse aplicativo para o primeiro plano?
Quando eu percorro os aplicativos com a roda de rolagem, ele mostra apenas uma janela. Ao ir para a próxima janela, a última janela é trazida para segundo plano novamente.
Quando clico no ícone do aplicativo, obtenho uma visão geral da tela inteira de todas as janelas. Eu tenho que selecionar cada janela manualmente e mover o mouse pela metade da tela várias vezes.
Até agora, minha melhor solução é minimizar todas as janelas ( Ctrl+ Super+ D) e mostrar as janelas do meu aplicativo usando a roda de rolagem.
Existe uma solução melhor?
unity
window-manager
peq
fonte
fonte
Respostas:
EDIT - nova resposta -
As respostas abaixo são / ainda são totalmente válidas e, portanto, as opções sugeridas. No entanto, a percepção contínua me fez adicionar esta opção para usar o indicador abaixo, que provavelmente é a solução mais elegante.
Como tal, provavelmente deve substituir a opção 5 (usando um arquivo .desktop).
Simplesmente escolha o aplicativo na lista e todas as janelas do aplicativo correspondente (presentes na viewport atual) serão exibidas:
Como usar
de ppa:
... ou manualmente:
O indicador precisa
wmctrl
Copie o indicador para um arquivo vazio, salve-o como
raise_apps.py
Copie a imagem abaixo, salve-a exatamente com o mesmo nome
raise.png
no mesmo diretório que o indicador.Em seguida, basta executá-lo pelo comando:
python3 /path/to/raise_apps.py
Adicione se você deseja inicializar aplicativos:
RESPOSTA ANTIGA:
Sobre a pergunta
Com as ferramentas certas, não é muito complicado "apenas" aumentar todas as janelas de um aplicativo. É um pouco mais complicado garantir que apenas as janelas da viewport atual sejam levantadas. O verdadeiro desafio, no entanto, é encontrar uma maneira conveniente de disponibilizar a ação ao usuário.
Abaixo de cinco opções para cuidar disso, para mostrar como isso pode ser feito. Todas as opções estão prontas para serem usadas. A última opção, no entanto, é meio experimental; funciona bem, mas possui algumas desvantagens cosméticas menores, conforme explicado na descrição da opção. Eu o adicionei como um conceito .
Espalhar as janelas automaticamente de maneira não sobreposta, como sugerido em um comentário, não me parece uma idéia prática; se você trabalhar em uma configuração de janela agrupada (em termos de aplicativo), o script poderá reorganizar indesejadamente as janelas.
Como usar
Para todas as opções, você precisa:
instale
wmctrl
se ainda não estiver no seu sistema:crie, se ainda não existir, o diretório:
(explicação: o diretório
~/bin
está em $ PATH, para que você possa executar executáveis pelo nome)Copie o script, correspondente à opção, cole-o em um arquivo vazio, salve-o como
raise_app
(sem extensão)~/bin
e torne-o executávelNas opções separadas, possíveis etapas adicionais serão explicadas.
Opção 1: escolha o aplicativo digitando um ou mais caracteres
zenity
janela apareceráIsso fará com que todas as janelas do aplicativo correspondente (na viewport atual ) fiquem à frente.
aumente todas as
gnome-terminal
janelas na viewport atual:Como usar:
Execute-o de teste pelo comando:
Se tudo funcionar bem, adicione-o a uma combinação de teclas de atalho de sua escolha: Escolha: Configurações do sistema> "Teclado"> "Atalhos"> "Atalhos personalizados". Clique no "+" e adicione o comando
O script:
Opção 2: alterne entre aplicativos e abra suas janelas com uma combinação de teclas:
Digamos que eu tenho o script abaixo em uma combinação de teclas Alt+ 1. Tenho várias janelas abertas de:
O estado atual:
Pressiono uma vez Alt+ 1, todas as
nautilus
janelas são levantadas:Pressiono novamente Alt+ 1, todas as
firefox
janelas são levantadas:Pressiono novamente Alt+ 1, todas as
gnome-terminal
janelas são levantadas novamente, o ciclo recomeça:Como usar
Adicione-o a uma combinação de teclas de atalho de sua escolha: Escolha: Configurações do sistema> "Teclado"> "Atalhos"> "Atalhos personalizados". Clique no "+" e adicione o comando
Em seguida, percorra seus aplicativos com janelas de aplicativos agrupadas com sua combinação de teclas.
O script:
Opção 3: pressione combinação de teclas + clique no ícone do iniciador - ou - janela do aplicativo para abrir todas as janelas na janela atual
Essa é provavelmente a opção mais próxima do descrito na pergunta / comentário.
Digamos que eu tenha uma área de trabalho bagunçada com três
nautilus
janelas enterradas sob outras janelas.Para aumentar todas as janelas do nautilus (exemplo de atalho: Alt+ 1):
Dentro de 3 segundos, qualquer um:
clique no ícone do aplicativo no iniciador
ou:
clique em uma das janelas do aplicativo
resultado:
Como usar:
Execute-o de teste pelo comando:
Se tudo funcionar bem, adicione-o a uma combinação de teclas de atalho de sua escolha: Escolha: Configurações do sistema> "Teclado"> "Atalhos"> "Atalhos personalizados". Clique no "+" e adicione o comando
Então:
Pressione a combinação de teclas e em 3 segundos:
O script
Opção 4: uma combinação de teclas chama uma lista de opções, mostrando o número de janelas por aplicativo na viewport atual
Este acabou por ser mais conveniente do que eu assumi:
Pressionar a combinação de teclas (novamente exemplo-) Alt+ 1chama uma
zenity
janela, listando todos os aplicativos e o número de suas janelas na janela atual:Simplesmente pressionando as setas ▴ou ▾o levará à opção correta. Pressione Entere todas as janelas do aplicativo escolhido são levantadas.
Como usar:
Execute-o de teste pelo comando:
Se tudo funcionar bem, adicione-o a uma combinação de teclas de atalho de sua escolha: Escolha: Configurações do sistema> "Teclado"> "Atalhos"> "Atalhos personalizados". Clique no "+" e adicione o comando
O script
Opção 5: elevar janelas de aplicativos em execução a partir de um ícone do iniciador
Essa opção existe em um ícone do iniciador, com os aplicativos atualmente em execução em uma lista rápida. Escolha uma e todas as janelas dos aplicativos serão levantadas.
O iniciador é atualizado automaticamente quando a lista de aplicativos em execução (na janela atual) é alterada. A lista rápida mostra uma lista diferente em outras viewports, nas quais janelas de outros aplicativos são abertas (levará de 1 a 2 segundos para se adaptar).
Como mencionado, embora totalmente funcional, essa opção é um conceito . Ele tem algumas pequenas desvantagens cosméticas como é. O mais importante:
Além disso, a configuração é um pouco mais complicada (embora explicada em detalhes abaixo):
Como usar
Abaixo você encontrará:
dois scripts / um ícone / um
.desktop
arquivoraise_app
em~/bin
Salve o ícone abaixo (clique com o botão direito do mouse, salve como) como
raise.png
Copie o
.desktop
arquivo para um arquivo vazio, edite a linhapara o caminho real para o ícone (caminhos com espaços entre aspas)
Salve-o como
raise.desktop
em~/.local/share/applications
Arraste o
.desktop
arquivo para o iniciador para adicioná-loupdate_apps
em~/bin
, torne-o executável.Adicione o seguinte comando aos seus aplicativos de inicialização (Dash> Startup Applications> Add):
O primeiro script
O segundo script
O arquivo .desktop
Breve explicação
Todas as soluções acima são usadas
wmctrl
para criar uma lista de janelas, usando owmctrl -lpG
comando Este comando produz linhas, parecidas com:Essas linhas incluem:
xrandr
)O pid é pesquisado na saída de
ps -u <username>
para obter uma identificação "legível pelo usuário" (nome) do aplicativo.Assim, podemos alocar janelas para aplicativos. Posteriormente podemos levantar as janelas de um determinado aplicativo em um
for
loop com o comandowmctrl -ia
.Na opção 3,
o script inicia um loop de "espera" de três segundos, usando o
xprop -root
comando repetidamente para verificar se há alguma alteração na janela da frente; isso acontecerá se o usuário clicar no ícone do iniciador para abrir a janela de um aplicativo ou clicar diretamente na janela. Nesse caso, o loop while interrompe e pesquisa o "novo" aplicativo mais à frente e, posteriormente, gera todas as outras janelas desse aplicativo.fonte
Option 2
script, quando uma janela do aplicativo é focada (que não é maximizada) e clico em outra janela visível "abaixo", o aplicativo abaixo não obtém o foco.Há Super+ Watalho que irá mostrar expo de todas as janelas abertas atualmente, no entanto, que irá incluir outras aplicações. Isso vem por padrão e não requer alterações, portanto, talvez seja uma opção mais simples disponível.
Entre outras coisas, você pode posicionar as janelas nas metades direita e esquerda da tela com os botões Ctrl+ Super+ Left/ Righte alternar entre elas com Alt + ~ (til, o próximo à tecla número um).
fonte
Se você pressionar Alt + Tab para alternar entre aplicativos e chegar a um com várias janelas, mantenha pressionada a tecla alt e, após cerca de 1 segundo, o ícone será substituído pela visualização de todas as janelas desse aplicativo.
Pode ou não ser o que você está procurando, mas funciona para mim e é muito mais simples, então achei que compartilharia a opção!
fonte
Peguei o script raise_apps.py do @ JacobVlijm e fiz alguns aprimoramentos, inclusive para torná-lo mais robusto.
Especificamente, eu descobri que depois de um dia ou dois, o script de @ JacobVlijm parava de funcionar e eu precisava reiniciar o script manualmente para fazê-lo funcionar novamente. Em retrospecto, meu melhor palpite é que as inúmeras chamadas para o xrandr acabam causando problemas.
De qualquer forma, adaptei o código dele, aumentou a frequência de pesquisa de 5 segundos para cada 1 segundo, já que ele não usa muita CPU e o tornou mais robusto. Normalmente, posso executá-lo por dias / semanas sem problemas.
Uma ressalva é que eu chamo o xrandr apenas uma vez durante a inicialização, para obter as dimensões da resolução da tela. Portanto, se você alterar a resolução da tela (por exemplo, de 1920x1080 para outra resolução), provavelmente desejará reiniciar manualmente o raise-apps.py para que ela obtenha a nova resolução. Pessoalmente, nunca mudo a resolução da tela, portanto isso não é um problema para mim. Além disso, tenho fortes razões para acreditar que muitas chamadas para xrandr foram o que estava causando a versão do script de @ JacobVlijm para de funcionar depois de um dia ou dois, então eu recomendaria fortemente não simplesmente colocar as inúmeras chamadas para xrandr de volta ..
BTW, você precisa colocar a imagem raise.png no diretório / usr / local / icons /. Ou, se você deseja colocar o raise.png em um diretório diferente, faça a alteração apropriada no script, para que o script possa encontrar o arquivo de imagem.
Felizmente, o Ubuntu integrará esse tipo de funcionalidade 'raise all windows' em seu sistema mais cedo ou mais tarde, pois é muito útil:
fonte