12
12
2020
43

一次失败的 KDE 尝试

本文来自依云's Blog,转载请注明。

前些天尝试了一下 KDE 桌面环境,不过实在是没能用下去。

首先要说的是,KDE 桌面确实漂亮,非常养眼。设置项也挺多,可定制性还是挺不错的。只可惜问题同样很多。

首先是显示器缩放的问题。受限于 X11,KDE 只能设置一下全局的缩放比例。所以我们只好缩放显示器显示的画面。不幸的是,一向相当体贴的 KDE 此时却笨笨的,在使用 xrandr 设置好之后需要重启 plasmashell 来使其获取 xrandr 的设置更新

kquitapp5 plasmashell && kstart5 plasmashell

KDE 的设置项很多,分门别类地在「设置」应用程序中集中列出来,然而问题也由此产生:同时只会显示一个「设置」窗口。也就是说,我配置快捷键时,想去窗口管理器那边看一看,调整一点选项,就必须放弃我当前打开的快捷键视图,放弃我键入的搜索词,并且选择「应用」或者「放弃」更改,才能切换到另一个「设置」组件中去。即使从 krunner 里打开某个组件的设置,它也会找到并更新已有的窗口。

我知道 Windows 10 也是这么个「单任务」设置的风格。可 Windows 10 也没有这么多可以设置的地方呀。后来获知有个命令可以打开单独组件的设置窗口。很不方便。它被隐藏起来的原因是这种窗口不能返回到组件列表界面,会让用户困惑。可是,为什么我不能同时打开「设置」的不同组件的多个窗口?单独组件的窗口会让用户困惑,那就不要用单独组件的窗口就好了嘛。

KDE 桌面还有个问题:启动特别慢。登录进入界面要好久,启动一个程序,它的图标也要跳好久窗口才会出现。不知道它在干什么。我甚至怀疑它是为了展示启动动画而故意推迟界面的显示。

KDE 有提供丰富的桌面部件。我往副显示器上放了一些系统状态的监视器——CPU、磁盘、网络啥的。然后问题来了:我凑齐了四个部件刚好形成2x2的网格,可是我要怎么对齐它们呢?并没有对齐的选项,也没有吸附的功能。在我找到它使用的配置文件并手动修改之前,我只能用肉眼瞅。可计算机不就是用来做这种人不擅长而机器擅长的事情的吗?

终端我还是用 GNOME Terminal,因为有些特性(比如超链接)只有它支持。但又出现问题了:它启动之后,pin 它的任务图标,或者通过任务栏图标创建新实例均会失败。把它 pin 到任务栏上,需要从主菜单的右键菜单里操作。即使这样,启动之后终端窗口还是会位于新的图标,旧图标还是不对应任何窗口。后来查了一下,GNOME 的东西都没有主动支持启动通知,导致 KDE 很多时候只能猜测,而这次它猜错了。解决的办法是给 GNOME Terminal 的 .desktop 文件加上正确的 StartupWMClass 项。这其实不是 KDE 的问题,但也没办法。KDE 不想为别人擦屁股,GNOME 不在意自己的软件在别的桌面上的可用性。

不过 Qt 写的 flameshot 我就不知道是怎么回事了。具体情况不记得了,反正就是显示异常。好像是全黑吧。我没来得及 debug 这个。

最后,让我决定放弃 KDE 的点来了:我设置不了我需要的窗口管理快捷键

切换窗口,默认是 Alt-tab 的那个,我好不容易在「快捷键」设置里找到了添加更多快捷键的方式,但我发现除了 Alt-tab,我自定义的都不能连续切换窗口。按一下,切换一下,然后就切不动了,只能放开快捷键。后来了解到这是设置更新方面的问题,kwin_x11 --replace一下就有效了。

切窗口其实问题不大。问题大的是切显示器屏幕。两个功能:一、把焦点切到另一个屏幕;二、把当前窗口移到另一个屏幕上。

前者可以勾选「分隔屏幕焦点」选项,然后调整一下「阻止盗取焦点」的级别。我也不知道这个级别都是啥意思。「无」我能理解,「低」「中」「高」「终极」都是些啥?反正调整一下,确实可以把窗口焦点切换到另一个屏幕去了,除了鼠标不会跟着过去!另外测试过程中,有时候焦点会丢失——我不知道当前什么窗口获得了焦点,也不知道接下来谁会获得焦点。比 Mac OS X 里焦点跑到一个窗口也没有的 Finder 上还要神秘。

