KDE Plasma 5.9.0 已经发布,并提供在一些及时更新的 Linux 发行版中,比如 openSUSE Tumbleweed 和 KDE neon。随着 Plasma 5.9 的发布,一项非常令人期待的功能也回归了。那就是 Global Menu 「全局菜单」。

据说这个全局菜单本来在 KDE 4 中是有的,叫做 AppMenu。但是在 Plasma 5 中就不行了,因为 AppMenu 需要工作在 dbusmenu 上,而 dbusmenu 被 Canonical 废弃了。现在 Plasma 5.9 中终于重现了这个功能,当然是基于 Qt5 了。

「全局菜单」选项设置

友情提示:最近(2018.05.06)的更新中似乎下面位置处的「全局菜单」选项设置消失了。有说是改成自动的了。具体的「自动」的方式似乎是:

如果直接编辑标题栏按钮(详见下面的「直接编辑标题栏按钮」一节),添加了那个「菜单栏按钮」,就会启用 Title Bar Button「标题栏按钮」模式;

如果添加了 Application Menu widget「应用程序菜单小工具」(详见紧接着这里的下面的三种模式的说明的第 3 条),则自动启用该模式(全局菜单,类似苹果系统);

如果以上三者都没有,就是默认的菜单栏模式(但是这个似乎有点问题,见下面的「C. 恢复 KDE Plasma 5 桌面窗口的菜单栏」)。

「全局菜单」的设置位于 System Settings 「系统设置」中。打开 Application Style 「应用程序风格」,在 Widget Style 「小工具样式」那一项(打开默认第一项)中有个标签页 Fine Tuning 「微调」。在此标签页中有个 Menubar 「菜单栏」栏目提供了 Menubar style 「菜单栏样式」选项。该选项提供了三种模式,

KDE Plasma 5.9 全局菜单三种模式的设置

In Application「显示于应用中」:这是默认的模式,也就是经典的样式,菜单栏显示在标题栏下面。

Title Bar Button「标题栏按钮」:该模式会将菜单栏隐藏到标题栏上的一个小按钮里,点击按钮就能打开菜单列表。这样原来显示菜单栏的位置就可以让给我们更关心的程序内容了。

KDE Plasma 5.9 全局菜单:标题栏按钮模式

Application Menu widget「应用程序菜单部件」:该模式允许使用关联的 Plasma Panel「面板」(Application Menu Bar 「应用程序菜单栏」面板),或者添加的桌面部件 Application Menu 「应用程序菜单栏」来提供菜单项。

Plasma Panel「面板」:该 Panel 是固定在屏幕上的其提供的菜单项会随着不同的活动应用程序而改变。这个 Panel 「面板」跟我们平常使用的默认的任务栏相似,支持很多设置,比如自动隐藏之类的。当然也可以将它托放到屏幕的左侧或者右侧边上。这种灵活性在带鱼屏的时代真的是很有必要。

KDE Plasma 5.9 全局菜单:标题栏菜单面板在不同的活动程序下的对比

要在 Plasma 桌面上添加一个 Application Menu,直接在桌面空白处右键单击并 Unlock Widgets「解锁部件」(如果本来是锁定状态的话),然后再次右键单击桌面选择 Add Panel 「添加面板」 -> Application Menu Bar 「应用程序菜单栏」即可。添加完成后还可以进一步配置(位置、宽度、自动隐藏等)。

KDE Plasma 5.9 全局菜单:添加「标题栏菜单面板」

Application Menu 「应用程序菜单栏」部件:不同于 Panel,这是个 Widget「部件」。要添加 Application Menu 「应用程序菜单栏」部件,还是直接在桌面空白处右键单击并 Unlock Widgets「解锁部件」(如果本来是锁定状态的话),然后再次右键单击桌面选择 Add Widget 「添加部件」 -> Application Menu 「应用程序菜单栏」即可。注意,有两个 Application Menu,一个是启动器(launcher,相当于开始按钮菜单),另一个才是这个应用程序菜单栏目前新的这个还没有中文名。

KDE Plasma 5.9 全局菜单:Application Menu widget「应用程序菜单部件」

要使更改生效,需要关闭后重新运行应用程序。当然最简单的方法就是直接注销登录然后再登入就可以了。

