From 17e66e339c9a19f63dd55ca94cd5502c838ca3fc Mon Sep 17 00:00:00 2001 From: Natsu Kagami Date: Sun, 22 Sep 2024 15:46:35 +0200 Subject: [PATCH] Create notifications for pls --- home/fish/fish.nix | 27 ++++++- home/fish/haruka.png | Bin 0 -> 30876 bytes home/fish/pls.fish | 155 --------------------------------------- home/fish/pls_extra.fish | 47 ++++++++++++ 4 files changed, 70 insertions(+), 159 deletions(-) create mode 100644 home/fish/haruka.png delete mode 100644 home/fish/pls.fish create mode 100644 home/fish/pls_extra.fish diff --git a/home/fish/fish.nix b/home/fish/fish.nix index 753ff05..cc39630 100644 --- a/home/fish/fish.nix +++ b/home/fish/fish.nix @@ -53,8 +53,7 @@ in functions = { rebuild = { body = '' - command sudo -v && \ - command sudo nixos-rebuild --flake ~/.config/nixpkgs -L --log-format internal-json -v $argv \ + pls nixos-rebuild --flake ~/.config/nixpkgs -L --log-format internal-json -v $argv \ &| ${pkgs.nix-output-monitor}/bin/nom --json ''; wraps = "nixos-rebuild"; @@ -149,6 +148,26 @@ in # Override PATH set --export --prepend PATH ~/.bin/overrides ~/.local/bin + + function pls --wraps "sudo" + set -l cmd "`"(string join " " -- $argv)"`" + echo "I-It's not like I'm gonna run "$cmd" for you or a-anything! Baka >:C" >&2 + # Send a notification on password prompt + if command sudo -vn 2>/dev/null + # nothing to do, user already authenticated + else + # throw a notification + set notif_id (kitten notify -P \ + -p ${./haruka.png} \ + -a "pls" \ + -u critical \ + "A-a command requires your p-password" \ + (printf "I-I need your p-password to r-run the following c-command: %s" $cmd)) + command sudo -v -p "P-password please: " + kitten notify -i $notif_id "" + end + command sudo $argv + end ''; interactiveShellInit = '' @@ -253,8 +272,8 @@ in target = ".config/fish/conf.d/change_cmd.fish"; }; "fish/pls.fish" = { - source = ./. + "/pls.fish"; - target = ".config/fish/conf.d/pls.fish"; + source = ./pls_extra.fish; + target = ".config/fish/conf.d/pls_extra.fish"; }; }; } diff --git a/home/fish/haruka.png b/home/fish/haruka.png new file mode 100644 index 0000000000000000000000000000000000000000..c75ddd9839020f6d52049dfa08f05b7b5f0ab771 GIT binary patch literal 30876 zcmV({K+?a7P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw004L= 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 D%R|)` literal 0 HcmV?d00001 diff --git a/home/fish/pls.fish b/home/fish/pls.fish deleted file mode 100644 index 35080d7..0000000 --- a/home/fish/pls.fish +++ /dev/null @@ -1,155 +0,0 @@ -alias sue="pls -e" - -function pls - set -l cmd "`"(string join " " -- $argv)"`" - echo "I-It's not like I'm gonna run "$cmd" for you or a-anything! Baka >:C" >&2 - # Send a notification on password prompt - if command sudo -vn 2>/dev/null - # nothing to do, user already authenticated - else - # throw a notification - # notify-send -t 3000 -u critical -i ~/Downloads/harukablush.jpg -h "STRING:command:"$cmd "A-a command requires your p-password" (printf "I-I need your p-password to r-run the following c-command: %s" $cmd) - end - command sudo $argv -end - -function sudo - echo "Not polite enough." -end - -function __fish_prepend_pls -d "Prepend 'pls ' to the beginning of the current commandline" - # If there is no commandline, insert the last item from history - # and *then* toggle - if not commandline | string length -q - commandline -r "$history[1]" - end - - set -l cmd (commandline -po) - set -l cursor (commandline -C) - - if test "$cmd[1]" = e - commandline -C 0 - commandline -i "su" - commandline -C (math $cursor + 2) - else if test "$cmd[1]" = sue - commandline -r (string sub --start=3 (commandline -p)) - commandline -C -- (math $cursor - 2) - else if test "$cmd[1]" != pls - commandline -C 0 - commandline -i "pls " - commandline -C (math $cursor + 4) - else - commandline -r (string sub --start=5 (commandline -p)) - commandline -C -- (math $cursor - 4) - end -end - -bind --preset -e -M insert \es -bind -M insert \es __fish_prepend_pls - -function __fish_man_page - # Get all commandline tokens not starting with "-" - set -l args (commandline -po | string match -rv '^-') - - # If commandline is empty, exit. - if not set -q args[1] - printf \a - return - end - - #Skip `pls` and display then manpage of following command - while set -q args[2] - and string match -qr -- '^(pls|.*=.*)$' $args[1] - set -e args[1] - end - - # If there are at least two tokens not starting with "-", the second one might be a subcommand. - # Try "man first-second" and fall back to "man first" if that doesn't work out. - set -l maincmd (basename $args[1]) - if set -q args[2] - # HACK: If stderr is not attached to a terminal `less` (the default pager) - # wouldn't use the alternate screen. - # But since we don't know what pager it is, and because `man` is totally underspecified, - # the best we can do is to *try* the man page, and assume that `man` will return false if it fails. - # See #7863. - if man "$maincmd-$args[2]" &>/dev/null - man "$maincmd-$args[2]" - else if man "$maincmd" &>/dev/null - man "$maincmd" - else - printf \a - end - else - if man "$maincmd" &>/dev/null - man "$maincmd" - else - printf \a - end - end - - commandline -f repaint -end - -# -# Completion for pls -# - -function __fish_pls_print_remaining_args - set -l tokens (commandline -opc) (commandline -ct) - set -e tokens[1] - # These are all the options mentioned in the man page for Todd Miller's "pls.ws" pls (in that order). - # If any other implementation has different options, this should be harmless, since they shouldn't be used anyway. - set -l opts A/askpass b/background C/close-from= E/preserve-env='?' - # Note that "-h" is both "--host" (which takes an option) and "--help" (which doesn't). - # But `-h` as `--help` only counts when it's the only argument (`pls -h`), - # so any argument completion after that should take it as "--host". - set -a opts e/edit g/group= H/set-home h/host= 1-help - set -a opts i/login K/remove-timestamp k/reset-timestamp l/list n/non-interactive - set -a opts P/preserve-groups p/prompt= S/stdin s/shell U/other-user= - set -a opts u/user= T/command-timeout= V/version v/validate - argparse -s $opts -- $tokens 2>/dev/null - # The remaining argv is the subcommand with all its options, which is what - # we want. - if test -n "$argv" - and not string match -qr '^-' $argv[1] - string join0 -- $argv - return 0 - else - return 1 - end -end - -function __fish_pls_no_subcommand - not __fish_pls_print_remaining_args >/dev/null -end - -function __fish_complete_pls_subcommand - set -l args (__fish_pls_print_remaining_args | string split0) - set -lx -a PATH /usr/local/sbin /sbin /usr/sbin - __fish_complete_subcommand --commandline $args -end - -# All these options should be valid for GNU and OSX pls -complete -c pls -n __fish_no_arguments -s h -d "Display help and exit" -complete -c pls -n __fish_no_arguments -s V -d "Display version information and exit" -complete -c pls -n __fish_pls_no_subcommand -s A -d "Ask for password via the askpass or \$SSH_ASKPASS program" -complete -c pls -n __fish_pls_no_subcommand -s C -d "Close all file descriptors greater or equal to the given number" -xa "0 1 2 255" -complete -c pls -n __fish_pls_no_subcommand -s E -d "Preserve environment" -complete -c pls -n __fish_pls_no_subcommand -s H -d "Set home" -complete -c pls -n __fish_pls_no_subcommand -s K -d "Remove the credential timestamp entirely" -complete -c pls -n __fish_pls_no_subcommand -s P -d "Preserve group vector" -complete -c pls -n __fish_pls_no_subcommand -s S -d "Read password from stdin" -complete -c pls -n __fish_pls_no_subcommand -s b -d "Run command in the background" -complete -c pls -n __fish_pls_no_subcommand -s e -rF -d Edit -complete -c pls -n __fish_pls_no_subcommand -s g -a "(__fish_complete_groups)" -x -d "Run command as group" -complete -c pls -n __fish_pls_no_subcommand -s i -d "Run a login shell" -complete -c pls -n __fish_pls_no_subcommand -s k -d "Reset or ignore the credential timestamp" -complete -c pls -n __fish_pls_no_subcommand -s l -d "List the allowed and forbidden commands for the given user" -complete -c pls -n __fish_pls_no_subcommand -s n -d "Do not prompt for a password - if one is needed, fail" -complete -c pls -n __fish_pls_no_subcommand -s p -d "Specify a custom password prompt" -complete -c pls -n __fish_pls_no_subcommand -s s -d "Run the given command in a shell" -complete -c pls -n __fish_pls_no_subcommand -s u -a "(__fish_complete_users)" -x -d "Run command as user" -complete -c pls -n __fish_pls_no_subcommand -s v -n __fish_no_arguments -d "Validate the credentials, extending timeout" - -# Complete the command we are executed under pls -complete -c pls -x -n 'not __fish_seen_argument -s e' -a "(__fish_complete_pls_subcommand)" diff --git a/home/fish/pls_extra.fish b/home/fish/pls_extra.fish new file mode 100644 index 0000000..3aac0ef --- /dev/null +++ b/home/fish/pls_extra.fish @@ -0,0 +1,47 @@ +alias sue="pls -e" + +function sudo + echo "Not polite enough." +end + +bind --preset -M visual \es 'fish_commandline_prepend pls' +bind -M insert \es 'fish_commandline_prepend pls' + +function __fish_man_page + # Get all commandline tokens not starting with "-", up to and including the cursor's + set -l args (string match -rv '^-|^$' -- (commandline -cpx && commandline -t)) + + # If commandline is empty, exit. + if not set -q args[1] + printf \a + return + end + + # Skip leading commands and display the manpage of following command + while set -q args[2] + and string match -qr -- '^(and|begin|builtin|caffeinate|command|doas|entr|env|exec|if|mosh|nice|not|or|pipenv|prime-run|setsid|sudo|pls|systemd-nspawn|time|watch|while|xargs|.*=.*)$' $args[1] + set -e args[1] + end + + # If there are at least two tokens not starting with "-", the second one might be a subcommand. + # Try "man first-second" and fall back to "man first" if that doesn't work out. + set -l maincmd (path basename $args[1]) + # HACK: If stderr is not attached to a terminal `less` (the default pager) + # wouldn't use the alternate screen. + # But since we don't know what pager it is, and because `man` is totally underspecified, + # the best we can do is to *try* the man page, and assume that `man` will return false if it fails. + # See #7863. + if set -q args[2] + and not string match -q -- '*/*' $args[2] + and man "$maincmd-$args[2]" &>/dev/null + man "$maincmd-$args[2]" + else + if man "$maincmd" &>/dev/null + man "$maincmd" + else + printf \a + end + end + + commandline -f repaint +end