Skip to content

Commit e16df55

Browse files
committed
mega chaos updates
1 parent 4729329 commit e16df55

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+498
-198
lines changed

data/goto.nuon

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
{
2+
kt_name: goto
3+
m_title: '  GOTO '
4+
prefix: 'root:M-y'
5+
items: [
6+
# home
7+
[
8+
[ type key target ];
9+
[ switch-to Enter 'Home' ]
10+
[ switch-to z 'Home:Zsh' ]
11+
[ switch-to n 'Home:Nu' ]
12+
]
13+
14+
# config
15+
{ type: tint color: green }
16+
{ type: powerline title: CONFIG }
17+
[
18+
[ type key target m_title ];
19+
[ switch-to v Neovim Neovim ]
20+
[ switch-to Space Neovim null ]
21+
[ switch-to d Dotfiles Dotfiles ]
22+
[ switch-to t Tmux Tmux ]
23+
[ switch-to h Hammerspoon Hammerspoon ]
24+
]
25+
26+
# monitor
27+
{ type: nl }
28+
{ type: tint color: red }
29+
{ type: powerline title: MONITOR }
30+
{ type: switch-to key: X target: 'Home:Top' m_title: BTop }
31+
{ type: popup key: x cmd: 'htop --user mudox' kt_name: HTop m_title: HTop }
32+
33+
# popup
34+
{ type: nl }
35+
{ type: tint color: yellow }
36+
{ type: powerline title: POPUP }
37+
[
38+
[ type key cmd kt_name m_title ];
39+
[ popup a ap Ap Ap ]
40+
[ popup l "nvim +Luapad '+wincmd o'" LuaPad LuaPad ]
41+
]
42+
43+
# git
44+
{ type: nl }
45+
{ type: tint color: magenta }
46+
{ type: powerline title: GIT }
47+
[
48+
[ type key cmd kt_name m_title ];
49+
[ popup g gitui GitUI GitUI ]
50+
[ popup G lazygit LazyGit LazyGit ]
51+
]
52+
{ type: run key: C-g cmd: '/usr/local/bin/gittower .' my: false kt_desc: 'Launch GitTower' m_title: GitTower }
53+
54+
# submenus
55+
{ type: nl }
56+
{ type: tint color: blue }
57+
{ type: powerline title: MORE }
58+
[
59+
[type key name kt_name m_title ];
60+
[child y try Try Try ]
61+
]
62+
63+
# session navigation
64+
[
65+
[type key cmd kt_desc];
66+
[item '/' 'switch-client -l' 'switch to last session']
67+
[item '[' 'switch-client -p' 'switch to previous session']
68+
[item ']' 'switch-client -n' 'switch to next session']
69+
]
70+
]
71+
}

data/try.nuon

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
kt_name: try
3+
m_title: '  TRY '
4+
prefix: 'goto:y'
5+
items: [
6+
[
7+
[ type key target m_title ];
8+
[ switch-to a Try-JavaScript JavaScript ]
9+
[ switch-to c Try-C C ]
10+
[ switch-to n Try-Nushell Nushell ]
11+
[ switch-to p Try-Python Python ]
12+
[ switch-to r Try-Rust Rust ]
13+
[ switch-to s Try-Swift Swift ]
14+
[ switch-to t Try-TypeScript TypeScript ]
15+
[ switch-to z Try-Zsh Zsh ]
16+
]
17+
]
18+
}

mudox/hook/after-kill-pane.nu

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/usr/bin/env nu
2+
3+
use ../update-pane-border.nu update-border-visibility
4+
update-border-visibility

mudox/hook/after-resize-pane.nu

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#!/usr/bin/env nu
22

33
use ../update-pane-border.nu update-border-visibility
4-
54
update-border-visibility

mudox/hook/after-split-window.nu

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
#!/usr/bin/env nu
22

3-
# update pane border
4-
run-external $'($env.MDX_TMUX_DIR)/mudox/update-pane-border.nu'
5-
6-
# reveal pane border
7-
tmux set-option -w pane-border-status top
3+
use ../update-pane-border.nu update-border-visibility
4+
update-border-visibility

mudox/hook/pane-focus-in.nu

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#!/usr/bin/env nu
22

33
use ../update-pane-border.nu update-border-visibility
4-
54
update-border-visibility

mudox/key-table-goto.nu

Lines changed: 0 additions & 28 deletions
This file was deleted.

mudox/ktm.nu

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/usr/bin/env nu
2+
3+
use lib/key-table.nu
4+
5+
key-table goto
6+
key-table try

mudox/lib/key-table.nu

