hiiro 0.1.134 → 0.1.135
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/h-jumplist +68 -47
- data/bin/h-notify +9 -6
- data/lib/hiiro/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f028f163e6d99e3596af0a95fd9497be38eeaffd5f6691ace74900c15f345dd0
|
|
4
|
+
data.tar.gz: 48a575c2e4c71223db8c5a2ef07502e3628e75f6ec7661ffb6c809eee8c005f2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 26b910aa8b58fbe32d1dad4a5e7848f2a0ded7f7f816c15d67b23904be635e21f141bcb862573a7be3ba0cf36c402d9f700473a11fd99d88728a7f37a5b85f29
|
|
7
|
+
data.tar.gz: 72ab6bfe0873bd1afbeff94d4c699fa47aa629845343247902746c3e534f45ddfd20007acbf3eef1758924c6feaebfc42134cdc1091ce61d323ccc716fc81f82
|
data/bin/h-jumplist
CHANGED
|
@@ -37,6 +37,23 @@ def tmux_display(fmt)
|
|
|
37
37
|
`tmux display-message -p '#{fmt}'`.strip
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
+
def prune_dead_entries(entries, pos)
|
|
41
|
+
new_entries = []
|
|
42
|
+
new_pos = pos
|
|
43
|
+
entries.each_with_index do |entry, i|
|
|
44
|
+
pane_id = entry.split('|', 2).first
|
|
45
|
+
if pane_exists?(pane_id)
|
|
46
|
+
new_entries << entry
|
|
47
|
+
else
|
|
48
|
+
new_pos -= 1 if i < pos
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
new_pos = new_pos.clamp(0, [new_entries.length - 1, 0].max)
|
|
52
|
+
write_entries(new_entries)
|
|
53
|
+
set_pos(new_pos)
|
|
54
|
+
[new_entries, new_pos]
|
|
55
|
+
end
|
|
56
|
+
|
|
40
57
|
Hiiro.run(*ARGV) do
|
|
41
58
|
add_subcmd(:setup) do
|
|
42
59
|
puts <<~SETUP
|
|
@@ -52,6 +69,40 @@ Hiiro.run(*ARGV) do
|
|
|
52
69
|
SETUP
|
|
53
70
|
end
|
|
54
71
|
|
|
72
|
+
add_subcmd(:ls) do
|
|
73
|
+
entries, pos = prune_dead_entries(read_entries, get_pos)
|
|
74
|
+
|
|
75
|
+
if entries.empty?
|
|
76
|
+
puts "Jumplist is empty."
|
|
77
|
+
next
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
entries.each_with_index do |entry, i|
|
|
81
|
+
parts = entry.split('|')
|
|
82
|
+
pane_id, window_id, session_name, timestamp, pane_cmd = parts
|
|
83
|
+
time_str = Time.at(timestamp.to_i).strftime('%H:%M:%S')
|
|
84
|
+
marker = i == pos ? " <--" : ""
|
|
85
|
+
puts "%3d) %s | %s | %s | %s | %s%s" % [i, session_name, window_id, pane_id, pane_cmd, time_str, marker]
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
add_subcmd(:list) do
|
|
90
|
+
entries, pos = prune_dead_entries(read_entries, get_pos)
|
|
91
|
+
|
|
92
|
+
if entries.empty?
|
|
93
|
+
puts "Jumplist is empty."
|
|
94
|
+
next
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
entries.each_with_index do |entry, i|
|
|
98
|
+
parts = entry.split('|')
|
|
99
|
+
pane_id, window_id, session_name, timestamp, pane_cmd = parts
|
|
100
|
+
time_str = Time.at(timestamp.to_i).strftime('%H:%M:%S')
|
|
101
|
+
marker = i == pos ? " <--" : ""
|
|
102
|
+
puts "%3d) %s | %s | %s | %s | %s%s" % [i, session_name, window_id, pane_id, pane_cmd, time_str, marker]
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
55
106
|
add_subcmd(:record) do
|
|
56
107
|
# Check suppression flag
|
|
57
108
|
suppress = `tmux show-environment TMUX_JUMPLIST_SUPPRESS 2>/dev/null`.strip
|
|
@@ -91,8 +142,7 @@ Hiiro.run(*ARGV) do
|
|
|
91
142
|
end
|
|
92
143
|
|
|
93
144
|
add_subcmd(:back) do
|
|
94
|
-
entries = read_entries
|
|
95
|
-
pos = get_pos
|
|
145
|
+
entries, pos = prune_dead_entries(read_entries, get_pos)
|
|
96
146
|
|
|
97
147
|
if entries.empty?
|
|
98
148
|
system('tmux', 'display-message', 'Jumplist: empty')
|
|
@@ -117,67 +167,38 @@ Hiiro.run(*ARGV) do
|
|
|
117
167
|
end
|
|
118
168
|
end
|
|
119
169
|
|
|
120
|
-
# Find next valid entry going backward
|
|
121
170
|
new_pos = pos + 1
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
system('tmux', 'switch-client', '-t', target_session)
|
|
132
|
-
system('tmux', 'select-window', '-t', target_window)
|
|
133
|
-
system('tmux', 'select-pane', '-t', target_pane)
|
|
134
|
-
set_pos(new_pos)
|
|
135
|
-
next # exit the subcmd block
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
new_pos += 1
|
|
171
|
+
if new_pos < entries.length
|
|
172
|
+
parts = entries[new_pos].split('|')
|
|
173
|
+
system('tmux', 'set-environment', 'TMUX_JUMPLIST_SUPPRESS', '1')
|
|
174
|
+
system('tmux', 'switch-client', '-t', parts[2])
|
|
175
|
+
system('tmux', 'select-window', '-t', parts[1])
|
|
176
|
+
system('tmux', 'select-pane', '-t', parts[0])
|
|
177
|
+
set_pos(new_pos)
|
|
178
|
+
else
|
|
179
|
+
system('tmux', 'display-message', 'Jumplist: at oldest entry')
|
|
139
180
|
end
|
|
140
|
-
|
|
141
|
-
system('tmux', 'display-message', 'Jumplist: at oldest entry')
|
|
142
181
|
end
|
|
143
182
|
|
|
144
183
|
add_subcmd(:forward) do
|
|
145
|
-
pos = get_pos
|
|
184
|
+
entries, pos = prune_dead_entries(read_entries, get_pos)
|
|
146
185
|
|
|
147
186
|
if pos <= 0
|
|
148
187
|
system('tmux', 'display-message', 'Jumplist: at newest entry')
|
|
149
188
|
next
|
|
150
189
|
end
|
|
151
190
|
|
|
152
|
-
entries = read_entries
|
|
153
|
-
|
|
154
191
|
if entries.empty?
|
|
155
192
|
system('tmux', 'display-message', 'Jumplist: empty')
|
|
156
193
|
next
|
|
157
194
|
end
|
|
158
195
|
|
|
159
|
-
# Find next valid entry going forward (toward index 0)
|
|
160
196
|
new_pos = pos - 1
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
if pane_exists?(target_pane)
|
|
169
|
-
system('tmux', 'set-environment', 'TMUX_JUMPLIST_SUPPRESS', '1')
|
|
170
|
-
system('tmux', 'switch-client', '-t', target_session)
|
|
171
|
-
system('tmux', 'select-window', '-t', target_window)
|
|
172
|
-
system('tmux', 'select-pane', '-t', target_pane)
|
|
173
|
-
set_pos(new_pos)
|
|
174
|
-
next # exit the subcmd block
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
new_pos -= 1
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
system('tmux', 'display-message', 'Jumplist: at newest entry')
|
|
181
|
-
set_pos(0)
|
|
197
|
+
parts = entries[new_pos].split('|')
|
|
198
|
+
system('tmux', 'set-environment', 'TMUX_JUMPLIST_SUPPRESS', '1')
|
|
199
|
+
system('tmux', 'switch-client', '-t', parts[2])
|
|
200
|
+
system('tmux', 'select-window', '-t', parts[1])
|
|
201
|
+
system('tmux', 'select-pane', '-t', parts[0])
|
|
202
|
+
set_pos(new_pos)
|
|
182
203
|
end
|
|
183
204
|
end
|
data/bin/h-notify
CHANGED
|
@@ -10,13 +10,16 @@ TYPE_PRESETS = {
|
|
|
10
10
|
'warning' => { prefix: '[WARN]', sound: 'Purr', title: 'Warning' },
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
NOTIFY_DIR = File.join(Dir.home, '.config', 'hiiro', 'notify')
|
|
14
|
+
FileUtils.mkdir_p(NOTIFY_DIR)
|
|
15
|
+
|
|
13
16
|
def session_name
|
|
14
17
|
`tmux display-message -p '\#{session_name}'`.strip
|
|
15
18
|
end
|
|
16
19
|
|
|
17
20
|
def notify_file(session = nil)
|
|
18
21
|
session ||= session_name
|
|
19
|
-
"
|
|
22
|
+
File.join(NOTIFY_DIR, "#{session}.log")
|
|
20
23
|
end
|
|
21
24
|
|
|
22
25
|
def read_notifications(session = nil)
|
|
@@ -40,11 +43,11 @@ def pane_exists?(pane_id)
|
|
|
40
43
|
end
|
|
41
44
|
|
|
42
45
|
Hiiro.run(*ARGV) do
|
|
43
|
-
opts = Hiiro::Options.parse(args) do
|
|
46
|
+
@opts = Hiiro::Options.parse(args) do
|
|
44
47
|
option(:type, short: 't', desc: 'Notification type (success, error, info, warning)', default: 'info')
|
|
45
48
|
end
|
|
46
49
|
|
|
47
|
-
preset = TYPE_PRESETS[opts.type] || TYPE_PRESETS['info']
|
|
50
|
+
@preset = TYPE_PRESETS[@opts.type] || TYPE_PRESETS['info']
|
|
48
51
|
|
|
49
52
|
add_subcmd(:push) do |*push_args|
|
|
50
53
|
message = push_args.join(' ')
|
|
@@ -66,13 +69,13 @@ Hiiro.run(*ARGV) do
|
|
|
66
69
|
write_notifications(entries, session)
|
|
67
70
|
|
|
68
71
|
# Show tmux display-message with type prefix
|
|
69
|
-
system('tmux', 'display-message', "#{preset[:prefix]} #{message}")
|
|
72
|
+
system('tmux', 'display-message', "#{@preset[:prefix]} #{message}")
|
|
70
73
|
|
|
71
74
|
# Also send terminal-notifier
|
|
72
75
|
system('terminal-notifier',
|
|
73
|
-
'-title', preset[:title],
|
|
76
|
+
'-title', @preset[:title],
|
|
74
77
|
'-message', message,
|
|
75
|
-
'-sound', preset[:sound])
|
|
78
|
+
'-sound', @preset[:sound])
|
|
76
79
|
end
|
|
77
80
|
|
|
78
81
|
add_subcmd(:menu) do
|
data/lib/hiiro/version.rb
CHANGED