tmux-ui 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #!/usr/bin/env bash
  2. #
  3. # 这是一堆乱七八糟的和 tmux UI 元素相关的小功能的集合。
  4. # 通过 ELEMENT 来区分想要的是哪个元素,目前支持的有 LOGO/WIN/PANE 三大类
  5. # LOGO: tmux 右下角的一个 LOGO 显示,计划将版本号也放进去
  6. # WIN: tmux 状态栏中,窗口标题会显示角色 ID
  7. # PANE: 会在 tmux pane 上显示一些有用的信息,目前支持两种,用第二个参数 ARG 来控制
  8. # ARG=GAME-id,表示这是游戏主面板,用来显示一些角色数据,约定存放在 tmux/ID/ 目录下
  9. # ARG=MLOG-id,表示这是游戏日志监视器,会在 pane 边框线上显示日志名称
  10. #
  11. # 需要配合 tmux.conf 使用,将需要的参数特别是 ID 要传过来。
  12. #
  13. ELEMENT=$1
  14. ARG=$2
  15. ARG2=$3
  16. ARG3=$4
  17. ID=
  18. LOGNAME=
  19. if [[ "x$ARG" == xGAME-* ]]; then
  20. ID=${ARG:5}
  21. mkdir -p tmux/$ID
  22. ARG=GAME
  23. fi
  24. if [[ "x$ARG" =~ xMLOG-(.*)-(.*) ]]; then
  25. ID=${BASH_REMATCH[1]}
  26. LOGNAME=${BASH_REMATCH[2]}
  27. mkdir -p tmux/$ID
  28. ARG=MLOG
  29. fi
  30. # 每隔十秒钟轮换显示英文和中文 LOGO
  31. if [ "x$ELEMENT" == "xLOGO" ]; then
  32. echo -e 'PaoTin++\n庖丁加加' | head -$(expr $(date '+%s') '/' 10 '%' 2 '+' 1) | tail -1
  33. exit
  34. fi
  35. if [ "x$ELEMENT" == "xWIN" ]; then
  36. if [ "x$ID" != "x" ]; then
  37. echo $ID
  38. else
  39. echo '#W'
  40. fi
  41. exit
  42. fi
  43. if [ "x$ELEMENT" == "xPANE" ]; then
  44. if [ "x$ARG" == "xMLOG" ]; then
  45. echo -n " 正在查看 #[bg=blue fg=brightyellow bold]$LOGNAME#[default] 日志"
  46. if [ "x$ARG2" == "x1" ]; then
  47. echo -n ",Ctrl+N/Ctrl+P 切换,Ctrl+CC 退出 "
  48. else
  49. echo -n " "
  50. fi
  51. elif [ "x$ARG" == "xGAME" ]; then
  52. echo -n "$(cat tmux/$ID/game-border || echo " 尚未找到 $ID 的游戏数据,请检查机器人版本 ")"
  53. else
  54. WIDTH=${ARG3-0}
  55. if [ $WIDTH -gt 100 ]; then
  56. echo -n ' 终端: #{client_termname} 当前目录: #{pane_current_path} #[align=right] 尺寸: #{pane_width}x#{pane_height} '
  57. elif [ $WIDTH -gt 80 ]; then
  58. echo -n ' #{client_termname} #{pane_current_path} #[align=right] #{pane_width}x#{pane_height} '
  59. elif [ $WIDTH -gt 40 ]; then
  60. echo -n ' #{client_termname} #[align=right] #{pane_width}x#{pane_height} '
  61. elif [ $WIDTH -gt 20 ]; then
  62. echo -n '#[align=right] #{pane_width}x#{pane_height} '
  63. else
  64. echo -n ''
  65. fi
  66. fi
  67. fi