不过这个倒是可以自己写个脚本解决:使用 xrandr 获取屏幕的大小和位置,通过 X 的接口获取鼠标的位置并通过 Xtest 扩展来移动它,然后再用某个 X 的接口去设置窗口焦点——完全绕过 KDE 的功能。

然后我被另一个问题难住了——我怎么把窗口移到另一个屏幕上并且把焦点也移过去呢?使用文档匮乏的 kwin script 是可以把窗口移过去,然后我没能找到移动鼠标光标的 API。通过 X 是可以移窗口的同时移鼠标,但是我拿不到带窗口装饰的窗口位置信息。kwin 有一个 getWindowInfo 的 D-Bus 接口,但是它接收的那个 UUID 参数,我没找到获取的方法。

总结一下,KDE 对快捷键的支持并没有想像的那么好,尤其是多显示器的支持。快捷键的设置是通过图形界面来操作的,虽然直观但是对于大量快捷键的管理来说非常困难。而对于大显示器来说,通过快捷键来管理窗口是十分必要的——因为我更难肉眼找到我的鼠标光标去了哪里。

接下来,我打算一边忍受着 Awesome 3.5.9 的旧与 bug,一边尝试将 i3 改造成我需要的样子。

Category: Linux | Tags: KDE X Window 窗口管理器 | Read Count: 105900
lymanrb 说:
Dec 13, 2020 03:41:15 AM

terminal 或许可以试试 termite 和 kitty,gnome terminal 实在是太慢了

palytoxin 说:
Dec 13, 2020 02:20:32 PM

在gnome和kde尝试失败之后。我最近开始折腾sway,几乎兼容i3的配置,因为wayland对多显示器多dpi超出x的友好,在尝试多次迁移失败后,这次已经迁移成功(缺点是放弃guake terminal)。dpi的问题其实cinnamon解决的已经不错了,但是X的问题 多屏多dpi还是很不舒服。

Avatar_small
依云 说:
Dec 13, 2020 03:47:29 PM

sway 支持中键粘贴吗?

Avatar_small
依云 说:
Dec 13, 2020 03:53:20 PM

我没感觉到慢啊。反正套了个 tmux……我用 gnome terminal 主要是为了超链接的支持(虽然我目前用得并不多,最主要的原因是 less 还不支持)。

未知狐 说:
Dec 13, 2020 11:49:48 PM

kde资源消耗太大了,终端我觉得DDE的反而很舒服,试试xface4吧。不完全支持移动设备的主题真菜。

Avatar_small
依云 说:
Dec 14, 2020 12:15:56 AM

资源消耗我感觉还好,除了特效显示需要 OpenGL,虚拟机里跑会很卡。
xfce4 我不打算试了。功能少少的,我不如找个自己喜欢的 WM 改改,拼凑一下。

这个主题出生的时候移动端还不流行嘛,3G 都是新鲜事儿呢。

with 说:
Dec 14, 2020 02:15:06 AM

我就是kde被坑了几次后加入了i3wm

x b y 说:
Dec 14, 2020 12:45:52 PM

win10单窗口配置的风格设计估计是为了多平台硬件的统一简化,毕竟微软当时是想做手机的。最近尝试把个人环境迁移到win平板,开始体验到一些原本在键盘鼠标简单的操作在笔和手指下操作是多麻烦。

Jintao Zhang 说:
Dec 14, 2020 01:26:43 PM

超链接的支持吗? 我用的是 sakura 感觉挺好的(虽然里面也是套 tmux)

Jintao Zhang 说:
Dec 14, 2020 01:28:49 PM

awesome 你不打算先升级试试看吗?

我升到了 4.3 倒也还行

```
awesome -v
awesome v4.3 (Too long)
• Compiled against Lua 5.3.5 (running with Lua 5.3)
• D-Bus support: ✔
• execinfo support: ✔
• xcb-randr version: 1.6
• LGI version: 0.9.2

```

Avatar_small
依云 说:
Dec 14, 2020 04:03:32 PM

升不动了,3k+ 行代码要 port 呢……而且没办法一点点挪。

Avatar_small
依云 说:
Dec 14, 2020 04:05:36 PM

