Existe um atalho de teclado para minimizar todas as janelas, exceto a ativa?

21

Ao abrir programas como o GIMP, acho que ter janelas em segundo plano é uma distração porque o GIMP tem três janelas separadas associadas a ele.

É um fardo ter que ir a todas as outras janelas que não sejam do Gimp manualmente para minimizá-la. O que eu preciso é de um atalho de teclado no Ubuntu que corresponda ao atalho do Windows Super+ Home. Um que minimiza todas as janelas, exceto a ativa.

É possível atingir esse comportamento no Ubuntu?

Chade
fonte
Idéia interessante! Dê uma olhada na 1ª resposta aqui para obter dicas: askubuntu.com/questions/13709/… Esse post é sobre como adicionar uma função para minimizar tudo. De olhar para isso adicionando uma linha 'maximizar anterior corrente ativa' ou alterá-lo para 'minimizar exceto um ativo atual' depois que faria o truque (?)
Rinzwind
alguma chance de os desenvolvedores adicionarem a opção "Minimizar tudo menos a janela ativa" no menu Atalho do teclado nas versões futuras do Ubuntu? Dessa forma, esse vínculo está "pronto e aguardando" para ser configurado quando os usuários instalam o Ubuntu?
Chad

Respostas:

20

É possível conseguir isso com um script python. O script requer python-wncke python-gtkdeve ser instalado para funcionar, embora eu ache que eles estejam instalados por padrão de qualquer maneira.

Copie e cole isso em um editor de texto e salve em um local adequado (por exemplo, como minimise.py na sua pasta pessoal):

#!/usr/bin/env python
import wnck
import gtk

screen = wnck.screen_get_default()

while gtk.events_pending():
    gtk.main_iteration()

windows = screen.get_windows()
active = screen.get_active_window()

for w in windows:
    if not w == active:
        w.minimize()

Você pode configurar o atalho do teclado abrindo Atalhos do teclado.

Atalhos de teclado no Dash

Clique em Adicionar para criar um novo atalho.

Janela Atalhos do teclado

Use o comando bash -c 'python ~/minimise.py'(isso pressupõe que você o salvou como minimise.py na sua pasta pessoal).

criar atalho

Você pode atribuir sua combinação preferida de teclado a esta ação.

O script minimizará todas as janelas não ativas. Eu não acho que isso seja muito útil para o seu caso de uso, porque você deseja ter todas as janelas do Gimp abertas. Você pode usar um script ligeiramente diferente para minimizar todas as janelas que não são do aplicativo atual:

#!/usr/bin/env python
import wnck
import gtk

screen = wnck.screen_get_default()

while gtk.events_pending():
    gtk.main_iteration()

windows = screen.get_windows()
active_app = screen.get_active_window().get_application()

for w in windows:
    if not w.get_application() == active_app:
        w.minimize()
dv3500ea
fonte
4
+1! É por isso que eu amo Linux! Excelente. @chad: se as múltiplas janelas do gimp são um problema, parece haver uma maneira de o gimp atuar como uma janela. Opa: parece ser o padrão do 2.6 (veja figura; eu não uso o gimp há muito tempo).
Rinzwind
É por isso que eu amo Python - ele tem um módulo para tudo!
Dv3500ea
1
O python-wnck teve que ser instalado no meu sistema, 14.04. Mas, dentro do shell python, ele funciona bem sem a parte gtk.main_loop, mas sem ela dentro do script, não funciona. Então, basicamente, para tornar o script viável a partir de um arquivo .py, a parte gtk.main_loop é uma obrigação. Alguém pode explicar o porquê?
Sergiy Kolodyazhnyy
Por que bash -c 'python... e não apenas python ...?
Michael Campbell
1

Como python-wnck não está mais no repositório apt (Kubuntu 18.04 Bionic), abaixo está o código python modificado (da resposta acima de @Aditya e @ dv3500ea).

A partir do python3, o wnck faz parte da API GObject Introspection ( origem ). Portanto, a sintaxe para importar o wnck (e os objetos Gtk) mudou.

#!/usr/bin/env python

# import necessary objects
import gi
gi.require_version('Wnck', '3.0') # specify Wnck version
from gi.repository import Wnck

from gi.repository import Gtk


# the script itself
screen = Wnck.Screen.get_default()

while Gtk.events_pending():
    Gtk.main_iteration()

windows = screen.get_windows()
active = screen.get_active_window()

for w in windows:
    if not w == active:
        w.minimize()

então atribua o atalho ao script python: (no Kubuntu) kmenueditor -> crie um novo item -> script bash -c 'python path_to_the_python_script.py'-> atribua o atalho desejado

ATUALIZAÇÃO (Mai'19):

No Kubuntu 19.04, eu precisava instalar o módulo gir1.2-wnck-3.0 para fazer o script acima funcionar.

$ python -V
Python 2.7.16
$ sudo apt-get install python3-gi gir1.2-wnck-3.0
user3804598
fonte
1

script bash usando o xdotool:

currentwindowid=$(xdotool getactivewindow)
currentdesktopid=$(xdotool get_desktop)

for w in $(xdotool search --all --maxdepth 3 --desktop $currentdesktopid --name ".*"); do
  if [ $w -ne $currentwindowid ] ; then
    xdotool windowminimize "$w"
  fi
done

minimiza apenas janelas na área de trabalho atual.

Para minimizar janelas em todas as áreas de trabalho:

currentwindowid=$(xdotool getactivewindow)

for w in $(xdotool search --all --maxdepth 3 --name ".*"); do
  if [ $w -ne $currentwindowid ] ; then
    xdotool windowminimize "$w"
  fi
done
user3804598
fonte
Dados os problemas com diferentes versões do Python, eu prefiro esta solução bash.
WinEunuuchs2Unix 17/11