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

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

当打开像 GIMP 这样的程序时,我发现打开后台窗口会分散注意力,因为 GIMP 有三个与之关联的单独窗口。

必须手动转到每个其他非 Gimp 窗口来最小化它,这很麻烦。我需要的是 Ubuntu 中与 Windows 的Super+Home快捷键相匹配的键盘快捷键。可以最小化除活动窗口之外的所有窗口。

在 Ubuntu 中可以实现这种行为吗?

答案1

可以使用 Python 脚本实现这一点。脚本需要安装python-wnckpython-gtk才能运行,尽管我认为这些都是默认安装的。

将其复制并粘贴到文本编辑器中,并保存在合理的位置(例如最小化.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'(假设你将其保存为最小化.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()

答案2

这是一个非常简单的方法控制端

wmctrl -k on; wmctrl -R :ACTIVE:

第一个命令显示桌面(即最小化所有窗口),第二个命令显示“活动”窗口,即最小化之前的活动窗口。我将其放在一行 bash 脚本中,然后为该脚本设置键盘快捷键。

编辑:使用以下方法恢复所有窗口:

wmctrl -l | cut -d' ' -f 1 | xargs -n1 wmctrl -i -a

答案3

使用 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

答案4

Ubuntu 21.10 正在运行 Wayland,我希望在新显示器上使用此功能。这是对我有用的解决方案,它是一个绑定到自定义组合键的 bash 脚本。

#!/bin/bash
gdbus call \
  --session \
  --dest org.gnome.Shell \
  --object-path /org/gnome/Shell \
  --method org.gnome.Shell.Eval \
  "global
      .get_window_actors()
      .filter(w=>w.meta_window.has_focus()===false)
      .forEach(w=>w.meta_window.minimize())"

相关内容