sakura 也不支持超链接呀。我的 tmux 有打补丁,less 我现在才知道,用 -r 选项就不支持特别的支持了,-R 选项的话需要 570 版本。

lucidlynx 说:
Dec 16, 2020 02:06:20 AM

GNOME 的东西都没有主动支持启动通知吗?不应该吧。GNOME 应用应该也是用的标准的 GTK 那套。

GTK Window 创建的时候默认会调用 gdk_notify_startup_complete_with_id(),它会调用 gdk_display_notify_startup_complete()。然后如果当前是 X11 显示,会调用 gdk_x11_display_broadcast_startup_message()。该函数的文档表明用于实现 “Startup notification protocol”

https://developer.gnome.org/gdk3/stable/gdk3-General.html#gdk-notify-startup-complete-with-id
https://developer.gnome.org/gdk3/stable/gdk3-X-Window-System-Interaction.html#gdk-x11-display-broadcast-startup-message

Avatar_small
依云 说:
Dec 16, 2020 10:25:54 AM

对,GTK 默认会有,但是不适合 GNOME 终端这种 client-server 模式的软件啊。

Avatar_small
依云 说:
Dec 16, 2020 10:27:48 AM

GNOME 的软件都是被动地使用 GTK 的机制,然而这套机制在 C/S 模式下有问题。实际创建窗口的进程是通过 D-Bus 拉起的,不是由 launcher 启动的进程直接创建的。

lucidlynx 说:
Dec 16, 2020 11:03:12 AM

这么说好像是会有这个问题。但是 GNOME 上没有问题,那么 GNOME 自己是又造了一套自己的通知协议吗。

hwdef 说:
Dec 18, 2020 02:16:26 PM

可以在设置里调快动画速度。

人云E云 说:
Dec 28, 2020 07:21:59 PM

我本來也想說不考慮升個awesome版本看看麼,然後就看到了這個。。。
我應該是3.6上的車,應該是有七八百行(現在一共1106)的配置,遷移也有過需要改的經歷,但其實需要改的不是非常多(當然我的配置也比較簡單就是了)。
我記得主要需要改的一個是從哪個模塊調用函數(主要就是wibox,spawn啥的),另一個是個別函數的簽名變了。

不過不知道3.5到3.6會需要改什麼……

人云E云 说:
Dec 28, 2020 07:44:20 PM

我感覺各個DE都是給有指點設備的用戶用的,所以鍵盤快捷鍵就是副功能。因而在DE上使用鍵盤快捷鍵完成指點設備沒法完成的功能這件事本身就是違反DE的設計理念的——我記得KDE也沒有一個(使用鼠標時的)功能叫「移動當前窗口到另一個顯示器,同時將鼠標指針移動過去」啊。

說來「移動當前窗口到另一個屏幕且移動鼠標指針到該窗口中」這件事也很奇妙,因爲要重新確定鼠標指針的位置,尤其是它具體應該放在哪——假如原來指針就在這個窗口裏,那還好,直接用就行;但假如原來指針不在窗口裏呢?
我在awesome中的配置有移動窗口的快捷鍵,但我在用它們的時候很少依賴鼠標指針的位置,甚至我在用awesome時就不怎麼管鼠標指針的位置來着。

以前KDE的小部件是可以對齊的,會有網格線,而且有固定的大小步長。現在似乎是沒有了……我也覺得這點很難受。

Avatar_small
依云 说:
Dec 28, 2020 10:19:51 PM

不管把鼠标放哪里都好过不移过去呀。一是需要鼠标时更不容易找到鼠标,二是有些程序会依赖鼠标所在的屏幕。

Avatar_small
依云 说:
Dec 28, 2020 10:21:20 PM

有很多不兼容的小变化。我尝试过两次,都失败了。最要命的是得一次性迁移完成。

Jintao Zhang 说:
Dec 31, 2020 12:33:48 PM

我的还好,也就六百多行,升级倒也不算太麻烦

ppwwyyxx 说:
Dec 31, 2020 07:44:25 PM

我也遇到了这些问题,最后还是屈服于kde好看了. 在屏幕间移动焦点+鼠标,我自己用xlib写了个script: https://gist.github.com/ppwwyyxx/ef2f723b2286c7cb7b18a3e2291bf7b8, 但是没有考虑窗口位置信息,会移动到空白处.
由于启动太慢,我只在很少关机的台式机上用kde..

