diff --git a/.config/aliasrc b/.config/aliasrc index 711bb6a..06dbe50 100644 --- a/.config/aliasrc +++ b/.config/aliasrc @@ -10,7 +10,7 @@ alias bfg='java -jar ~/tools/bfg-1.13.0.jar' alias cp='cp -i' alias df='df -h' -alias doas='doas --' +alias doas='doas -- ' alias dotfiles='.f' alias dotfiles-mail='.fm' alias du='du -h' diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc index 6852185..db0135a 100644 --- a/.config/zsh/.zshrc +++ b/.config/zsh/.zshrc @@ -1,5 +1,5 @@ # Path to your oh-my-zsh installation. -export ZSH="$HOME/.config/zsh/oh-my-zsh" +export ZSH="$ZDOTDIR/oh-my-zsh" if [ ! -f "$ZSH/oh-my-zsh.sh" ] then @@ -65,7 +65,13 @@ DISABLE_AUTO_UPDATE="false" # HIST_STAMPS="yyyy-mm-dd" # Would you like to use another custom folder than $ZSH/custom? -# ZSH_CUSTOM=/path/to/new-custom-folder +ZSH_CUSTOM=$ZDOTDIR/custom + +priv_plugin=sudo +if [ -x "$(command -v doas)" ] +then + priv_plugin=doas +fi # Which plugins would you like to load? # Standard plugins can be found in $ZSH/plugins/ @@ -83,8 +89,9 @@ plugins=( jump kubectl safe-paste - sudo vi-mode + + $priv_plugin ) source $ZSH/oh-my-zsh.sh diff --git a/.config/zsh/custom/plugins/doas/README.md b/.config/zsh/custom/plugins/doas/README.md new file mode 100644 index 0000000..7b62f84 --- /dev/null +++ b/.config/zsh/custom/plugins/doas/README.md @@ -0,0 +1,47 @@ +# doas-zsh-plugin + +Easily prefix your current or previous commands with `doas` by pressing esc twice + +To use it, add the following to your zshrc: + +```console +plugins=(doas) +``` + +## Usage + +### Current typed commands + +Say you have typed a long command and forgot to add `doas` in front: + +```console +$ apt-get install build-essential +``` + +By pressing the esc key twice, you will have the same command with `doas` prefixed without typing: + +```console +$ doas apt-get install build-essential +``` + +### Previous executed commands + +Say you want to delete a system file and denied: + +```console +$ rm some-system-file.txt +-su: some-system-file.txt: Permission denied +$ +``` + +By pressing the esc key twice, you will have the same command with `doas` prefixed without typing: + +```console +$ rm some-system-file.txt +-su: some-system-file.txt: Permission denied +$ doas rm some-system-file.txt +Password: +$ +``` + +Plugin inspired by sudo plugin by [Dongweiming](https://github.com/dongweiming) diff --git a/.config/zsh/custom/plugins/doas/doas.plugin.zsh b/.config/zsh/custom/plugins/doas/doas.plugin.zsh new file mode 100644 index 0000000..27e0ca8 --- /dev/null +++ b/.config/zsh/custom/plugins/doas/doas.plugin.zsh @@ -0,0 +1,32 @@ +# ------------------------------------------------------------------------------ +# Description +# ----------- +# +# doas will be inserted before the command +# +# ------------------------------------------------------------------------------ +# Authors +# ------- +# +# * Anatoly +# +# ------------------------------------------------------------------------------ + +doas-command-line() { + [[ -z $BUFFER ]] && LBUFFER="$(fc -ln -1)" + if [[ $BUFFER == doas\ * ]]; then + if [[ ${#LBUFFER} -le 4 ]]; then + RBUFFER="${BUFFER#doas }" + LBUFFER="" + else + LBUFFER="${LBUFFER#doas }" + fi + else + LBUFFER="doas $LBUFFER" + fi +} +zle -N doas-command-line +# Defined shortcut keys: [Esc] [Esc] +bindkey -M emacs '\e\e' doas-command-line +bindkey -M vicmd '\e\e' doas-command-line +bindkey -M viins '\e\e' doas-command-line diff --git a/.local/bin/archlinux-update b/.local/bin/archlinux-update index ab97086..2566b59 100755 --- a/.local/bin/archlinux-update +++ b/.local/bin/archlinux-update @@ -1,6 +1,6 @@ #!/usr/bin/sh -yay -Syu +paru -Syu if [ $? -eq 0 ]; then echo "UPDATE SUCCEDEED" @@ -13,7 +13,12 @@ fi echo "===================================================================" -sudo checkservices +if [ -x "$(command -v doas)" ] +then + doas checkservices +else + sudo checkservices +fi if [ $? -eq 0 ]; then echo "CHECKSERVICES SUCCEDEED"