在 12.04 (Unity) 中,我想为窗口的“始终在最前面的选项”分配一个快捷方式。大概就像Ctrl+ Shift+Home开启和Ctrl+ Shift+End任何关闭,或。在 Compiz 设置管理器的某处是否可以选择执行此操作?
这个(旧)帖子声称
对于 compiz,启用额外的 WM 操作。检查属性,然后将ALT+插入A到“切换始终在顶部”操作的“关键”字段中。
但我找不到那个。
小智 40
它应该适用于自 9.04 版以来的每个 Ubuntu 操作系统,无需安装任何东西,也无需修改创建任何快捷方式。
试试Alt+ Space, T
Alt+Space 作为第一个快捷方式调出鼠标右键菜单
T 选择“始终在最前面”功能。
Kas*_*snu 18
由于还没有人提到这一点,我将留下一个在 Ubuntu 12.04 上对我有用的解决方案。
您可以设置常规键盘快捷键并使用wmctrl切换“始终在顶部”选项。
转到 系统设置 > 键盘 > 快捷方式 > 自定义快捷方式。点击+并为您的快捷方式命名。然后输入以下命令。
wmctrl -r :ACTIVE: -b toggle,above
Run Code Online (Sandbox Code Playgroud)
如果你还没有它,你可以使用从 repos安装wmctrl
sudo apt-get install wmctrl
Run Code Online (Sandbox Code Playgroud)
你应该有一些与此类似的东西。

点击申请,你应该很高兴去!
如果没有通过以下方式安装 CCSM 和额外的 compiz 插件:
sudo apt-get install compizconfig-settings-manager compiz-plugins-extra
Run Code Online (Sandbox Code Playgroud)
请注意。CCSM 可以杀死某些系统上的 Unity3D。
如果您尚未安装 compiz-plugins-extra,则需要使用Alt+F2和
compiz --replace
Run Code Online (Sandbox Code Playgroud)
您可以在 CCSM 的“Windows 管理”部分下看到额外的 WM 操作,如您发现的帖子中所述。您可以在那里轻松设置所需的操作。
我尝试使用wmctrl命令切换,但它在我的 Ubuntu 设置上不起作用。开关会打开,但不会关闭。(我认为这可能是因为我使用的是 gnome 桌面环境,据我wmctrl所知,该环境略有损坏)。
不管怎样,经过大量研究并弄清楚如何在 bash 中编写正确的代码后,我创建了一个命令,该命令使用wmctrl逻辑层内的命令在当前 GNOME 桌面上有效地切换“始终在最前面”状态。我在 Ask Unix/Linux 上发布了这个答案,但我想我也将其发布在这里,以防有人遇到同样的问题。
这是命令:
\nbash -c 'wmctrl -r :ACTIVE: -b $([[ $(xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \\$0\\\\n" _NET_ACTIVE_WINDOW | awk "{print \\$2}") _NET_WM_STATE) =~ "ABOVE" ]] && echo "remove" || echo "add"),above'\nRun Code Online (Sandbox Code Playgroud)\n它使用 检查活动窗口状态属性“_NET_WM_STATE” xprops,如果它包含文本“ABOVE”,则意味着“始终位于顶部”选项处于活动状态。然后它只运行wmctrl带有参数add或remove适当的命令。
命令细分(每个命令插入下一个命令,替换\xe2\x96\xa0占位符):
获取活动窗口 ID:
\n xprop -root -f _NET_ACTIVE_WINDOW 0x " \\$0\\\\n" _NET_ACTIVE_WINDOW | awk "{print \\$2}"\nRun Code Online (Sandbox Code Playgroud)\nxprop使用 id获取窗口状态:
xprop -id $(\xe2\x96\xa0) _NET_WM_STATE\nRun Code Online (Sandbox Code Playgroud)\n检查state是否包含“ABOVE”,表明窗口设置为“always on top”:
\n [[ $(\xe2\x96\xa0) =~ "ABOVE" ]]\nRun Code Online (Sandbox Code Playgroud)\n如果为 true,则返回“remove”,否则返回“add”:
\n \xe2\x96\xa0 && echo "remove" || echo "add"\nRun Code Online (Sandbox Code Playgroud)\nwmctrl使用返回值作为参数运行命令:
wmctrl -r :ACTIVE: -b $(\xe2\x96\xa0),above\nRun Code Online (Sandbox Code Playgroud)\n将整个内容发送到,bash以便您可以使用命令替换${ ... }、bash 布尔求值[[ ... ]]和正则表达式匹配运算符=~:
bash -c '\xe2\x96\xa0'\nRun Code Online (Sandbox Code Playgroud)\n特别是最后一步花了我很长时间才弄清楚。直到我意识到键盘快捷键默认情况下不在 bash 中运行,我不知道为什么这些命令在我测试它们时在控制台中工作,但在直接作为键盘快捷键运行时却默默地失败了。它让我在墙上呆了很长时间!
\n注意:因为您需要在发送到 bash 的命令周围加上引号,所以在编写命令时我必须小心,我从来没有深入过一层(使用双引号)。在引号中进一步嵌套字符串将需要大量令人困惑的反斜杠来转义引号。
\n更详细的说明:如何创建键盘快捷键(感谢@rajesh_chaurasiya)
\nsudo apt-get install wmctrl如果尚未安装 wmctrl,请使用
转到系统设置 > 键盘快捷键。单击该+按钮添加自定义快捷方式。
选择一个名称,例如“切换始终位于顶部”(可以是您喜欢的任何名称)。
\n在命令字段中添加此答案顶部的完整命令。
\n记录按键绑定以完成快捷方式。
\n| 归档时间: |
|
| 查看次数: |
18987 次 |
| 最近记录: |