本文来自依云's Blog,转载请注明。
这几天又解决了一些问题,记一下。
Wayfire 部分:
-
部分按键绑定无效的问题,Super+数字键无效是因为这个是 git 版本才有的。PrintScreen 无效是因为需要写成
KEY_SYSRQ
…… - 窗口标题的问题。显示中文的 pr 已经提交。也把 scale 插件的问题一起修了。
-
要不显示标题栏也很好办,首先
preferred_decoration_mode = server
让窗口们都用 wayfire 画的装饰,然后设置height = 0
这样就看不到标题栏啦(窗口边框还留着;连边框都不想要的话可以不加载这个插件就好了)。 -
lightdm 启动不了 wayfire 的问题,在
~/.xprofile
里sleep 1
就好了。相关 issue:Missing some input devices in wayland session · Issue #63 · canonical/lightdm。 -
嗯,lightdm 是会给 Wayland 会话 source
~/.xprofile
的。所以在里边判断XDG_SESSION_TYPE
环境变量然后做相应的处理就好了。另外 sddm 是会 source~/.profile
的。 - invert 和 zoom 插件只支持一个显示器的问题,没有再次复现。可能是 git 版修了吧。
- 挂起之后恢复,没键盘鼠标的问题大概也好了?今天我只遇到过一次没键盘,重新插了一下……
- resize 调整窗口时保持比例(比如用于 scrcpy)。我已经在自己的 fork 中加入这个功能。
-
锁屏使用 swaylock。不过它只锁屏并不会关显示器,所以我又写了个
xset dpms force off
的等价程序。 -
HiDPI 下 Xwayland 窗口是糊的。通过改变插值算法(默认的
GL_LINEAR
->GL_NEAREST
)来缓解。sway 默认就支持这个。这个 nearest 算法在整数倍放大时,会不那么糊,不过颗粒感会很明显(就是把显示器分辨率给降回去啦)。 - 哦,还有个 git 版本的新问题:slurp 或 swaylock 在运行时,会消耗不少 CPU。我发现是由于 wayfire 一直在发送 configure 事件造成不断地重绘,已经给补上并提交 pr 了。
我的 Wayfire fork 位于 https://github.com/lilydjwg/wayfire/tree/lilydjwg,里边有什么请自行看提交历史。不过要注意的是,这个分支我可能会 push -f
以清理历史。
应用程序部分:
-
flameshot 需要设置
XDG_CURRENT_DESKTOP=sway
才能工作,然而在多显示器的时候只会给用户编辑左上角的部分,还是没法用。于是我用回传统的「选择+截图」组合了,只不过在 Wayland 下是 slurp + grim 这个组合。 - wl-paste 和 xsel 不同步的问题,是由于 wlroots Xwayland 在窗口没有焦点时,被禁止与 Wayland 部分同步剪贴板。
-
我装好 xdg-desktop-portal{,-wlr},设置好
XDG_CURRENT_DESKTOP
环境变量,然后重置了一下 obs-studio 的配置文件之后,它能工作了。不过只能录整个屏幕,不能按窗口录啦(由于更容易意外录到别的内容,反而不那么安全了)。
然后是剩下的问题:
- spicy 无法捕获键盘是因为 wayfire 没有实现那个协议。有空我去 patch 一下好了。
- 火狐还是不能录屏。听说是协议有更新火狐还没跟上?
- wireshark 的菜单会显示在屏幕最右边。
- mako 的通知文字经常是糊的,reload 一下什么的可能会好。也遇到过它不显示,reload 一下又好了的情况。
- GTK 3 程序的右键菜单,上下会多出一部分内边距并被加上的圆角。圆角我还能忍,但多这么一部分不能选中就很难看了,然后火狐的多级菜单还没把这个考虑进去,没对齐各级菜单……
解决这各种问题挺累的,我就不仔细核查和整理了。本文只是个记录,把已经完成的事项从我的 TODO 列表转存到博客而已啦=w=
Nov 16, 2021 02:39:43 PM
问一个 missionary 的问题:
Why Wayfire?
Why not Sway?
Nov 16, 2021 08:09:36 PM
希望仙子可以出一个wayfire的简易教程,wayfire太好看了,但是资料好少。
Nov 16, 2021 11:21:03 PM
不选择 sway 的理由和 i3 一样,之前已经说过了。
选择 wayfire 的理由是其模块化,很容易扩展或者替换。
Nov 16, 2021 11:21:38 PM
呃,wayfire 有教程的呀: https://github.com/WayfireWM/wayfire/wiki/Tutorial
Jul 30, 2022 07:06:57 PM
博主 为啥我使用wayfire桌面时,只要安装了xdg-desktop-portal包,在进入桌面后,waybar需要等很久才能显示出来,而且第一次打开其他软件时,会卡很久
Jul 31, 2022 10:51:53 AM
不知道呀。这种等很久的事我也听别人说过,但我自己没有遇到,也没有研究过原因。
你可以 strace 一下,看看时间花在哪儿了。
Jul 31, 2022 06:45:55 PM
我找到原因了 默认的wayfire配置中,[autostart]下的portal路径是/usr/libexec/xdg-desktop-portal,但是我安装的xdg-desktop-portal-wlr包在arch中是/usr/lib/xdg-desktop-portal-wlr.把路径改正确后,就解决了啦
Aug 01, 2022 09:47:01 AM
啊,原来是这样。我都没配 x-d-p 的启动的,因为 systemd 似乎会按需启动它们。
Sep 01, 2022 12:03:57 PM
仙子 你知道目前哪个登录管理器支持systemd方式启动wayfire不?之所以我想通过systemd启动wayfire,是因为这样可以自动导入配置在.config/environment.d/envvars.conf里的环境变量。目前我没找到合适的登录管理器,所以是从tty界面登录的,在.bash_profile中通过 systemd-run --user --unit wayfire wayfire 来运行
Sep 02, 2022 12:47:13 PM
不知道呢。那个环境变量你手动调 systemd 的命令读取并设置一下也行?lightdm 可以用 ~/.xprofile 脚本来配置的。
Nov 03, 2022 11:01:29 AM
我是通过在wayfire.session的ExecStart前面加上dbus-run-session 解决的
Nov 03, 2022 11:02:57 AM
具体就是运行dbus-run-session wayfire这样
Nov 04, 2022 10:43:46 AM
等很久可能是没有向 systemd / dbus 导入 WAYLAND_DISPLAY DISPLAY XAUTHORITY 环境变量造成的。
使用 dbus-run-session 将会话运行于单独的 dbus 中,可能造成另外的问题(尤其是与 systemd 及其启动的服务的交互)。