是否有键盘快捷键可用于最小化除活动窗口以外的所有窗口?


21

当打开诸如GIMP之类的程序时,我发现打开背景窗口会分散注意力,因为GIMP具有与之关联的三个独立窗口。

必须手动进入每个其他非Gimp窗口以将其最小化是一个负担。我需要的是Ubuntu中与Windows的Super+ Home快捷键匹配的键盘快捷键。一种将活动窗口以外的所有窗口最小化的窗口。

是否可以在Ubuntu中实现此行为?


有趣的主意!请看这里第一个关于指针的答案:askubuntu.com/questions/13709/…这篇文章是关于添加使所有内容最小化的函数的。从看它添加一条线“最大化以前的当前活动状态”或将其更改为“最小化当前活动状态以外的状态”,这将
起到

在未来的Ubuntu版本中,开发人员是否有机会在“键盘快捷方式”菜单中添加“最小化活动窗口之外的所有内容”选项?这样,当用户安装Ubuntu时,此绑定是“准备就绪”吗?
乍得

Answers:


20

可以使用python脚本来实现。该脚本需要python-wnckpython-gtk被安装在以工作,但我认为这是默认安装的反正。

将其复制并粘贴到文本编辑器中,然后保存在一个合理的位置(例如,保存在主文件夹中的minimise.py中):

#!/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()

然后,您可以通过打开键盘快捷键来设置键盘快捷键。

Dash中的键盘快捷键

单击添加以创建新的快捷方式。

键盘快捷方式窗口

使用命令bash -c 'python ~/minimise.py'(这是假设您将其另存为homem文件夹中的minimise.py)。

建立捷径

然后,您可以将首选的键盘组合分配给该操作。

该脚本将最小化所有非活动窗口。我认为这对您的用例不是很有用,因为您将需要打开所有的Gimp窗口。您可以使用稍有不同的脚本来最小化不是来自当前应用程序的所有窗口:

#!/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()

4
+1!这就是为什么我喜欢Linux!优秀。@chad:如果gimp的多个窗口有问题,似乎可以将gimp用作1个窗口。糟糕:这似乎是2.6的默认设置(请看图;我已经很长时间没有使用gimp了)。
Rinzwind

这就是为什么我喜欢Python-它具有适用于一切的模块!
dv3500ea 2011年

1
python-wnck必须安装在我的系统14.04上。但是,问题是,在python shell中,没有gtk.main_loop部分就可以正常工作,但是在脚本中没有它时,它就没有。因此,基本上,要使该脚本可从.py文件使用,必须要有gtk.main_loop部分。有人可以解释为什么吗?
Sergiy Kolodyazhnyy

为什么bash -c 'python... 而不仅仅是python ...
Michael Campbell

1

由于python-wnck不再位于apt资料库(Kubuntu 18.04 Bionic)中,因此下面是经过修改的python代码(来自@Aditya和@ dv3500ea的答复)。

从python3开始,wnck是GObject Introspection API(源代码)的一部分。因此,导入wnck(和Gtk对象)的语法已更改。

#!/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()

然后将快捷方式分配给python脚本:(在Kubuntu中)kmenueditor->创建新项目->脚本bash -c 'python path_to_the_python_script.py'->分配所需的快捷方式

更新(19年5月):

在Kubuntu 19.04,我需要安装gir1.2-wnck-3.0模块才能使上述脚本正常工作。

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

1

使用xdotool的bash脚本:

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

它将最小化当前桌面上的窗口。

要最小化所有桌面上的窗口:

currentwindowid=$(xdotool getactivewindow)

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

考虑到不同Python版本的问题,我更喜欢这种bash解决方案。
WinEunuuchs2Unix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.