我不想让别人看到我打开了哪些应用程序。我希望能够使用快捷键组合立即隐藏窗口,以便之后保存我的工作。我还想在启动器中隐藏它们。
我尝试使用 duckduckgo 但没有找到任何解决方案。
答案1
重要编辑
使用以下命令:
xdotool windowunmap <window_id>
和
xdotool windowmap <window_id>
事实证明是一种方式完全掩盖暂时显示应用程序窗口。甚至wmctrl -l
命令也不会再列出窗口。
我将在下面发布新的答案,并将第一个答案保留为第二个选项。
新答案:
隐藏窗口及其所属的应用程序
使用以下脚本,您可以完全隐藏(取消映射)桌面上的应用程序窗口。它们的存在将不可见根本,因为它们的启动器图标也不会显示箭头。
如何使用:
该脚本需要
wmctrl
和xdotool
来获取窗口属性、它们所属的 pid 以及管理所选应用程序的窗口:sudo apt-get install wmctrl sudo apt-get install xdotool
将以下脚本复制到一个空文件中
在脚本的头部,列出您想要(能够)快速隐藏其窗口的应用程序。使用以下格式:
applications = ["firefox", "gedit"]
另存为
hide_windows.py
让脚本从快捷键运行:选择:系统设置 > “键盘” > “快捷键” > “自定义快捷键”。单击“+”并添加命令:
python3 /path/to/hide_windows.py
现在,如果您按下一次组合键,定义的应用程序的窗口将完全隐藏,其启动器图标将不会显示应用程序运行。
- 再次按下,所有窗口将再次出现。
剧本:
#!/usr/bin/env python3
import subprocess
import getpass
import os
#---
applications = ["chrome", "firefox", "gedit"]
#---
windowlist = os.environ["HOME"]+"/"+".windowlist.txt"
user = getpass.getuser()
get = lambda x: subprocess.check_output(["/bin/bash", "-c", x]).decode("utf-8")
wlist = [l for l in get("wmctrl -lp").splitlines()]
procs = sum([[p.split()[0] for p in get("ps -u "+user).splitlines() if app in p] for app in applications], [])
matches = sum([[l.split()[0] for l in wlist if p in l] for p in procs], [])
if len(matches) != 0:
with open(windowlist, "wt") as out:
for match in matches:
out.write(match+"\n")
subprocess.Popen(["/bin/bash", "-c", "xdotool windowunmap "+match])
else:
try:
with open(windowlist) as r:
for l in r.readlines():
subprocess.Popen(["/bin/bash", "-c", "xdotool windowmap "+l])
os.remove(windowlist)
except FileNotFoundError:
pass
怎么运行的
调用时,脚本会列出脚本头部设置的应用程序的所有窗口。随后,它会做两件事:
它将窗口的窗口 ID 写入隐藏文件(以便能够重新映射窗口,因为它们甚至会从输出中消失
wmctrl -l
)它取消映射窗口
当再次调用时,脚本将找不到任何要取消映射的窗口,它将读取带有窗口 ID 的文件并恢复窗口。
第一个答案:
(完美运行,但需要另一种方法并且需要做更多的工作)
隐藏启动器中打开的应用程序?
我怀疑是否有可能完全抹去 Unity 和 Launcher 中应用程序的所有痕迹。至少不能通过简单的修改,因为 Launcher 旨在显示 GUI 应用程序的表示。
如果你的目标是阻止人们看到什么您当前打开的应用程序能可以通过简单的修改来完成。
两件事的结合很容易做到
我建议的解决方案有两种措施:
启动器中应用程序的误导性表示
我在启动器中修改的 Firefox 表示如下:
您可以简单地将显示的名称和图标更改为您喜欢的任何内容。
一个快捷键可立即隐藏定义的应用程序的窗口。
这可以是大量的窗口,它们将在一个操作(组合键)中全部最小化
结合起来,这两项措施应该可以达到你想要的效果:防止人们识别您正在运行的应用程序。
如何设置
1. 启动器中应用程序的误导性呈现
(我将使用 Firefox 来举例)
更改显示名称:
应用程序由或
.desktop
中的文件表示。 我们需要编辑该文件的本地副本,因此首先复制它:/usr/share/applications
~/.local/share/applications
firefox.desktop
cp /usr/share/applications/firefox.desktop ~/.local/share/applications/firefox.desktop
打开文件
gedit
(将文件拖到打开的gedit
窗口中或运行:gedit ~/.local/share/applications/firefox.desktop
现在我们要更改 Firefox 的名称,因为它在启动器中显示:
在前两行的正下方,你会看到一个令人印象深刻的列表本地化名称。查找语言标签,与系统语言相对应。我是荷兰人,所以我必须更改以下行中的名称:Name[nl]=Firefox webbrowser
我将其改为:
Name[nl]=Monkey eats banana
更改出现的图标:
当
.desktop
文件仍然打开时,查找以下行:Icon=firefox
替换为:
Icon=/path/to/icon.png
(如果您用自己的自定义图标替换它,则可能需要使用该图标的绝对路径。)
在您注销/登录后,
Firefox
将在启动器和 Dash 中显示“猴子吃香蕉”,但您仍然可以找到它firefox
:
2. 隐藏指定应用程序窗口的快捷键组合
该脚本需要
wmctrl
和xdotool
来获取窗口属性、它们所属的 pid 以及管理所选应用程序的窗口:sudo apt-get install wmctrl sudo apt-get install xdotool
将以下脚本复制到一个空文件中
在脚本的头部,列出您想要(能够)快速隐藏其窗口的应用程序。使用以下格式:
applications = ["firefox", "gedit"]
保存
hide_windows.py
让脚本从快捷键运行:选择:系统设置 > “键盘” > “快捷键” > “自定义快捷键”。单击“+”并添加命令:
python3 /path/to/hide_windows.py
现在通过运行您的应用程序并按下组合键来测试它。定义的应用程序的窗口将最小化,它们的启动器图标是一个谜。
剧本
#!/usr/bin/env python3 import subprocess import getpass #--- applications = ["firefox", "gedit"] #--- get = lambda x: subprocess.check_output(["/bin/bash", "-c", x]).decode("utf-8") wlist = [l for l in get("wmctrl -lp").splitlines()] user = getpass.getuser() procs = sum([[p.split()[0] for p in get("ps -u "+user).splitlines() if app in p] for app in applications], []) for match in sum([[l.split()[0] for l in wlist if p in l] for p in procs], []): subprocess.Popen(["/bin/bash", "-c", "xdotool windowminimize "+match])