hiiro 0.1.134 → 0.1.136
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 +72 -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: 771ab234e04048e9c86898f2d8e2a265e7323d2876e1bdcde7a4c72653b09cae
|
|
4
|
+
data.tar.gz: 7ccfb6999f64c47f10d055aa9a0c0203695638ba0eaf7ae6c42bc2443dc515b6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 996b6711ffc8758971f864628168965fa4895599360660897e85abde7f4ea16e6bd5b752571ca5e62dc43533794fc5aae0e403c4251a5f4032b13ec4927667f4
|
|
7
|
+
data.tar.gz: 17109c5ea9c6fd28188711e2fbaf00ec953be03e42aff5d511e63b99568734f5a40f0bf88b3824941b26c014a4ded5f96a501181da1a997942525780b5b42655
|
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,44 @@ Hiiro.run(*ARGV) do
|
|
|
52
69
|
SETUP
|
|
53
70
|
end
|
|
54
71
|
|
|
72
|
+
add_subcmd(:path) do
|
|
73
|
+
print JUMPLIST_FILE
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
add_subcmd(:ls) do
|
|
77
|
+
entries, pos = prune_dead_entries(read_entries, get_pos)
|
|
78
|
+
|
|
79
|
+
if entries.empty?
|
|
80
|
+
puts "Jumplist is empty."
|
|
81
|
+
next
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
entries.each_with_index do |entry, i|
|
|
85
|
+
parts = entry.split('|')
|
|
86
|
+
pane_id, window_id, session_name, timestamp, pane_cmd = parts
|
|
87
|
+
time_str = Time.at(timestamp.to_i).strftime('%H:%M:%S')
|
|
88
|
+
marker = i == pos ? " <--" : ""
|
|
89
|
+
puts "%3d) %s | %s | %s | %s | %s%s" % [i, session_name, window_id, pane_id, pane_cmd, time_str, marker]
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
add_subcmd(:list) do
|
|
94
|
+
entries, pos = prune_dead_entries(read_entries, get_pos)
|
|
95
|
+
|
|
96
|
+
if entries.empty?
|
|
97
|
+
puts "Jumplist is empty."
|
|
98
|
+
next
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
entries.each_with_index do |entry, i|
|
|
102
|
+
parts = entry.split('|')
|
|
103
|
+
pane_id, window_id, session_name, timestamp, pane_cmd = parts
|
|
104
|
+
time_str = Time.at(timestamp.to_i).strftime('%H:%M:%S')
|
|
105
|
+
marker = i == pos ? " <--" : ""
|
|
106
|
+
puts "%3d) %s | %s | %s | %s | %s%s" % [i, session_name, window_id, pane_id, pane_cmd, time_str, marker]
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
55
110
|
add_subcmd(:record) do
|
|
56
111
|
# Check suppression flag
|
|
57
112
|
suppress = `tmux show-environment TMUX_JUMPLIST_SUPPRESS 2>/dev/null`.strip
|
|
@@ -91,8 +146,7 @@ Hiiro.run(*ARGV) do
|
|
|
91
146
|
end
|
|
92
147
|
|
|
93
148
|
add_subcmd(:back) do
|
|
94
|
-
entries = read_entries
|
|
95
|
-
pos = get_pos
|
|
149
|
+
entries, pos = prune_dead_entries(read_entries, get_pos)
|
|
96
150
|
|
|
97
151
|
if entries.empty?
|
|
98
152
|
system('tmux', 'display-message', 'Jumplist: empty')
|
|
@@ -117,67 +171,38 @@ Hiiro.run(*ARGV) do
|
|
|
117
171
|
end
|
|
118
172
|
end
|
|
119
173
|
|
|
120
|
-
# Find next valid entry going backward
|
|
121
174
|
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
|
|
175
|
+
if new_pos < entries.length
|
|
176
|
+
parts = entries[new_pos].split('|')
|
|
177
|
+
system('tmux', 'set-environment', 'TMUX_JUMPLIST_SUPPRESS', '1')
|
|
178
|
+
system('tmux', 'switch-client', '-t', parts[2])
|
|
179
|
+
system('tmux', 'select-window', '-t', parts[1])
|
|
180
|
+
system('tmux', 'select-pane', '-t', parts[0])
|
|
181
|
+
set_pos(new_pos)
|
|
182
|
+
else
|
|
183
|
+
system('tmux', 'display-message', 'Jumplist: at oldest entry')
|
|
139
184
|
end
|
|
140
|
-
|
|
141
|
-
system('tmux', 'display-message', 'Jumplist: at oldest entry')
|
|
142
185
|
end
|
|
143
186
|
|
|
144
187
|
add_subcmd(:forward) do
|
|
145
|
-
pos = get_pos
|
|
188
|
+
entries, pos = prune_dead_entries(read_entries, get_pos)
|
|
146
189
|
|
|
147
190
|
if pos <= 0
|
|
148
191
|
system('tmux', 'display-message', 'Jumplist: at newest entry')
|
|
149
192
|
next
|
|
150
193
|
end
|
|
151
194
|
|
|
152
|
-
entries = read_entries
|
|
153
|
-
|
|
154
195
|
if entries.empty?
|
|
155
196
|
system('tmux', 'display-message', 'Jumplist: empty')
|
|
156
197
|
next
|
|
157
198
|
end
|
|
158
199
|
|
|
159
|
-
# Find next valid entry going forward (toward index 0)
|
|
160
200
|
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)
|
|
201
|
+
parts = entries[new_pos].split('|')
|
|
202
|
+
system('tmux', 'set-environment', 'TMUX_JUMPLIST_SUPPRESS', '1')
|
|
203
|
+
system('tmux', 'switch-client', '-t', parts[2])
|
|
204
|
+
system('tmux', 'select-window', '-t', parts[1])
|
|
205
|
+
system('tmux', 'select-pane', '-t', parts[0])
|
|
206
|
+
set_pos(new_pos)
|
|
182
207
|
end
|
|
183
208
|
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