如何阻止人们查看我打开的应用程序?

我不希望别人看到我打开的应用程序。 我希望能够通过快捷键组合立即隐藏窗口,这样我就可以保存我的工作了。 我也想隐藏他们在启动器中的存在。

我试图解决它,但没有找到任何解决方案。

重要编辑

使用命令:

xdotool windowunmap  

 xdotool windowmap  

事实certificate,有一种方法可以暂时完全掩盖应用程序窗口的存在。 即使是wmctrl -l命令也不会再列出窗口了。

我将在下面发布新答案,并将第一个答案作为第二个选项。


新答案:

隐藏窗口及其所属的应用程序

使用下面的脚本,您可以从桌面完全隐藏(取消映射)应用程序窗口。 它们的存在根本不可见,因为它们的启动器图标也不会显示箭头。

如何使用:

  • 该脚本需要wmctrlxdotool来获取窗口属性,它们所属的pid以及管理所选应用程序的窗口:

     sudo apt-get install wmctrl sudo apt-get install xdotool 
  • 将下面的脚本复制到一个空文件中

  • 在脚本的head部分,列出您希望(能够)快速隐藏窗口的应用程序。 使用格式:

     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读取文件并恢复窗口。

    在此处输入图像描述


第一个答案:

(完美的工作,但另一种方法和更多的工作)

隐藏Launcher打开的应用程序?

我怀疑是否可以完全删除Unity和Launcher中应用程序的所有痕迹。 至少不是通过简单的修改,因为Launcher旨在显示GUI应用程序的表示。

但是,如果您的目标是阻止人们查看您当前打开的应用程序, 可以通过简单的修改来完成。

可以轻松完成的两件事的组合

我建议的解决方案存在两个措施:

  1. 对发射器中的应用程序的误导性表示

    我在启动器中更改了Firefox的表示forms:

    <图像1/>“></p>
<p> 您只需将显示的名称和图标更改为您喜欢的任何内容即可。 </p>
</li>
<li>
<p> 即时隐藏已定义应用程序窗口的关键快捷方式。 </p>
<p> 这可以是大量的窗口,它们将在一个动作(键组合)中全部最小化 </p>
</li>
</ol>
<p> 结合起来,这两项措施应该做你想做的事情:阻止人们识别你正在运行的应用程序。 </p>
<h2> 如何设置 </h2>
<h3>  1.对发射器中的应用程序的误导性表示 </h3>
<p>  (我将使用Firefox的例子) </p>
<p>  <em>更改显示的名称:</em> </p>
<ul>
<li>
<p> 应用程序由<code>/usr/share/applications</code>或<code>~/.local/share/applications</code>的<code>.desktop</code>文件表示。 <br /> 我们需要编辑<code>firefox.desktop</code>文件的本地副本,所以先复制它: </p>
<pre> <code>cp /usr/share/applications/firefox.desktop ~/.local/share/applications/firefox.desktop</code> </pre>
</li>
<li>
<p> 在<code>gedit</code>打开文件(在打开的<code>gedit</code>窗口上拖动文件或运行: </p>
<pre> <code>gedit ~/.local/share/applications/firefox.desktop</code> </pre>
</li>
<li>
<p> 现在我们将更改Firefox的名称,因为它出现在启动器中: <br /> 在前两行的正下方,您将看到令人印象深刻的<em>本地化</em>名称列表。 查找与系统语言相对应的语言标记。 我是荷兰人,所以我必须更改该行中的名称: </p>
<pre> <code>Name[nl]=Firefox webbrowser</code> </pre>
<p> 我把它改成: </p>
<pre> <code>Name[nl]=Monkey eats banana</code> </pre>
<p>  <em>更改显示的图标:</em> </p>
</li>
<li>
<p> 虽然<code>.desktop</code>文件仍处于打开状态,但请查找以下行: </p>
<pre> <code>Icon=firefox</code> </pre>
<p> 替换为: </p>
<pre> <code>Icon=/path/to/icon.png</code> </pre>
<p>  (如果用自己的自定义图标替换它,则可能需要使用图标的绝对路径。) </p>
<p> 注销后, <code>Firefox</code>将在Launcher和Dash中显示为“Monkey eats banana”,但您仍会将其视为<code>firefox</code> : </p>
<p><img src=

  2. 2.隐藏已定义应用程序窗口的关键快捷方式组合

    • 该脚本需要wmctrlxdotool来获取窗口属性,它们所属的pid以及管理所选应用程序的窗口:

       sudo apt-get install wmctrl sudo apt-get install xdotool 
    • 将下面的脚本复制到一个空文件中

    • 在脚本的head部分,列出您希望(能够)快速隐藏窗口的应用程序。 使用格式:

       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])