也许 Menubar 最方便的用法就是选择它的「Title bar button」(标题栏按钮)模式,这样就可以将菜单栏简化为标题栏左端的一个小按钮,节省了一个菜单栏高度的屏幕空间呢。反正菜单栏也不是很常用(哈,这是对楼主而言 ;-))。当然,选择 Panel 模式并设置为自动隐藏也有相同的效果。可是菜单栏脱离程序独立存在似乎比较容易搞混。

已知问题

注:这些问题似乎都已经修复了。今天在 KDE Plasma: 5.11.2、Qt: 5.9.2、KDE Frameworks: 5.39.0 中又试了试,使用起来很顺畅,没发现问题。(但是如果使用 LibreOffice 的话,最好还是使用传统的菜单栏吧。)

某些系统中启用 Title Bar Button「标题栏按钮」模式后,应用程序的菜单栏消失了,但是 Title Bar Button「标题栏按钮」却没有显示出来。

从 Title Bar Button「标题栏按钮」模式切换回到 In Application「显示于应用中」的时候,即使重新启动应用程序,菜单栏也不再显示了。

似乎如果选择了重启后登录时自动载入上次关闭时的会话,则那些在该会话中打开的应用程序会被认为是没有经过关闭后重新运行的操作,也就不会显示那个小按钮之类的,但是原来的菜单栏还是会消失。这个可能不是 bug。

因为使用非 KDE/Qt 应用的话会出现「标题栏按钮」不显示(因为不支持),但是菜单栏也不显示(因为系统认为有「标题栏按钮」了)的情况,所以还是使用传统的菜单栏吧。在切换回到菜单栏模式之后,绝大多数应用的菜单栏在重启/重新登录之后都能回归,但是 Kontact 的几个组件却不行。需要手动编辑其配置文件 /home/{username}/.config/kontactrc,将其中所有的 MenuBar=Disabled 都删除并保存该文件,然后重启 Kontact 就好了。

可以尝试的解决方法

A. 重置 kwin 配置

博主碰到了问题 1,尝试了好久之后终于解决,但是不知道是不是对别的系统也有效。我的解决方法是,(清理相关系统缓存 $HOME/.cache,可选),重置 kwin_x11 的设置,然后重启系统。这个重置的主要是 System Settings 「系统设置」中的 Desktop Behaviour 「桌面行为」和 Application Style 「应用程序风格」这两项中的设置。

重置 kwin_x11 的设置可以通过命令行来做,

$ mv ~/.config/kwinrc ~/.config/kwinrc-old && kwin_x11 --replace

我不太确定清理相关系统缓存对解决这个问题是否有帮助。

B. 直接编辑标题栏按钮

如果开启了 Title Bar Button「标题栏按钮」模式却没有按钮图标显示出来,尝试了 A 的方法也不行的话,还可以尝试直接编辑标题栏按钮。

KDE Plasma 修改标题栏按钮

在 System Settings 「系统设置」中的 Application Style 「应用程序风格」中有个叫做 Windows Decorations 「窗口装饰」的设置分类,里面有个 Buttons 「按钮」标签,可以编辑标题栏按钮。直接将按钮池里面那个「应用程序菜单」按钮拖放到上面的「标题栏」里就可以了。

C. 恢复 KDE Plasma 5 桌面窗口的菜单栏

虽然「标题栏按钮」模式最得我心,但是这个模式还是有些小问题。经常会在菜单展开后还没来得及点击需要的选项,菜单就又缩回去了。这是很烦人的问题。所以博主想切换到原来的「菜单栏」模式。可是发现原来的那个选项设置已经消失了(见本文最上头的「友情提示」)。而这个似乎是一个 bug。

目前的临时解决办法是,

确保没有活动的「全局菜单桌面小工具」(在 Widgets 里面);

确保移除了标题栏按钮(详见上面的「直接编辑标题栏按钮」一节)里面之前添加的那个「菜单栏按钮」(拖放到下面的按钮池就可以了);

在 Konsole 中使用 find 和 sed 搜索并替换各个应用的配置文件里的相应选项将 MenuBar=Disabled 改为 MenuBar=Enabled:

$ cd ~/.config

$ find ./ -type f -exec sed -i 's/MenuBar=Disabled/MenuBar=Enabled/g' {} \;

这也是没有办法的办法。看来还需要等待 KDE 慢慢修正。©

