具体来说,每次启动 Steam 游戏时,我都想打开/关闭热点。但我对任何类型的脚本都一无所知。任何学习这类内容的资源都很好。
如果这个问题问得不对,请告诉我,我会删除它。
答案1
如果你只想要脚本,请跳过解释
解释
您必须至少学习一种适当的编程(/脚本)语言,但是:
介绍;dconf 和 gsettings
大多数(如果不是全部)设置,由 Unity Tweak Tool 编辑dconf数据库,其中存储了许多设置。编辑 dconf 数据库最好通过 设定,它实际上是cli
dconf 数据库的前端。
在您的示例中,遗憾的是,设置/切换热点只能通过dconf
直接编辑数据库来完成,因为没有SCHEMA
可用的数据库gsettings
。
获取当前值
hotcorners 插件设置如下:
/org/compiz/profiles/unity/plugins/core/show-desktop-edge
你可以读当前状态通过命令:
dconf read /org/compiz/profiles/unity/plugins/core/show-desktop-edge
在您的情况下,这将产生如下输出(来自您的评论):
'|BottomRight'
设置新值
到禁用hotcorners,您需要运行以下命令:
dconf write /org/compiz/profiles/unity/plugins/core/show-desktop-edge "''"
(重新)使能够hotcorners,与您之前设置的热角:
dconf write /org/compiz/profiles/unity/plugins/core/show-desktop-edge "'|BottomRight'"
切换脚本的剖析
脚本(一般来说)应该做什么:
- 测试当前 A/B 状态
- 如果当前状态是 A -> 设置 B
- 如果当前状态为 B -> 设置 A
剧本
在脚本中,上述步骤在注释中描述:
#!/usr/bin/env python3
import subprocess
key = "/org/compiz/profiles/unity/plugins/core/show-desktop-edge"
val_on = "'|BottomRight'"
def test():
# read the current setting
return subprocess.check_output(["dconf", "read", key]).decode("utf-8").strip() == val_on
currstate = test()
if currstate == True:
# if currently hotcorners are "on", set it to "''"
newval = "''"
else:
# if currently hotcorners are "off", set it to val_on
newval = val_on
subprocess.Popen(["dconf", "write", key, str(newval)])
如何使用
- 将脚本复制到一个空文件中,另存为
toggle_hotcorners.py
从终端测试运行它:
python3 /path/to/toggle_hotcorners.py
如果一切正常,请将其添加到键盘快捷键。选择:系统设置 > “键盘” > “快捷键” > “自定义快捷键”。单击“+”并添加命令:
python3 /path/to/toggle_hotcorners.py
我如何查看 Unity Tweak Tool 正在编辑的内容?
不仅适用于 Unity Tweak Tool,还可以查看系统设置正在编辑的内容,在许多情况下,以下内容可以为您提供有用的信息:
- 打开终端,打开 Unity Tweak Tool
dconf watch /
在终端中运行命令- 在 Unity Tweak Tool 中通过 GUI 更改值
终端中的输出发生变化:
您可以看到如果我在 Unity Tweak Tool 中禁用/启用热点角会发生什么情况。
答案2
对@Jacob的脚本做了一些调整。首先,dconf watch /
在unity-tweak-tool中使用和打开/关闭hotcorners来找出哪些变量(?)被改变了
- 我将窗口绑定到左下角,设置是
/org/compiz/profiles/unity/plugins/expo/expo-edge
- 右下角也有工作区分布,设置位于
/org/compiz/profiles/unity/plugins/scale/initiate-edge
感谢谷歌和为期2天的代码研讨会:
#!/usr/bin/env python3
import subprocess
key = "/org/compiz/profiles/unity/plugins/expo/expo-edge" #<-- this is for "show workspaces"
val_on = "'BottomRight'"
def test():
# read the current setting
# if one corner is on, other is also on and vice versa, no need to check both
return subprocess.check_output(["dconf", "read", key]).decode("utf-8").strip() == val_on
currstate = test()
if currstate == True:
# if currently hotcorners are "on", set it to "''"
newval = "''"
othercorner = "''"
else:
# if currently hotcorners are "off", set it to val_on
newval = val_on
othercorner = "'BottomLeft'"
subprocess.Popen(["dconf", "write", key, str(newval)])
# this is for "windows spread"
subprocess.Popen(["dconf", "write", "/org/compiz/profiles/unity/plugins/scale/initiate-edge", str(othercorner)])
Volia,效果非常好。
非常感谢@Jacob 为我提供信息和基本脚本,因为我不知道 dconf 是做什么的,也不知道如何使用 python。到现在还是不知道。你到底从哪里学到的。
说真的,我在哪里可以学到这些东西?