如何为窗口设置“总在最前”的快捷方式?

如何为窗口设置“总在最前”的快捷方式?

在 12.04 (Unity) 中,我想为窗口的“始终在最前面”选项指定一个快捷方式。可能类似于Ctrl+ Shift+Home表示打开,Ctrl+ Shift+End表示关闭,或其他任何方式。Compiz 设置管理器中是否有选项可以执行此操作?

这(旧)邮政声称

对于 compiz,启用额外的 WM 操作。检查属性,然后在切换 Always-On-Top 操作的关键字段中插入ALT+ 。A

但我没能找到它。

答案1

它应该可以在 9.04 版及以后的每个 Ubuntu 操作系统上运行,无需安装任何东西、修改或创建任何快捷方式。

尝试Alt+ SpaceT

  • Alt+Space 第一个快捷键会弹出鼠标右键菜单

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

答案2

由于还没有人提到这一点,我只会留下一个在 Ubuntu 12.04 上对我有用的解决方案。

您可以设置常规键盘快捷键并使用控制端切换“始终在最前面”选项。

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

wmctrl -r :ACTIVE: -b toggle,above

如果你还没有,你可以安装控制端从 repos 使用

sudo apt-get install wmctrl

您应该看到一些与此类似的东西。

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

点击“应用”,您就可以开始了!

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

答案3

我尝试使用wmctrl命令 toggle,但它在我的 Ubuntu 设置上不起作用。toggle 可以打开,但不能关闭。(我想这可能是因为我使用的是 gnome 桌面环境,据我wmctrl所知,它有点问题)。

无论如何,经过大量研究并研究如何在 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使用参数add或运行命令即可。remove


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

  • 获取活动窗口 ID:

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

     xprop -id $(■) _NET_WM_STATE
    
  • 检查状态是否包含“ABOVE”,表示窗口设置为“始终在顶部”:

     [[ $(■) =~ "ABOVE" ]]
    
  • 如果为真,则返回“remove”,否则返回“add”:

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

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

     bash -c '■'
    

尤其是最后一步,我花了很长时间才弄清楚。直到我意识到默认情况下键盘快捷键不会在 bash 中运行,我才明白为什么我在测试命令时在控制台中运行正常,但直接作为键盘快捷键运行时却默默失败。这让我很困惑!

注意:因为您需要在发送给 bash 的命令周围加上引号,所以我在编写命令时必须小心谨慎,不要超过一层(使用双引号)。如果在引号中进一步嵌套字符串,则需要使用大量令人困惑的反斜杠来转义引号。

进一步详细说明:如何创建键盘快捷键(感谢@rajesh_chaurasiya)

  1. sudo apt-get install wmctrl如果你还没有安装 wmctrl,请使用

  2. 进入系统设置 > 键盘快捷键。点击+按钮添加自定义快捷键。

  3. 选择一个名称,例如“切换始终在顶部”(可以是任何您喜欢的名称)。

  4. 在命令字段中添加此答案顶部的完整命令。

  5. 记录按键绑定以完成快捷方式。

答案4

我认为另一个更好的解决方案是添加Alt+A作为快捷方式来切换窗口的“始终在最前面”属性。这可以通过以下方式完成gconf-编辑器。只需按照这个视频

编辑 : 摘自视频

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

    sudo apt-get install gconf-editor

  2. gconf-editor在终端中输入。

  3. 点击应用程序

  4. 前往 metacity

  5. 窗口键绑定

  6. 在右侧框内单击鼠标右键,然后单击new key

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

  8. 添加单词toggle_above

  9. 写下你想要的任何命令。例如:A,然后按 OK

完毕 :-)

相关内容