当打开诸如GIMP之类的程序时,我发现打开背景窗口会分散注意力,因为GIMP具有与之关联的三个独立窗口。
必须手动进入每个其他非Gimp窗口以将其最小化是一个负担。我需要的是Ubuntu中与Windows的Super+ Home快捷键匹配的键盘快捷键。一种将活动窗口以外的所有窗口最小化的窗口。
是否可以在Ubuntu中实现此行为?
当打开诸如GIMP之类的程序时,我发现打开背景窗口会分散注意力,因为GIMP具有与之关联的三个独立窗口。
必须手动进入每个其他非Gimp窗口以将其最小化是一个负担。我需要的是Ubuntu中与Windows的Super+ Home快捷键匹配的键盘快捷键。一种将活动窗口以外的所有窗口最小化的窗口。
是否可以在Ubuntu中实现此行为?
Answers:
可以使用python脚本来实现。该脚本需要python-wnck
和python-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()
然后,您可以通过打开键盘快捷键来设置键盘快捷键。
单击添加以创建新的快捷方式。
使用命令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()
bash -c 'python...
而不仅仅是python ...
?
由于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
使用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