全局菜单在 KDE Plasma 5.9 中回归

KDE Plasma 5.9.0 已经发布,并提供在一些及时更新的 Linux 发行版中,比如 openSUSE TumbleweedKDE 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 全局菜单三种模式的设置

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

  1. In Application「显示于应用中」:这是默认的模式,也就是经典的样式,菜单栏显示在标题栏下面。
  2. Title Bar Button「标题栏按钮」:该模式会将菜单栏隐藏到标题栏上的一个小按钮里,点击按钮就能打开菜单列表。这样原来显示菜单栏的位置就可以让给我们更关心的程序内容了。

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

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

  3. Application Menu widget「应用程序菜单部件」:该模式允许使用关联的 Plasma Panel「面板」(Application Menu Bar 「应用程序菜单栏」面板),或者添加的桌面部件 Application Menu 「应用程序菜单栏」来提供菜单项。
    • Plasma Panel「面板」:该 Panel 是固定在屏幕上的其提供的菜单项会随着不同的活动应用程序而改变。这个 Panel 「面板」跟我们平常使用的默认的任务栏相似,支持很多设置,比如自动隐藏之类的。当然也可以将它托放到屏幕的左侧或者右侧边上。这种灵活性在带鱼屏的时代真的是很有必要。
      KDE Plasma 5.9 全局菜单:标题栏菜单面板

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

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

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

      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「应用程序菜单部件」

      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 的话,最好还是使用传统的菜单栏吧。)

  1. 某些系统中启用 Title Bar Button「标题栏按钮」模式后,应用程序的菜单栏消失了,但是 Title Bar Button「标题栏按钮」却没有显示出来。
  2. 从 Title Bar Button「标题栏按钮」模式切换回到 In Application「显示于应用中」的时候,即使重新启动应用程序,菜单栏也不再显示了。
  3. 似乎如果选择了重启后登录时自动载入上次关闭时的会话,则那些在该会话中打开的应用程序会被认为是没有经过关闭后重新运行的操作,也就不会显示那个小按钮之类的,但是原来的菜单栏还是会消失。这个可能不是 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 修改标题栏按钮

KDE Plasma 修改标题栏按钮

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

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

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

目前的临时解决办法是,

  1. 确保没有活动的「全局菜单桌面小工具」(在 Widgets 里面);
  2. 确保移除了标题栏按钮(详见上面的「直接编辑标题栏按钮」一节)里面之前添加的那个「菜单栏按钮」(拖放到下面的按钮池就可以了);
  3. 在 Konsole 中使用 findsed 搜索并替换各个应用的配置文件里的相应选项将 MenuBar=Disabled 改为 MenuBar=Enabled
    $ cd ~/.config
    $ find ./ -type f -exec sed -i 's/MenuBar=Disabled/MenuBar=Enabled/g' {} \;

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

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/global-menu-in-kde-plasma-5-9/>。转载请保留此信息及相应链接。

3 条关于 “全局菜单在 KDE Plasma 5.9 中回归” 的评论

  1. 很谢谢,正是毕业写论文的时候,帮我解决了很大的问题,谢谢楼主无私的分享,方便让我加你微信或者啥的吗 ?

    • 不用客气。话说,你毕业论文还用这个 KDE 的全局菜单吗?

      因为我觉得微信太霸道了,不尊重用户的选择,所以我已经不用了。请参考 About 页面的联系方式跟我联系,而且你总能在这里找到我的。

  2. 引用通告: openSUSE Tumbleweed 更新 Linux 内核 4.14.14、Mesa 17.3.3、KDE Frameworks 5.42.0 和 KDE Plasma 5.12 的测试版等 | 水景一页

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)