linux全局菜单程序,全局菜单在 KDE Plasma 5.9 中回归相关推荐

  1. linux图形化界面怎么锁屏,KDE Plasma 5.13桌面获得全新功能,彻底改造锁屏和登录屏幕...

    KDE开发人员Nathaniel Graham报道了将于今年夏天发布的KDE Plasma 5.13桌面环境最大的变化之一,即锁屏和登录屏幕的改造. 默认情况下,即将推出的KDE Plasma 5.1 ...

  2. Arch KDE Plasma 显示和字体调整

    1.下载字体: sudo pacman -S xx # 安装字体 sudo fc-cache -fv # 刷新缓存 # 字体文件目录:/usr/share/fonts adobe-source-san ...

  3. 程序全局热键_如何在Linux下将全局热键绑定到WINE程序

    程序全局热键 Have you ever installed a Windows program in Linux under WINE, only to discover that it doesn ...

  4. linux下qt响应全局热键,Qt全局热键(windows篇)(使用RegisterHotKey和句柄进行注册)...

    Qt对于系统底层,一直没有很好的支持,例如串口并口通信,还有我们经常都会用到的全局热键,等等.既然Qt可能出于某种原因,不对这些进行支持,我们就只能自己写代码,调用系统相关的API了. 注意,这个是W ...

  5. web应用程序安全性测试_Web应用程序导航菜单的可访问性

    web应用程序安全性测试 A few years ago when I started my journey in the field of frontend engineering at that ...

  6. 小程序全局状态管理,在页面中获取globalData和使用globalSetData

    GitHub: https://github.com/WozHuang/mp-extend 主要目标 微信小程序官方没有提供类似vuex.redux全局状态管理的解决方案,但是在一个完整的项目中各组件 ...

  7. 热键枚举Winform程序全局热键与局部热键(键盘快捷键的捕获)

    最近研究热键枚举,稍微总结一下,以后继续补充: Winform程序全局热键 Winform程序全局热键一般采取的是,调用windows api的情势,主要是通过面下的四个函数 /// <summ ...

  8. 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜单 快捷方式...

    {=================================================================     功    能:             创建 桌面.发送到 ...

  9. TC字符界面-菜单程序【原创】

    TC字符界面-菜单程序[原创] 2008/03/06 22:58 /*本程序代码属本人原创,未经允许不得转载,谢谢合作 作者:HungryAnt 发布时间:2008-3-6 */ /*快捷键功能没有提 ...

最新文章

  1. 开发者在行动!中国防疫开源项目登上GitHub TOP榜
  2. python小白逆袭大神课程心得_Python小白逆袭大神学习心得
  3. 从C语言的角度重构数据结构系列(四)-静态链表动态链表
  4. Redis AOF 全持久化
  5. 焊接符号标注图解示例_【干货】焊接图纸符号汇总 ,学习收藏!!
  6. Kotlin之?和!!最简单的理解
  7. 1090 Highest Price in Supply Chain (25)
  8. python rowcount_PyQt(Python+Qt)学习随笔:QTableWidget的currentItem、rowCount、columnCount等部件状态属性访问方法...
  9. 转:10分钟掌握XML、JSON及其解析
  10. 【CCCC】L2-019 悄悄关注 (25分),,模拟水题,STL大法好
  11. Android的JNI【实战教程】1⃣️--java和c/c++的那些事
  12. Java实现Unicode和中文相互转换
  13. 一些游戏用到的渲染技术
  14. 一个毕业生的年终总结
  15. python实现数据结构--线性表
  16. Knowledge-aware Graph Neural Networks with Label Smoothness Regularization for Recommender Systems
  17. 实现Mac窗口最小化动画效果
  18. Java-用星号打印菱形
  19. BitComet Stable (build 1.66.4.13) 比特彗星-使用教程
  20. 如何用代码设置滚动条的位置?

热门文章

  1. 除了 P 站,程序员在摸鱼时还喜欢上这些网站...
  2. CODING 现已支持墨刀原型引入
  3. iconv 判断字符编码_iconv 字符集转换报错
  4. ios 安全区域问题
  5. 如何在linux系统安装igh,Linux下IGH Ethercat Master安装
  6. PowerMIL二次开发外挂制作视频教程-易语言编程15.7小时
  7. 计算机切换用户屏幕闪,怎么改另一个用户的桌面
  8. JavaScript 动画效果的实现(附带示例)
  9. Java编写歌曲管理系统 用Arraylist完成 添加歌曲、置顶歌曲、前移歌曲。
  10. DateTimeFormatter 日期的格式化与解析