一次最小化多个窗口

一次最小化多个窗口

我正在使用带有 GNOME 的 Ubuntu 18.04。我想知道是否有任何功能可以关联多个窗口,以便当其中一个窗口最小化时,所有其他窗口也会最小化,而当该窗口恢复时,所有其他窗口也会恢复。

即,我正在使用多个终端窗口,并且我想将终端分成 N 组,这样,当我最小化一个终端窗口时,属于该组的所有其他终端窗口也会最小化。

答案1

以下步骤仅适用于 $XDG_SESSION_TYPE x11。

笔记:

  • 它用工具它位于 Universe 存储库中。
  • 它假定您已经对终端窗口进行了分类,即每个组在标题中都有一个通用字符串(在任何其他打开的窗口中都不存在)。
  • 在下面的例子中,有两个组,每个组有三个打开的​​ gnome-terminal 窗口:
    • 地球 1
    • 地球 2
    • 地球 3 和
    • 风 1
    • 风 2
    • 风 3

重要的:
为了确保终端窗口的标题不会改变,我必须首先注释掉以下几行~/.bashrc。如果不这样做,标题将反映当前工作目录,而不是保留您设置的标题:

case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

我使用以下命令命名每个窗口

echo -en "\033]0;New title\a"

注意工具,如此处所用,不会处理使用命名的窗口

wmctrl -r :ACTIVE: -N "New title"

查看答案设置终端窗口的标题:wmctrl 与 xdotool以获得详细的解释。

下面的动画 gif 将说明如何使用位于图像屏幕顶部的另一个“主”终端发出代码来最小化或最大化特定的一组窗口。

为此,我在我的~/.bashrc

mmm(){
    echo "enter KEYWORD" && read KEYWORD && xdotool search --name --onlyvisible "$KEYWORD" > /tmp/tmp.txt
}

xwn() {
    while read p; do xdotool windowminimize "$p"; done </tmp/tmp.txt
}

xwx() {
    while read p; do xdotool windowactivate "$p"; done </tmp/tmp.txt
}
  • mmm用途工具搜索用户提供的字符串“KEYWORD”。本例中的“earth”通常用于要对其采取行动的一组终端窗口。工具生成其窗口标识符,并将其定向到临时文件。
  • xwn用途工具窗口最小化最小化临时文件中指定的窗口的操作。
  • xwx用途工具窗口激活最大化临时文件中指定的窗口的操作。
  • 请注意,根据已完成的其他操作,可能需要在或mmm之前立即运行。xwnxwx

使用 xdotool 最小化/最大化终端窗口组


我不得不用它mogrify -type Grayscale -depth 7 *.png来缩小 gif 的尺寸。

答案2

我不知道有任何东西可以提供您正在寻找的东西,但您可以按照以下步骤尝试这种丑陋的解决方法。

  1. 设置 Ubuntu Dock 显示窗口仅来自当前工作区
  2. 启用“点击时最小化”在 Ubuntu dock 上。完成此操作后,您将能够最小化或恢复所有窗口属于具体应用来自当前工作区通过单击 Dock 中的图标。
  3. 使用不同的工作区对窗口进行分组,例如,将属于第一组的所有终端窗口保留在工作区 1 中,将属于第二组的所有终端窗口保留在工作区 2 中,依此类推。

答案3

Ubuntu 19.04 我还没有测试过这个脚本,请随时纠正我的那些按键。您可以使用脚本来最小化窗口和其他窗口,方法是从名称列表中选择它们并向它们发送最小化按键。不幸的是,我在 Gnome 键盘快捷键中没有看到最小化窗口的快捷方式。在 Gnome 中设置快捷键来运行这个脚本。keydown alt + space release 然后 m(或者输入因为最小化是我的窗口最小/最大/移动列表中的第一个)可以解决问题,xdotool 按键帮助在这里 https://www.linux.org/threads/xdotool-keyboard.10528/

#!/bin/bash
names="Firefox Thunderbird Kate Konsole"
echo "$names"
for name in $names
 do
    #         id=$(xdotool search --onlyvisible --name 
"$name")
             id=$(xdotool search --desktop 0 --class  
"$name")
    echo $name $id
if  [ "x$id" = "x" ]
    then
        echo " window not found for "$name""
    else
          xdotool windowactivate --sync $id key  -- 
 clearmodifiers  --delay 100 keydown alt+space 
 xdotool windowactivate --sync $id key  -- 
 clearmodifiers  --delay 100 key enter
     # you can set sleep by a lesser value here like a 
  fraction 0.1   
  sleep 1
  fi
done

相关内容