如何遮挡一个虚拟桌面的某个区域?

如何遮挡一个虚拟桌面的某个区域?

我正在寻找一个命令行解决方案,用可配置颜色的矩形覆盖虚拟桌面的可配置部分,以隐藏下面的内容。通过这种方式,人们仍然可以使用部分内容被隐藏的窗口。

屏幕注释工具(如在这个问题) 在这里不起作用,因为覆盖绘画会同时影响所有虚拟桌面,至少在我测试的所有工具中都是如此。

(此应用程序用于覆盖非浏览器应用程序中的令人讨厌的横幅广告。它也可能用于隐藏现场演示中的内容

答案1

您可以使用feh图像查看器在黑色或白色背景上以您定义的大小和位置显示透明图像,并且不带窗口装饰。然后使用命令wmctrl使其停留在所有其他窗口之上,如图所示这个答案

因此,示例命令(此处用于在 1280x800 屏幕上隐藏 Spotify 视觉广告)如下所示:

sh -c "feh --borderless --title hidemyads --geometry 980x95+302+643 \
    --image-bg black /path/to/transparent.png & \
  sleep 0.3 && \
  wmctrl -r hidemyads -b add,above"

注释和说明:

  • wmctrl -lG要找出要使用的几何图形,请将任何窗口定位到您想要的位置并调整其大小,然后从输出中找出其几何图形。
  • wmctrl -r选择标题与提供的字符串匹配的窗口,因此我们通过feh之前设置窗口标题来使该字符串唯一。
  • 我们需要睡一会之后feh,因为似乎有一个短暂的延迟,直到窗口管理器知道有新窗口。通常 0.1 秒就足够了,但根据系统负载等,可能需要更多时间,所以我们将其增加三倍。
  • feh目前还不支持配置除--image-bg black和 之外的图像背景颜色--image-bg white,但如果你真的想要,有补丁可用
  • 要配置颜色,您当然可以使用该颜色的图像。但这种方式不够灵活:feh始终以原始纵横比显示图像,因此您必须根据要使用的图像纵横比调整图像纵横比--geometry
  • 包装sh -c "…"如下这种技术使命令也在 Alt+F2 启动器中执行(否则至少在 LXDE 中只能执行一个命令)。此外,包装将命令与终端分离(这样feh在关闭终端窗口时窗口仍保持打开状态)。

相关内容