如何向屏幕捕获应用程序显示不同的桌面图像?

如何向屏幕捕获应用程序显示不同的桌面图像?

我经常使用shutter其他应用程序截屏和录屏,有时我会将桌面图片设置为私密图片,不想让别人看到我的截屏或截图...所以我不得不暂时更改我的桌面图片,这变得相当烦人...所以我想知道是否有办法让截屏应用程序看到的桌面图片与我实际设置的不同?这样我就不必更改桌面图片,而截屏应用程序只会将其视为我指定的另一张图片?shutter如果不是所有截屏应用程序,我至少希望它能实现这一点。

我正在运行带有 GNOME 3.18 的 Ubuntu GNOME 15.10。

答案1

切换壁纸

虽然不是你真正想要的,但据我所知,这是最好的选择:一个快捷键,可以在你的通常壁纸(脚本会找出来)以及预先选择的壁纸,设置在脚本的头部。

我的秘密壁纸:(我不想让别人看到) :)

乌班图

按快捷键,我的“公共”壁纸设置完毕,截图如下:

青蛙

再次按快捷键:

乌班图

为什么这似乎是最好的选择

  • 在您的问题中,您提到自动用另一张壁纸“替换”屏幕截图(或录制)中的壁纸。但是,您提到的所有应用程序都以一个像素层进行录制。除非您手动操作(这是一项艰巨的工作),否则很难将壁纸和前景分开。
  • 在评论中,我们谈到了在屏幕截图后自动设置另一张壁纸,但由于你Shutter在后台持续运行,从面板菜单运行命令时,似乎无法找到触发器。的pid显然Shutter不存在,并且菜单不会在的输出中显示为窗口wmctrl -l
  • 甚至如果我们可以发现,Shutter一旦屏幕截图被截取,该操作就会在我们更改壁纸之前发生。

所以...

下面是使用快捷键切换壁纸的脚本:

#!/usr/bin/env python3
import subprocess
import os

# --- set your replacement- wallpaper below
image = "/path/to/your/image"
# ---

currwall = os.environ["HOME"] + "/.set_wall"
key = [
    "gsettings ",
    "get ", "set ",
    "org.gnome.desktop.background picture-uri",
    ]

def get(command):
    return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").strip()

def run(command):
    subprocess.Popen(["/bin/bash", "-c", command])

if not os.path.exists(currwall):
    # save the (path to the) currently used wallpaper to an invisible file
    cmd = key[0]+key[1]+key[-1]
    open(currwall, "wt").write(get(cmd))
    # set the temporary wallaper
    cmd = key[0]+key[2]+key[-1]+" 'file://"+image+"'"
else:
    # read the file, restore the original wallpaper
    cmd = key[0]+key[2]+key[-1]+" "+open(currwall).read()
    # remove the temporary file
    os.remove(currwall)
run(cmd)

如何使用

  1. 将脚本复制到一个空文件中,另存为toggle_wallpaper.py
  2. 在脚本的头部,设置辅助壁纸,它将取代通常的壁纸。

    # --- set your replacement- wallpaper below
    image = "/path/to/your/image"
    # ---
    
  3. 使用以下命令测试运行脚本:

    python_3 /path/to/toggle_wallpaper.py
    

    (两次设置辅助-并恢复原始壁纸)

  4. 将命令添加到快捷键:选择:System SettingsKeyboardShortcutsCustom Shortcuts。单击+并添加命令:

    python_3 /path/to/toggle_wallpaper.py
    

相关内容