From 7afa24fc137884edd77925d10ab928cd1cc3adc0 Mon Sep 17 00:00:00 2001 From: Alexis Hovorka Date: Mon, 1 May 2023 14:11:41 -0600 Subject: [feat] Add reference bar to tmux --- .gitignore | 1 + base/tmux.conf | 1 + base/tmux/hints | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ base/tmux/status | 19 +++++++- 4 files changed, 158 insertions(+), 1 deletion(-) create mode 100644 base/tmux/hints diff --git a/.gitignore b/.gitignore index 81e0b3d..1752e4a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .dot.args +base/tmux/hint diff --git a/base/tmux.conf b/base/tmux.conf index c432390..ef3a2c3 100644 --- a/base/tmux.conf +++ b/base/tmux.conf @@ -90,6 +90,7 @@ bind -r "<" swapw -d -t -1 bind -r ">" swapw -d -t +1 bind T run "bash ~/.tmux/status toggle-task" +bind H run "bash ~/.tmux/status toggle-hint" #bind -T root F12 \ # set prefix None \;\ diff --git a/base/tmux/hints b/base/tmux/hints new file mode 100644 index 0000000..9a83fc4 --- /dev/null +++ b/base/tmux/hints @@ -0,0 +1,138 @@ +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] s list sessions +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] $ rename session +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] D detach other +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] () switch session +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] w list windows +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] Tab recent window +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] ^O rotate panes +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] o recent pane +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] q pane number +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] {} swap pane +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] ! pane->window +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] eE sync input +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] # list paste bufs +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] = choose paste buf +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] - del paste buf +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] layout +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] T show tasks +#[fg=colour19]#[bg=colour19,fg=colour7] tmux #[fg=colour18]#[fg=colour20,bg=colour18] H show hints +#[fg=colour19]#[bg=colour19,fg=colour7] bash #[fg=colour18]#[fg=colour20,bg=colour18] !! last cmd +#[fg=colour19]#[bg=colour19,fg=colour7] bash #[fg=colour18]#[fg=colour20,bg=colour18] !$ last args +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] B gE E W +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] | go to col +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] -+ prev/next line +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ma 'a :marks +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] '' jump back +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] '. to last edit +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^o prev mark +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] gd gD to def +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] () sentence +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] {} paragraph +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] [{ ]} c-block +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] [( ]) p-block +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] vas sentence +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] vap paragraph +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] d3a( d/foo +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] d_ = dd +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] 0d^ unindent +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] c% func call +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] gu_ lowercase ln +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] R replace mode +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] X backspace +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ZZ :x ≈ :wq +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ZQ :q! +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] zi invert folds +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] zr reduce fold +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] zm fold more +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^w^w cycle +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^w_ maximize +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^w= equalize +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^w +-<> resize +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^w HJKL move to edge +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^w rR rotate +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^w x swap panes +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^w T pane->tab +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^w c :close +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^w o :only +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] :set lines= columns= +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^] follow help tag +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] I: ^d ^t indent +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] :retab :ret +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] "ayy "ap :reg +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^r+ paste from sys +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] g; g, :changes +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] g+ g- time travel +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] vim *; :n :bn +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] vim *; :split +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] vim *; :tab all +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] :1,$v/re/p +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] :1,$g/re/m +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] :%%g/foo/s/bar/baz/g +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] :r filename :r!cmd +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] !G shellcmd +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] :%!fold {!}fmt +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] :r!wget :r!lynx :r!ssh +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] :set ff={dos,unix} +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] :w ++ff=unix +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] I: ^w ^u del word/ln +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] I:^o oneshot n-mode +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] I:^r=5+10 +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] I:^r%/ fname, search +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] I: ^x^y ^x^e scroll +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] I: ^p ^n autocomplete +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] :set complete-=i +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] :set complete-=t +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^x^s autocomp fname +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^x^s spellcheck +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^x^k dictionary +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^x^t thesaurus +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] set spelllang=en_US +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ]s [s next/prev spell +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] z= spell suggest +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] zg good->dict +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] zG good for session +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] zug spell undo good +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] zw wrong->dict +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] zW wrong for session +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] zuw spell undo wrong +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] :spellr unmark all +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] g^G word count +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] vim -b *.bin +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ga show hex +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] 123go to byte +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] set display=uhex +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ,H ,N ,qr +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ,ft fold tag +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ,vp select pasted +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] gv select prev area +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] [ ] blank ln +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ]p autoindent paste +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] Q hardwrap +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] V:s/=/=/ dwj. +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k,. ellipsis +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^kDG degrees +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^kSE section +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^kPI paragraph +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k/- dagger +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k/= dbl dagger +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k.M middle dot +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^koo bullet +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k.P dot operator +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k:x umlaut +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k-N en dash +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k-M em dash +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k'6 lsquo +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k'9 rsquo +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k"6 ldquo +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k"9 rdquo +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k1' prime +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k2' dbl prime +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^kOm ohms +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^kTM trademark +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k-! up arrow +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k-v down arrow +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^kOb composition +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k?2 approx +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^k big abrk +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] ^kOK ^kXX +#[fg=colour19]#[bg=colour19,fg=colour7] vim #[fg=colour18]#[fg=colour20,bg=colour18] box-drawing digraphs diff --git a/base/tmux/status b/base/tmux/status index e96d10c..6643d46 100755 --- a/base/tmux/status +++ b/base/tmux/status @@ -6,6 +6,13 @@ if [[ "$1" = "toggle-task" ]]; then else tmux setenv TMUX_SHOW_TASK 1 fi + +elif [[ "$1" = "toggle-hint" ]]; then + if tmux showenv TMUX_SHOW_HINT &>/dev/null; then + tmux setenv -u TMUX_SHOW_HINT + else + tmux setenv TMUX_SHOW_HINT 1 + fi fi STATUS="#[bg=colour$HOST_COLOR]#[fg=black] $SHORT_HOSTNAME" @@ -22,12 +29,22 @@ if tmux showenv TMUX_SHOW_TASK &>/dev/null; then rc.report.x.sort=start-,urgency- x | head -n1 | xargs)" if [[ "$TASKCTX" ]]; then - TASKCOUNT="#[fg=colour19]#[bg=colour19,fg=colour7] $TASKCTX: $TASKCOUNT #[fg=colour18]#[bg=colour18]#[fg=colour20]" + TASKCOUNT="#[fg=colour19]#[bg=colour19,fg=colour7] $TASKCTX: $TASKCOUNT #[fg=colour18]#[fg=colour20,bg=colour18]" else TASKCOUNT="#[fg=colour8]#[fg=colour20] $TASKCOUNT #[fg=colour8]#[fg=colour20]" fi TASKLINE="$TASKCOUNT $TOPTASK. $(task $TASKCFG _get ${TOPTASK}.description) " + +elif tmux showenv TMUX_SHOW_HINT &>/dev/null; then + HINTF="$(dirname "$0")/hint" + HINTS="${HINTF}s" + if [[ "$(find "$HINTF" -mmin +2)" ]]; then + grep -v '^//' "$HINTS"* | shuf | head -n1 >"$HINTF" + fi + + TASKLINE="$(cat "$HINTF")" + else TASKLINE=""; fi STATUS="$TASKLINE#[fg=colour19]#[bg=colour19,fg=colour7] %a %m.%d %R" -- cgit v1.2.3-54-g00ecf