我可以在 Wayland 下以下拉模式启动 Tilix 吗?

我可以在 Wayland 下以下拉模式启动 Tilix 吗?

我通过映射到的键盘快捷键以下拉模式(也称为 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 后端来实现。

并从gnunn1/tilix#1314:

我已经考虑过解决这些问题,坦率地说,我认为如果不编写 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 后端的替代方案。

相关内容