如何为窗口设置“始终位于顶部”的快捷方式?


27

在12.04(Unity)中,我想为窗口的“ always on top option”分配一个快捷方式。可能是类似Ctrl+ Shift+ Home来打开和Ctrl+ Shift+ End来关闭的东西。在Compiz设置管理器中的某处可以选择执行此操作吗?

这篇(旧)帖子声称

对于compiz,启用Extra WM Actions。检查属性,然后在“键”字段中插入ALT+,A以进行“始终在顶部”操作。

但是我找不到。


1
在这里,有人在不使用ccsm的情况下设法在Ubuntu 12.10中完成了这项工作吗?谢谢
Suhaib

Answers:


32

从9.04版开始,它应该可以在所有Ubuntu OS上运行,而无需安装任何东西,无需修改创建任何快捷方式。

尝试Alt+ SpaceT

  • Alt+ Space 作为第一个快捷方式,显示右键单击鼠标菜单

  • T 选择“始终在最前面”功能。


1
这绝对是页面上的最佳答案。
dotancohen

确认在Unity 14.04上工作。alt +空格键激活下拉菜单的事实尤其有助于不经常使用的功能。
Frank M

这应该是选定的答案。谢谢!
Nam G VU

1
该问题在问题发布两年后发布,但现在代表了最佳答案,因此我正在更改已接受的答案。
伊恩·欣克斯

2
在18.04上无法使用,T不再选择“始终在顶部”功能。
rvbarreto

14

由于尚无人提及,因此我将为Ubuntu 12.04提供一个适用于我的解决方案。

您可以设置常规键盘快捷键,并使用wmctrl切换“始终在顶部”选项。

转到 系统设置>键盘>快捷方式>自定义快捷方式。点击+并为您的快捷方式命名。然后输入以下命令。

wmctrl -r :ACTIVE: -b toggle,above

如果还没有,可以使用以下命令仓库中安装wmctrl

sudo apt-get install wmctrl

您应该拥有与此相似的东西。

屏幕截图显示了自定义键盘快捷键设置屏幕

按申请,你应该很好!

该解决方案来自Ubuntu论坛上的讨论


@Suhaib该部分已经在答案中。:)
Kasisnu

大声笑,对不起。不知道我怎么错过xD
Suhaib 2015年

7

如果未安装,请通过以下方式安装CCSM和其他compiz插件:

须藤apt-get install compizconfig-settings-manager compiz-plugins-extra

请注意。CCSM可以在某些系统上终止Unity3D。

如果尚未安装compiz-plugins-extra,则需要使用Alt+ F2和重新启动Compiz以加载它们(即使它们在CCSM中显示就在重新启动之前就很好)。

compiz-替换

如发现的帖子中所述,您可以在CCSM的“ Windows管理”部分下看到“额外WM操作”。您可以在那里轻松设置所需的操作。


实际上,仅需要重新启动compiz才能使它知道新的插件。之后,您可以随时更改快捷方式(即,无需在每次更改快捷方式后重新启动Compiz)
2013年

感谢您的信息@sup。我只是使用给定的帖子对其进行了解释。其实我自己没有尝试过。
heartsmagic

好吧,我改写了一下,以使它更清晰:-)。
2013年

2

我认为,另一个更好的解决方案是添加Alt+ A作为切换窗口的“ Always on Top”属性的快捷方式。这可以通过gconf-editor完成。只需按照此视频中给出的简单说明进行操作即可。

编辑: 从视频复制

  1. 如果您使用的是12.04 && 12.10,则必须安装gconf-editor

    sudo apt-get install gconf-editor

  2. 输入gconf-editor端子。

  3. 点击应用

  4. 进入超现实世界

  5. window_keybindings

  6. 右键单击右框内,然后单击 new key

  7. string从下拉列表中选择。

  8. 添加单词 toggle_above

  9. 编写所需的任何命令。即:A并按确定

完成:-)


它没有用:-(
Suhaib

是的,它也不适用于12.10。
2013年

它应该是14.04版中的dconf编辑器...但是它也不起作用。
Ed Villegas

1

我尝试使用wmctrl命令切换,但在我的Ubuntu设置上不起作用。切换将打开,但不会关闭。(我认为这可能是因为我使用的gnome桌面环境在wmctrlAFAIK 上略有损坏)。

无论如何,经过大量研究并研究了如何在bash中编写适当的代码,我创建了一个命令,该wmctrl命令使用逻辑层中的命令在当前GNOME桌面上有效地切换“始终位于顶部”状态。我在Ask Unix / Linux上发布了这个答案,但是我想如果有人遇到同样的问题,我也会在这里发布它。

这是命令:

bash -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'

它使用来检查活动的窗口状态属性“ _NET_WM_STATE” xprops,以及是否包含文本“ ABOVE”,这意味着“始终在顶部”选项处于活动状态。然后,它只运行wmctrl带有参数addremove相应参数的命令。


命令分解(每个命令都插入下一个命令中,替换占位符):

  • 获取活动的窗口ID:

    xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}"
    
  • xprop使用ID 获取窗口状态:

    xprop -id $(■) _NET_WM_STATE
    
  • 检查状态是否包含“ ABOVE”,表明该窗口设置为“ always on top”:

    [[ $(■) =~ "ABOVE" ]]
    
  • 如果为true,则返回“删除”,否则返回“添加”:

    ■ && echo "remove" || echo "add"
    
  • wmctrl使用返回值作为参数的运行命令:

    wmctrl -r :ACTIVE: -b $(■),above
    
  • 将整个内容发送到,bash以便您可以使用命令替换${ ... },bash布尔值评估[[ ... ]]和regex匹配运算符=~

    bash -c '■'
    

    特别是最后一步,我花了很长时间才弄清楚。直到我意识到默认情况下,键盘快捷键未在bash中运行,我不知道为什么这些命令在测试时在控制台中起作用,但是当直接作为键盘快捷键运行时却默默地失败了。它使我无数年了!

注意:因为您需要在发送给bash的命令周围加引号,所以在编写命令时我必须小心,不要再超过一层(使用双引号)。引号中字符串的任何进一步嵌套都需要使用许多令人困惑的反斜杠来避免引号。


0

可能为时已晚,但是如果有人再次搜索并来到这里,对于我来说,有一个更简单的解决方案:

在ubuntu和使用GTK的许多其他发行版中(它们大多共享设置面板),您可以转到“设置”->“键盘”>“快捷方式”。在快捷方式的“列表”中,您将找到未分配的条目,以使窗口位于顶部。不确定英语的名称,但法语是“ Activer /Désactiverla mise au premier plan defenêtre”。

设置它就可以了:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.