# replace /home/$USER by ~ def tildize [] { if ($in | path split | zip ($env.HOME | path split) | all { $in.0 == $in.1 }) { ($in | str replace $env.HOME "~") } else { $in } } # remove extension shortcut def rm-ext [] { $in | path parse | update extension "" | get parent stem | str join "/" } # ls builtin alias _ls = ls # shortcut for ls builtin alias l = _ls def _ls_format_mode [mode: string] { let chars = $mode | split chars let r1 = if ($chars | get 0) == "r" { [(ansi yellow_bold), "r", (ansi reset)] } else { [(ansi grey), "-"] } let w1 = if ($chars | get 1) == "w" { [(ansi red_bold), "w", (ansi reset)] } else { [(ansi grey), "-"] } let x1 = if ($chars | get 2) == "x" { [(ansi green_bold), "x", (ansi reset)] } else { [(ansi grey), "-"] } let r2 = if ($chars | get 3) == "r" { [(ansi yellow), "r", (ansi reset)] } else { [(ansi grey), "-"] } let w2 = if ($chars | get 4) == "w" { [(ansi red), "w"] } else { [(ansi grey), "-"] } let x2 = if ($chars | get 5) == "x" { [(ansi green), "x"] } else { [(ansi grey), "-"] } let r3 = if ($chars | get 6) == "r" { [(ansi yellow), "r", (ansi reset)] } else { [(ansi grey), "-"] } let w3 = if ($chars | get 7) == "w" { [(ansi red), "w"] } else { [(ansi grey), "-"] } let x3 = if ($chars | get 8) == "x" { [(ansi green), "x"] } else { [(ansi grey), "-"] } [$r1, $w1, $x1, $r2, $w2, $x2, $r3, $w3, $x3] | each { $in | str join } | str join } # quick and easy ls def ls [dir?] { let output = (if $dir == null { _ls } else { _ls $dir }) | sort-by type name -i if ($output | length) == 0 { "" | cat } else { $output | grid -c -s " " | cat } } # ls with hidden files def la [dir?] { (if $dir == null { _ls -al } else { _ls -al $dir }) | sort-by type name -i | each { $in | update mode (_ls_format_mode $in.mode) } | select mode name target user size modified } # ls with details def ll [dir?] { (if $dir == null { _ls -l } else { _ls -l }) | each { $in | update mode (_ls_format_mode $in.mode) } | sort-by type name -i | select mode name target user size modified } # du builtin alias _du = du # non recursive du def du [...args] { let parsed_args = if ($args | is-empty) { ["*"] } else { $args } $parsed_args | each { _du -a $in | select path apparent physical } | flatten } # df def df [] { ^df -h | str replace "Sys. de fichiers" "@" | str replace "Monté sur" "@" | detect columns | rename "filesystem" "size" "used" "available" "used%" "mountpoint" } # easy markdown formamtter def to-md [] { let arg = $in $env.config.table.mode = markdown; echo $arg } # Useful aliases # colored ip alias ip = ip -c # neovim alias v = nvim # quit alias :q = exit # evince in background def pdf [arg: string] { pueue add -e evince $arg } # ripgrep alias rg = rg -uu # mkdir && cd def --env mkcd [dir: string] { ^mkdir $dir; chmod 755 $dir; cd $dir } # run command in background alias pa = pueue add --immediate # show background commands def pst [] { pueue status -j | from json | get tasks | transpose | each { $in | get column1 } | each { let stdin = $in $stdin | update status ( if $stdin.status == "Running" { ((ansi yellow) + "Running") } else if not (echo $stdin.status | get -i Done | is-empty) { let exit_value = $stdin.status | get "Done" if ($exit_value == "Success") { ((ansi green) + "Success") } else { (ansi red) + "Failed (" + ($exit_value | get "Failed" | into string) + ")" } } else { "Unknown???" } ) | update path ($in.path | tildize) | update start ((ansi magenta) + ($in.start | date humanize)) | update end ((ansi magenta) + ($in.end | date humanize)) } | select status command path start end } # shortcut for yazi def --env y [] { let cwd_file = mktemp -t yazi --cwd-file $cwd_file cd (cat $cwd_file) } # Show cheatsheet def cheat [] { pueue add -e evince ($env.HOME + '/git/gitea.tforgione.fr/tforgione/cheat/build/main.pdf') } # meme completion def _meme [] { _ls ($env.HOME + '/Videos/Memes') | get name | each { rm-ext } | each { path basename } } # Play a funny meme def m [arg: string@_meme] { let previous_volume = (pactl get-sink-volume 0 | split row ' ' | filter { $in != "" } | get 4) # pactl set-sink-volume 0 100% mpv (glob ($env.HOME + '/Videos/Memes/' + $arg + '.*') | get 0) # pactl set-sink-volume 0 $previous_volume } # mkdir with correct rights def mkdir [arg: string] { ^mkdir $arg chmod 755 $arg }