11
15
2021
13

Wayfire 迁移进展

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

这几天又解决了一些问题,记一下。

Wayfire 部分:

  • 部分按键绑定无效的问题,Super+数字键无效是因为这个是 git 版本才有的。PrintScreen 无效是因为需要写成KEY_SYSRQ……
  • 窗口标题的问题。显示中文的 pr 已经提交。也把 scale 插件的问题一起修了。
  • 要不显示标题栏也很好办,首先 preferred_decoration_mode = server 让窗口们都用 wayfire 画的装饰,然后设置 height = 0 这样就看不到标题栏啦(窗口边框还留着;连边框都不想要的话可以不加载这个插件就好了)。
  • lightdm 启动不了 wayfire 的问题,在 ~/.xprofilesleep 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=

Category: Linux | Tags: Wayland wayfire | Read Count: 32114
slbtty 说:
Nov 16, 2021 02:39:43 PM

问一个 missionary 的问题:

Why Wayfire?
Why not Sway?

muwuren 说:
Nov 16, 2021 08:09:36 PM

希望仙子可以出一个wayfire的简易教程,wayfire太好看了,但是资料好少。

Avatar_small
依云 说:
Nov 16, 2021 11:21:03 PM

不选择 sway 的理由和 i3 一样,之前已经说过了。
选择 wayfire 的理由是其模块化,很容易扩展或者替换。

Avatar_small
依云 说:
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需要等很久才能显示出来,而且第一次打开其他软件时,会卡很久

Avatar_small
依云 说:
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.把路径改正确后,就解决了啦

Avatar_small
依云 说:
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 来运行

Avatar_small
依云 说:
Sep 02, 2022 12:47:13 PM

不知道呢。那个环境变量你手动调 systemd 的命令读取并设置一下也行?lightdm 可以用 ~/.xprofile 脚本来配置的。

u-han 说:
Nov 03, 2022 11:01:29 AM

我是通过在wayfire.session的ExecStart前面加上dbus-run-session 解决的

u-han 说:
Nov 03, 2022 11:02:57 AM

具体就是运行dbus-run-session wayfire这样

Avatar_small
依云 说:
Nov 04, 2022 10:43:46 AM

等很久可能是没有向 systemd / dbus 导入 WAYLAND_DISPLAY DISPLAY XAUTHORITY 环境变量造成的。

使用 dbus-run-session 将会话运行于单独的 dbus 中,可能造成另外的问题(尤其是与 systemd 及其启动的服务的交互)。


登录 *


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

Mastodon | Theme: Aeros 2.0 by TheBuckmaker.com