forked from kurokirasama/nushell_scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathalias_defs.nu
More file actions
246 lines (211 loc) · 7.27 KB
/
alias_defs.nu
File metadata and controls
246 lines (211 loc) · 7.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
#rm last
export def rml [] {
ls | sort-by modified | last | rm-pipe
}
#tokei wrapper
export def tokei [] {
^tokei | grep -v '=' | from tsv
}
#keybindings
export def get-keybindings [] {
$env.config.keybindings
}
#go to nu config dir
export def --env goto-nuconfigdir [] {
$nu.config-path | goto
}
#cores temp
export def coretemp [] {
sensors
| grep Core
| detect columns --no-headers
| reject column0 column3
| rename core temp
}
#battery stats
export def batstat [] {
upower -i /org/freedesktop/UPower/devices/battery_BAT0
| lines
| find state & time & percentage
| str trim
| split column ":"
| transpose -r -d
| str trim
}
#listen ports
export def listen-ports [] {
sudo netstat -tunlp | detect columns
}
#ram info
export def ram [] {
free -h
| str replace ":" "" -a
| from ssv
| rename type total used free
| select type used free total
}
#yewtube
export def ytcli [] {
yt set show_video True, set fullscreen False, set search_music False, set player mpv, set notifier notify-send, set order date, set user_order date, set playerargs default, set video_format webm, set ddir /home/kira/Yandex.Disk/mps, userpl kurokirasama
}
#adbtasker
export def adbtasker [] {
adb -s ojprnfson7izpjkv tcpip 5555
# adb shell pm grant com.fb.fluid android.permission.WRITE_SECURE_SETTINGS
}
#open gmail client (cmdg)
export def --env gmail [] {
cd $env.MY_ENV_VARS.download_dir
cmdg -shell "/home/kira/.cargo/bin/nu"
}
#wrapper for mermaid diagrams
#
#Usage:
# m -i file.mmd --other_mmcd_options -o pdf/png/svg
export def --wrapped m [
...rest #arguments for mmcd
--output_format(-o):string = "pdf" #png, svg or pdf
] {
let output = ($rest | str join "::" | split row '-i::' | get 1 | split row '::' | first | path parse | get stem) + "." + $output_format
let pdfit = if $output_format == "pdf" {"--pdfFit"} else {[]}
let rest = $rest ++ [$pdfit]
mmdc -p $env.MY_ENV_VARS.mermaid_puppetter_config ...$rest -o $output -b transparent
}
#wrapper for timg
export def timg [
file?
] {
let file = get-input $in $file
let type = $file | typeof
match $type {
"table" | "list" => {
$file | each {|f| $f | timg}
},
_ => {
let file = (
match $type {
"record" => {$file | get name | ansi strip},
"string" => {$file | ansi strip}
}
)
^timg $file
}
}
}
#download subtitles via subliminal
export def --wrapped subtitle-downloader [
file_pattern:glob
...rest
--language(-l):string = "es"
] {
subliminal download -l $language -s $file_pattern ...$rest
}
#terminal command screenshot
@example "saves the output of ls into output.svg" { ls | termshot }
export def termshot [
output_file:string = "output"
] {
termframe -o $"($output_file).svg" --theme dark-pastel --width (term size).columns --height (term size).rows --font-family "Monocraft Nerd Font" --bold-is-bright true --window-style compact
}
#kill mcp node servers running
export def killnode [] {
psn node | find mcp & exte & gemini & skip | find -v vivaldi | killn
}
#paste text from clipboard
export def paste [] {
if $env.XDG_CURRENT_DESKTOP == "gnome" {
xsel --output --clipboard
} else if $env.XDG_CURRENT_DESKTOP == "Hyprland" {
wl-paste
}
}
#netspeed graph
export def netspeed [] {
let host = sys host | get hostname
let device = if ($host like $env.MY_ENV_VARS.hosts.2) or ($host like $env.MY_ENV_VARS.hosts.8) {
sys net | where name =~ '^en' | get name.0
} else {
sys net | where name =~ '^wl' | get name.0
}
nload -u H -U H $device
}
const profiles = ["no-mcp", "minimal", "standard", "webui", "research", "googlesuit", "imagen", "full"]
#change gemini profile settings
#profiles:
# - no-mcp: no mcp + conductor extension
# - minimal: nushell mcp + conductor, google-workspace extensions
# - standard: deepwiki, context7, grep, Ref, nushell, ollama-search, exa, bravesearch, firecrawl, sequentialthinking, markdonify mcp servers + conductor, google-workspace extensions
# - webui: standard + magicui mcp servers + gemini-cli-security, gemini-docs-ext extensions
# - research: standard + research-semantic-paper, research-paper mcp servers + datacommons, gemini-deep-research extensions
# - googlesuit: standard + google-forms, youtube mcp servers + datacommons, gemini-docs-ext extensions
# - imagen: standard + imagen mcp server + nanobanana extension
# - full: all mcp + all extensions
export def "gmn profile" [
profile:string@$profiles = "standard"
--list-mcp-servers-and-extensions(-l)
] {
let settings = open ($env.MY_ENV_VARS.linux_backup | path join "settings_gemini.json")
let mcp_servers = $settings | get mcpServers
let mcp_names = $mcp_servers | columns | sort
if $list_mcp_servers_and_extensions {
print (echo-g "mcp servers:")
print ($mcp_names)
print (echo-g "extensions:")
gemini -l
return
}
let servers = match $profile {
"standard" => {$mcp_names | find standard -n},
"webui" => {$mcp_names | find standard & webui -n},
"research" => {$mcp_names | find standard & research -n},
"googlesuit" => {$mcp_names | find standard & googlesuit -n},
"imagen" => {$mcp_names | find standard & imagen -n},
"no-mcp" => {[]},
"minimal" => {$mcp_names | find nushell -n},
"full" => {$mcp_names},
_ => {return-error "Invalid profile"}
}
let filtered_servers = if ($servers | is-empty) { {} } else { $mcp_servers | select ...$servers }
$settings | upsert mcpServers $filtered_servers | save -f ~/.gemini/settings.json
}
#wrapper for gemini cli
export def --wrapped gmn [
...rest
--profile(-p):string@$profiles = "standard"
] {
gmn profile $profile
match $profile {
"standard" => {gemini --approval-mode=yolo --extensions "conductor,google-workspace" ...$rest},
"webui" => {gemini --approval-mode=yolo --extensions "conductor,google-workspace,gemini-cli-security,gemini-docs-ext" ...$rest},
"research" => {gemini --approval-mode=yolo --extensions "conductor,google-workspace,datacommons,gemini-deep-research" ...$rest},
"googlesuit" => {gemini --approval-mode=yolo --extensions "conductor,google-workspace,datacommons,gemini-docs-ext" ...$rest},
"imagen" => {gemini --approval-mode=yolo --extensions "conductor,google-workspace,nanobanana" ...$rest},
"no-mcp" => {gemini --approval-mode=yolo --extensions "conductor" ...$rest},
"minimal" => {gemini --approval-mode=yolo --extensions "conductor,google-workspace" ...$rest},
"full" => {gemini --approval-mode=yolo ...$rest},
_ => {return-error "Invalid profile"}
}
}
#wrapper for claude code
export def --wrapped cld [
...rest
] {
^claude --dangerously-skip-permissions
}
export alias gtes = gtypist --colors 7,0 esp.typ
#wrapper for cliamp
export def ytm2 [
--youtube-playlist(-y) #select youtube playlist url from list, otherwise all liked music from local playlist
] {
let playlist = match $youtube_playlist {
true => {
open ($env.MY_ENV_VARS.linux_backup | path join "youtube_music_playlists" | path join "youtube_playlists_urls.json")
| input list -fd name (echo-g "Select a playlist:")
| get url
},
false => {
$env.MY_ENV_VARS.linux_backup | path join "youtube_music_playlists" | path join "all_likes.m3u"
}
}
^cliamp $playlist --shuffle --visualizer Wave --eq-preset Rock --theme mine --auto-play
}