ppwwyyxx 说:
Dec 31, 2020 07:47:11 PM

移动窗口我使用了https://github.com/ppwwyyxx/dotfiles/blob/master/kwinscripts/contents/code/main.js#L48, 但是没有同时移动鼠标.

ppwwyyxx 说:
Jan 02, 2021 08:08:01 PM

kde对我来说最大的烦恼是,一台显示器上切换Virtual Desktop的时候,另一台显示器的Desktop必须跟着一起变.

Avatar_small
依云 说:
Jan 02, 2021 09:56:17 PM

啊对。我还没怎么用 KDE 所以这一点发现了但还没觉得碍事,把另一个屏幕上的窗口在所有桌面显示就差不多了。

JerryXiao 说:
Jan 08, 2021 02:00:10 PM

Gnome 用户摸摸

青菜芋子 说:
Feb 09, 2021 05:49:30 PM

KDE 适合非常闲,喜欢折腾美化的玩家。

Babylon 说:
Feb 17, 2021 04:11:12 AM

xfce 4.16 已经快变得和 Gnome 一样卡和臃肿不堪了

站元素主机 说:
Feb 19, 2021 11:35:40 AM

再不折腾,你就老了!哈哈

Meng 说:
Feb 21, 2021 05:54:43 PM

这个东西不好折腾,会后悔的。dde之前用过,sway,i3都试过,最后还是感觉awesome效率更好点。

Avatar_small
依云 说:
Feb 21, 2021 07:21:46 PM

几千行 lua 代码,迁不动了 QAQ

anomous 说:
Feb 26, 2021 07:02:05 PM

Alacritty更和我的胃口,速度应该是最快的,更主要的是跨平台,纯文本配置。URL支持的话,我觉得鼠标点还是不如键盘操作快,可以试试这个tmux插件: https://github.com/wfxr/tmux-fzf-url

Avatar_small
依云 说:
Feb 26, 2021 08:26:35 PM

不,我是指超链接( https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda ),不是指识别文本形式的 URL。

alacritty 我也试用过,对我来说没有明显的优势,但是有明显的缺点——不够成熟,比如我之前的配置就用不了了,需要手工迁移到新版本。

palytoxin 说:
Mar 09, 2021 10:38:56 AM

支持的,但是我几个月使用又回来了,好多x应用的鼠标跟随还是有问题。比如vscode和chrome再鼠标拖拽tab的时候,完全不知道拖到哪里去。目前笔记本双屏方案,还是把笔记本自身的分辨率降低用了

XinLake 说:
Mar 27, 2021 12:09:14 PM

安装过 RedHat、Mint、Ubuntu 发行版,感觉 KDE 比 GNOME 漂亮、友好,不过发现 Linux 始终要投入不少精力去配置和维护就脱坑了,拥抱 Windows 和 .NET 了。

SpicyCat 说:
Apr 12, 2021 06:05:58 PM

我也用KDE, 可以设置移动窗口到另一个显示器: Settings -> Shortcuts -> KWin -> Window to next screen
截图: https://i2.paste.pics/093fca2c7ac498da04830117dd0d8dfa.png

ppwwyyxx 说:
Feb 18, 2022 10:21:08 AM

https://github.com/wsdfhjxc/kwin-scripts/tree/master/virtual-desktops-only-on-primary 解决了两台显示器desktop一起变的问题..

Avatar_small
依云 说:
Feb 18, 2022 11:34:45 AM

好~感觉这些写 kwin 脚本的人都好厉害,没文档还能写出有用的工具来。

abola 说:
Mar 01, 2022 04:07:01 PM

我是离不开KDE的KDE Connect,最近还要是iOS端的tf版

abola 说:
Mar 01, 2022 04:07:33 PM

我是离不开KDE的KDE Connect,最近还有iOS端的tf版

Quarkay 说:
May 01, 2022 09:16:23 PM

两块不一样的屏幕,想单独设置一下缩放,KDE 系统设置不支持,也没找到其他方法,看到这句:

<blockquote>受限于 X11,KDE 只能设置一下全局的缩放比例。</blockquote>

原来如此,难怪少有人讨论,解惑了,谢谢!


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

| Theme: Aeros 2.0 by TheBuckmaker.com