在状态栏上显示禁用或启用的 F 键?

在状态栏上显示禁用或启用的 F 键?

如何在状态栏上显示“shift-F12”的状态?当我有嵌套的 byobu 会话时,这很有用。

我设置了此行~/.byobu/.tmux.conf,它仅反映以下状态F12

set -g status-right "#{?client_prefix,#[fg=color33]Prefix Activated...,[#S]}"

更新:

我想设置:如果shift-F12启用,状态显示:F-keys粗体绿色。否则显示:F-keys粗体红色。我可以将内容复制/usr/share/byobu/keybindings/f-keys.tmux*$HOME/.byobu,修改它们并从那里获取。它有效,但我希望有更优雅的解决方案。

答案1

我使用 byobutmux list-keys | grep " S-F12"来显示 shift-F12 键绑定的状态。

开启时:

bind-key -T root S-F12 source-file /usr/share/byobu/keybindings/f-keys.tmux.disable \; display-message "Byobu F-keys: DISABLED"

如果关闭则显示:

bind-key -T root S-F12 source-file /usr/share/byobu/keybindings/f-keys.tmux \; source-file /home/sp/.byobu/keybindings.tmux \; display-message "Byobu F-keys: ENABLED"

按 F9 可以启用自定义脚本。这些脚本进入 ~/.byobu/bin。有关详细信息,请参阅只需 3 个简单步骤即可实现 Byobu 自定义状态通知

我的脚本每2秒更新一次并创建一个键绑定状态,该脚本是:

#!/bin/sh
tmp=$(tmux list-keys | grep " S-F12")

echo $tmp | grep "DISABLED" > /dev/null 2>&1
if [ $? -eq 0 ]; then
        # keybindings currently active, will be deactivated with next shift-F12
        echo "#[fg=white,bold,bg=green]KB:on#[default]"
else
        # keybindings currently inactive, will be activated with next shift-F12
        echo "#[fg=white,bold,bg=red]KB:off#[default]"
fi

我给脚本命名02_keybindings-02,表示每2秒更新一次。

#######

如果不想每两秒运行一次这样的脚本,还有另一种方法。Byobu 将状态值缓存在 中/dev/shm/byobu-USER-RANDOMVALUE/cache.tmux/custom.SCRIPTNAME。将相同的值写入"#[fg=white,bold,bg=green]KB:on#[default]"该文件几乎会立即更新状态行。然后可以将脚本设置为每 60 秒更新一次。这仍然是必要的 - 否则自定义状态将消失。

访问的目录

[ -r "$HOME/.byoburc" ] && . "$HOME/.byoburc"
[ -z "${BYOBU_PREFIX}" ] && export BYOBU_PREFIX="/usr" || export BYOBU_PREFIX
. "${BYOBU_PREFIX}/lib/${PKG}/include/common"

cachepath="$BYOBU_RUN_DIR/cache.tmux/custom."${0##*/}""

要运行更新缓存文件的脚本,可以更新 shift-F12 的键绑定,不仅可以获取 f-keys.tmux……还可以运行该脚本。

相关内容