我通过映射到的键盘快捷键以下拉模式(也称为 Quake 模式)启动 Tilix:
tilix --quake
升级到 Tilix 1.7.7 后,我收到一个常规窗口和一条通知“Wayland 下不支持 Quake 模式,作为正常窗口运行”。
有没有办法在 Wayland 下仍然启动下拉模式?
答案1
是的,您可以通过将快捷方式绑定到以下位置来实现此目的:
env GDK_BACKEND=x11 tilix --quake
参考:
从版本1.7.7:
...另一个主要变化是 Wayland 中对地震模式的支持已被删除。由于 Wayland 在窗口定位方面的局限性,事实证明有太多问题需要支持。想要在 Wayland 中使用 quake 模式的用户可以通过环境变量 GDK_BACKEND=x11 强制使用 tilix 的 X11 后端来实现。
我已经考虑过解决这些问题,坦率地说,我认为如果不编写 Wayland 扩展或其他同样具有异国情调的东西,就不可能在 Wayland 下获得完美的体验
答案2
我想避免在 Wayland 上使用 X11,因此使用 Hyprland 作为我的窗口管理器,我创建了一个小脚本,使用 hyprctl 和工作区 10 模拟 Wayland 上的地震效果,以始终将窗口保留在那里。该解决方案利用 session_name,允许多个 Tilix 窗口。它仅在 zsh 和 Hyprland 上进行了测试,但可以适应 i3wm 或 sway。
它需要使用 jq 来解析 ctl json。
tilix.sh 脚本:
#!/bin/zsh
PROCESS_NAME="tilix"
SESSION_NAME="guake"
TARGET_WORKSPACE="10"
if pgrep -f "$PROCESS_NAME" > /dev/null; then
read ADDR FULLSCREEN <<<$(hyprctl clients -j | jq -r '.[] | select(.class == "tilix" and .title == "Tilix: '"${SESSION_NAME}"'") | "\(.address) \(.fullscreen)"')
CURRENT_WORKSPACE=$(hyprctl activeworkspace -j | jq -r '.name')
if [ -n "$ADDR" ]; then
if [ "$FULLSCREEN" = "true" ]; then
echo "Tilix is fullscreen; moving to workspace $TARGET_WORKSPACE and removing fullscreen"
# If fullscreen, undo fullscreen and move to workspace 0, then back to the original
hyprctl dispatch fullscreen 0 "address:$ADDR"
hyprctl dispatch movetoworkspace "$TARGET_WORKSPACE,address:$ADDR"
hyprctl dispatch workspace "$CURRENT_WORKSPACE"
else
echo "Tilix is not fullscreen; moving to current workspace and setting fullscreen"
# If not fullscreen, bring to current workspace and set to fullscreen
hyprctl dispatch movetoworkspace "$CURRENT_WORKSPACE,address:$ADDR"
hyprctl dispatch fullscreen 1 "address:$ADDR"
fi
else
echo "No Tilix window with title 'Tilix: $SESSION_NAME' found."
echo "Creating Tilix $SESSION_NAME in fullscreen"
tilix --full-screen -s "$SESSION_NAME" -e zsh -c "echo -ne '\033]0;$SESSION_NAME\007'; exec zsh"
fi
fi
设置一个快捷方式,在我的例子中是 MOD + SPACE:
# .config/hypr/hyprland.conf
bind = $mainMod, SPACE, exec, /path/to/script/tilix.sh
效果很好。这是我可以使用 Wayland 做出的最佳解决方案,也许它可以作为其他人使用 X11 后端的替代方案。