在Arch Linux Hyprland环境中,从Waybar启动的Alacritty终端内再启动Alacritty终端的方法咨询
在Arch Linux Hyprland环境中,从Waybar启动的Alacritty终端内再启动Alacritty终端的方法咨询
嘿,看你的配置和脚本,应该是想通过Waybar触发Alacritty执行集群连接脚本,然后在用户确认后再开一个新的Alacritty来跑k9s对吧?我之前在Hyprland里也遇到过类似的终端嵌套启动的小问题,给你几个实用的解决思路:
首先先理清楚你现有的配置情况:
- Waybar的自定义模块配置(
~/.config/waybar/modules.json):"custom/clusterteleport": { "format": " Cluster Teleport", "escape": true, "on-click": "$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e ~/.config/ml4w/scripts/cluster-teleport.sh" } - 你的终端启动脚本(
~/.config/ml4w/settings/terminal.sh):alacritty - 集群脚本的核心逻辑是完成tsh代理后,用gum询问是否启动k9s
接下来针对“从已启动的Alacritty里再开新Alacritty”这个需求,给你几个方案:
方案一:直接启动带k9s的新Alacritty
把cluster-teleport.sh里的判断部分改成这样:
if gum confirm "DO YOU WANT TO START K9S?" ;then alacritty -e bash -c "export KUBECONFIG=/home/user/.tsh/keys/cluster/user-<完整的用户名部分> && k9s" fi
这样会直接唤起一个新的Alacritty终端,自动加载指定的KUBECONFIG并启动k9s,逻辑简单直接,大多数情况下都能正常工作。
方案二:给新终端指定专属类名(方便Hyprland窗口规则)
如果你希望新启动的k9s终端有独立的窗口规则(比如固定大小、浮动显示),可以给Alacritty加--class参数:
if gum confirm "DO YOU WANT TO START K9S?" ;then alacritty --class k9s-floating -e bash -c "export KUBECONFIG=/home/user/.tsh/keys/cluster/user-<完整的用户名部分> && k9s" fi
之后你就可以在Hyprland的配置文件里给k9s-floating这个类名的窗口加规则,比如:
windowrule=float,class:k9s-floating windowrule=size 1200 800,class:k9s-floating
方案三:解决环境变量缺失导致的启动失败
如果上面的方法没反应,大概率是终端里的Wayland环境变量没正确传递,你可以显式指定WAYLAND_DISPLAY来启动:
if gum confirm "DO YOU WANT TO START K9S?" ;then WAYLAND_DISPLAY=$WAYLAND_DISPLAY alacritty -e bash -c "export KUBECONFIG=/home/user/.tsh/keys/cluster/user-<完整的用户名部分> && k9s" fi
不过这个情况比较少见,一般终端继承的环境变量已经包含这个参数,但如果前面的方法都不行,可以试试这个。
最后提醒下,记得把脚本里的KUBECONFIG路径补全,确保k9s能正确找到你的集群配置文件哦。
备注:内容来源于stack exchange,提问作者Dyin
相关产品推荐
相关产品推荐

