本文来自依云'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