我正在使用 Ubuntu 14.04,并且正在尝试从启动器中删除一个正在运行的程序。
具体来说,我想启动两个终端。一个用于我正常工作,有多个选项卡,另一个用于运行 ssh 连接。我想从启动器中隐藏第二个终端,并“将其最小化到托盘”(这是我在 Windows 中对它的称呼)。
有没有办法做到这一点?
答案1
使用下面的脚本来切换可见性(使用组合键),您可以让一个终端窗口在最小化时(完全)隐藏,就好像它不存在一样,而另一个终端窗口在最小化时在启动器中保持可见。
为隐藏的终端窗口创建单独的配置文件
诀窍是在gnome-terminal
首选项中创建一个单独的配置文件,并在窗口标题中使用独特的名称。这样就可以使用命令wmctrl -l
和取消映射xdotool
它与窗口取消映射命令,使其在启动器中不可见。
使用组合键切换可见性/打开“可隐藏”窗口
您必须设置一个组合键来切换终端窗口的可见性,因为它在启动器中不可见(见下文)。
如何设置
该脚本需要安装xdotool
和:wmctrl
sudo apt-get install xdotool
sudo apt-get install wmctrl
然后:
在偏好设置中创建一个单独的配置文件
gnome-terminal
:选择“编辑”>“配置文件”,单击“新建”。- 将新配置文件命名为(准确)“隐藏”
在“标题和命令”选项卡中,将窗口标题设置为(精确地)“Hidden_Profile”,并放置在窗口标题之前:
注意:您可能需要注销/登录才能使个人资料“可加载”
通过运行以下命令测试配置文件是否有效:
gnome-terminal --window-with-profile=Hidden
应该会弹出一个窗口,窗口标题为“Hidden_profile”:
将以下脚本复制到一个空文件中,并将其另存为
run_hidden.py
通过命令测试运行:
python3 /path/to/run_hidden.py
它应该做什么:
- 如果没有运行单独配置文件中的终端窗口,则运行它:应该从单独(“可隐藏”)配置文件打开一个新终端。
- 再次运行:窗口将(完全)隐藏,从启动器中也是如此
- 第三次运行:窗口应该会重新出现
如果一切正常,请将脚本(运行命令)添加到快捷键组合中:选择:系统设置 > “键盘” > “快捷键” > “自定义快捷键”。单击“+”并添加命令:
python3 /path/to/run_hidden.py
剧本
#!/usr/bin/env python3
import subprocess
import os
home = os.environ["HOME"]
hidden_windowid = home+"/.window_id.txt"
get = lambda cmd: subprocess.check_output(cmd).decode("utf-8")
def execute(cmd):
subprocess.check_call(cmd)
try:
w_id = [l.split()[0] for l in get(["wmctrl", "-l"]).splitlines() if "Hidden_Profile" in l][0]
execute(["xdotool", "windowunmap", w_id])
with open(hidden_windowid, "wt") as out:
out.write(w_id)
except IndexError:
try:
with open(hidden_windowid) as read:
w_id = read.read()
execute(["xdotool", "windowmap", w_id])
except subprocess.CalledProcessError:
execute(["gnome-terminal", "--window-with-profile=Hidden"])
解释
脚本使用wmctrl
窗口名称来识别窗口,正如我们在为此目的单独创建的配置文件中给出的那样。一旦我们有了id
,我们就可以使用命令取消映射xdotool
它windowunmap
。
为了确保我们可以使窗口重新出现,它将id
被存储在一个隐藏文件中;如果重新映射失败,脚本将断定没有从特殊配置文件打开窗口,并通过以下命令打开一个窗口:
gnome-terminal --window-with-profile=Hidden
答案2
为了让您能够接受您选择的解决方案作为答案,我重复了上面的评论。虽然这只是一个简单的解决方法,并且无法真正与@JacobVlijm的令人印象深刻的回答!
所以我给你的建议是,只需在系统设置面板中启用不同的工作区即可。当你在一个工作区中打开一个窗口时,它在其他工作区中是不可见的。
但是使用 Unity 时,启动器中的图标无论如何都会突出显示,即使唯一打开的窗口位于另一个工作区中。
在其他桌面环境(我知道 XFCE 和 LXDE)中,情况并非如此。面板/任务栏不会显示非活动工作区的正在运行的程序。
答案3
答案4
有一个内置选项可以执行此操作,但有点问题:
- Ctrl使用+ Alt+打开第一个终端(您想要显示的终端)t
- Ctrl使用+ Alt+打开第二个终端(您想要隐藏的终端)t。
- 使第二个终端成为活动窗口,然后点击Ctrl+ Alt+s并单击其他地方。
要恢复隐藏的终端,请单击启动器中的终端图标。
此方法的问题是,有时由于错误,您需要先关闭所有可见的终端,才能再次显示隐藏的终端。