100644100755
Lines changed: 84 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,106 @@
11
#!/usr/bin/env nu
22

3+
### usage
4+
# begin with `new`
5+
# middle
6+
# - `item`
7+
# - `run`
8+
# - `swithc-to`
9+
# - `popup`
10+
# end with `commit`
11+
12+
### data syntax
13+
#
14+
# shared
15+
# item: key cmd kt_desc m_title
16+
# run: key cmd my kt_desc m_title
17+
# switch-to: key target m_title
18+
# popup: key cmd kt_name m_title
19+
# child: key name kt_name m_title
20+
#
21+
# menu only
22+
# nl:
23+
# tint: color
24+
# powerline: title
25+
326
export def new [name: string prefix: string] {
4-
let switch = [-N $'Key table - ($name)' -n $prefix switch-client -T $name]
5-
let list = [-T $name -N $'List keys' '?' list-keys -T $name -P $prefix]
6-
{ name: $name, prefix: $prefix, cmd: [$switch $list] }
7-
}
27+
let pair = ($prefix | split row ':')
28+
let parent_kt = $pair.0
29+
let key = $pair.1
830

9-
export def item [key: string desc: string ...cmd: string] {
10-
let kt = $in
11-
$kt | update cmd { $in ++ [[-T $kt.name -N $"'($desc)'" $key ...$cmd]] }
12-
}
31+
let switch = [
32+
-N $'Key table - ($name)'
33+
-T $parent_kt $key
34+
switch-client -T $name
35+
]
1336

14-
export def switch-to [key: string target: string] {
15-
item $key $'Open ($target)' run-shell $'($env.MDX_TMUX_DIR)/mudox/switch-to.nu ($target)'
37+
{ name: $name, prefix: $key, cmd: [$switch] }
38+
| item '?' $"list-keys -N -T '($name)'" 'List keys'
39+
| run '-' $"lib/menu.nu '($name)'" --my 'Show menu'
1640
}
1741

18-
export def popup [key: string name: string cmd: string] {
19-
item $key $'Popup ($name)' display-popup '-E' '-w60%' '-h80%' $"'($cmd)'"
42+
export def item [key: string cmd: string desc: string] {
43+
let kt = $in
44+
let call = [-T $kt.name -N $desc $key $cmd]
45+
$kt | update cmd { $in ++ [$call] }
2046
}
2147

22-
export def run [key: string desc: string cmd: string --my] {
48+
export def run [key: string cmd: string --my desc: string] {
2349
let kt = $in
24-
let cmd = if $my {
50+
51+
mut cmd = if $my {
2552
[$env.MDX_TMUX_DIR mudox $cmd] | path join | path expand
2653
} else {
2754
$cmd
2855
}
56+
$cmd = $'run-shell "($cmd)"'
2957

30-
$kt | item $key $desc run-shell $cmd
58+
$kt | item $key $cmd $desc
59+
}
60+
61+
export def switch-to [key: string target: string] {
62+
let kt = $in
63+
let cmd = $"run-shell '($env.MDX_TMUX_DIR)/mudox/switch-to.nu ($target)'"
64+
let desc = $'Switch to ($target)'
65+
$kt | item $key $cmd $desc
66+
}
67+
68+
export def popup [key: string name: string cmd: string] {
69+
let kt = $in
70+
let cmd = $"display-popup -E -w60% -h80% '($cmd)'"
71+
let desc = $'Popup ($name)'
72+
$kt | item $key $cmd $desc
3173
}
3274

75+
export def child [key: string name: string] {
76+
let kt = $in
77+
let switch = [
78+
-N $'Key table - ($name)'
79+
-T $kt.name $key
80+
switch-client -T $name
81+
]
82+
$kt | update cmd { $in ++ [$switch] }
83+
}
84+
3385
export def commit [] {
3486
let kt = $in
3587
$kt.cmd | each { tmux bind-key ...$in } | ignore
3688
}
3789

90+
export def main [name: string] {
91+
use mod.nu load-data
92+
let data = (load-data $name)
93+
94+
let kt = (new $data.kt_name $data.prefix)
95+
$data.items | reduce --fold $kt {|item, kt|
96+
match $item.type {
97+
item => { $kt | item $item.key $item.cmd $item.kt_desc },
98+
run => { $kt | run $item.key $item.cmd --my=$item.my $item.kt_desc },
99+
switch-to => { $kt | switch-to $item.key $item.target },
100+
popup => { $kt | popup $item.key $item.cmd $item.kt_name },
101+
child => { $kt | child $item.key $item.name },
102+
103+
_ => { $kt }
104+
}
105+
} | commit
106+
}

0 commit comments

Comments
 (0)