|
- #!/bin/sh
-
- browser_cmd="brave-browser"
- browser_new_cmd="brave-browser --new-window"
-
- launch() {
- app=$(printf "Notes
- Files
- Edit
- Editor
- Terminal
- Multiplexer
- LBRY
- Chat
- Music
- Browser
- Hidden browser
- Manual
- Email
- Page
- Define
- Package search
- Package info
- Play clipboard
- Play downloads
- Processes" | tr -d '\t' |
- dmenu -i -p "Launcher")
-
- case $app in
- Notes) st -t "Notes" -e vim "+cd ~/Notes/text" "+CtrlP";;
- Files) st -t "Files" -e sh -lc nnn;;
- Edit) editor;;
- Editor) st -t "Editor" -e vim;;
- Terminal) st -t "Terminal";;
- Page) pages pager "$(printf "1\n2\n3\n" | dmenu -p 'page')";;
- Manual) p=$(printf '' | dmenu -p 'man'); st -t "Manual $p" -e man "$p";;
- Multiplexer) st -t "Multiplexer" -e tmux attach-session -t 0 || st -t "Multiplexer" -e tmux new-session -s 0;;
- LBRY) lbry;;
- Chat) element-desktop;;
- Music) st -t "Music" -e ncmpcpp;;
- Browser) $browser_cmd;;
- 'Hidden browser') $browser_cmd --incognito;;
- Email) $browser_cmd mail.protonmail.com/login;;
- 'Play clipboard') mpv "$(xclip -o -selection clipboard)";;
- 'Play downloads') mpv "$HOME/Downloads/tmp/$(ls ~/Downloads/tmp/ | dmenu -i -l 10 -p 'play')";;
- 'Define') word=$(printf '' | dmenu -p 'word'); st -e sh -lc "dict \"$word\" | less";;
- 'Package search')s=$(printf '' | dmenu -p 'name'); if [ -z "$s" ]; then exit; fi; st -t "Package $s" -e sh -lc "apt search $s | less";;
- 'Package info')s=$(printf '' | dmenu -p 'name'); if [ -z "$s" ]; then exit; fi; st -t "Package $s" -e sh -lc "apt show $s | less";;
- Processes) st -t "Processes" -e htop;;
- esac
- }
-
- editor() {
- file=$(mru list | dmenu -i -l 10 -p 'edit what?')
- st -t 'Editor' -e vim "$file"
- }
-
- #Opening all mru files, not just for editing
- opener() {
- sdfs
- }
-
- action() {
- action=$(printf "Toggle Music
- Pause Music
- Play Music
- Go page
- Command
- Command to clipboard
- Search github
- Search ddg
- Search godoc
- Select VPN
- Disable VPN
- Enable VPN
- VPN Status
- Rebind Keys
- Show calender
- Disable Bar
- Password
- Username
- Alternate password
- Download
- Enable Bar" | tr -d '\t' |
- dmenu -i -p "Actions")
-
- case $action in
- 'Play Music') mpc play ;;
- 'Pause Music') mpc pause ;;
- 'Toggle Music') mpc toggle ;;
- 'Rebind Keys') setup-xbindkeys;;
- 'Disable Bar') tmux set -g status off;;
- 'Enable Bar') tmux set -g status on;;
- 'Search github') github;;
- 'Search godoc') godoc;;
- 'Search ddg') ddg;;
- 'Command') cmd;;
- 'Command to clipboard') cmd_clip;;
- 'Username') username;;
- 'Password') password;;
- 'Alternate password') other_password;;
- 'Show calender') notify-send 'Calender' "\n\n$(cal)";;
- #This should check for an error code and confirm that download has started
- 'Download') youtube-dl --no-progress -o "$HOME/Downloads/tmp/%(title)s.%(ext)s" "$(xclip -selection clipboard -o)"; notify-send -u low -t 3000 "Download complete";;
- 'Go page') num=$(go_page); pages pager $num;;
- esac
- }
-
- screenshot() {
- method=$(printf "clipboard
- file
- both" |
- dmenu -i -p "Screenshot")
-
- if [ $method = "file" ]; then
- scrot --note "-f 'LiterationSans Nerd Font Book/11' -x 10 -y 20 -c 255,0,0,255 -t 'Hi'"\
- -s ~/Pictures/screenshots/screenshot-%Y-%m-%d_$wx$h.png
- fi
-
- if [ $method = "clipboard" ]; then
- scrot --note "-f 'LiterationSans Nerd Font Book/11' -x 10 -y 20 -c 255,0,0,255 -t 'Hi'"\
- -s ~/Pictures/screenshots/screenshot-%Y-%m-%d_$wx$h.png\
- -e "xclip $f; rm $f"
- fi
-
- if [ $method = "both" ]; then
- scrot --note "-f 'LiterationSans Nerd Font Book/11' -x 10 -y 20 -c 255,0,0,255 -t 'Hi'"\
- -s ~/Pictures/screenshots/screenshot-%Y-%m-%d_$wx$h.png\
- -e "xclip $f;"
- fi
- }
-
- search_type() {
- search_string="$(printf "New window\nBookmarks\nHistory" | dmenu -p "$1")"
- search_mode='tab'
-
- case "$search_string" in
- 'New window') search_mode='window'; search_string=$(printf '' | dmenu -p "new $1");;
- 'Bookmarks');;
- 'History') ;;
- # *) printf "Invalid argument";;
- esac
- printf "$search_string|$search_mode"
- }
-
- brave_search() {
- search_prefix="$1"
- search_info="$(search_type "$2")"
- search_string=$(printf "$search_info" | cut -d'|' -f1)
- search_mode=$(printf "$search_info" | cut -d'|' -f2)
- if [ -z "$search_string" ]; then exit; fi
- new_string=$(rawurlencode "$search_string")
- search="$search_prefix$new_string"
- case "$search_mode" in
- tab) $browser_cmd "$search";;
- window) $browser_new_cmd "$search";;
- esac
- }
-
- rawurlencode() {
- #Takes the first argument and encodes it
- search_string="$1"
- string_length=$(expr length "$search_string")
- char=''; new_string='';
-
- i=1
- while [ $i -le $string_length ]
- do
- char=$(expr substr "$search_string" $i 1)
- # new_string="$new_string$(rawurlencode "$char")"
- case "$char" in
- [-_.~a-zA-Z0-9] ) new_string="$new_string$char";;
- * ) new_string="$new_string%$(printf '%%%02x' "'$char")";;
- esac
- i=$(expr $i + 1)
- done
- printf "$new_string"
- }
-
- ddg() {
- brave_search "https://duckduckgo.com/?q=" "ddg"
- }
-
- github() {
- brave_search "https://github.com/search?q=" "github"
- }
-
- godoc() {
- brave_search "https://golang.org/pkg/" "godoc"
- }
-
- manual() {
- search=$(printf '' | dmenu -p 'manual')
- result=$(man "$search")
- printf "$result" | enscript -p - | ps2pdf - | zathura -
- }
-
- goinfo() {
- #Maybe this can also show recent searches
- search=$(printf "Window\nNotify" | dmenu -p 'goinfo')
- case $search in
- Window) search=$(printf '' | dmenu -p 'goinfo'); result=$(go doc "$search"); infowindow "$result"; exit;;
- Notify) search=$(printf '' | dmenu -p 'goinfo'); result=$(go doc "$search"); notify-send -u low -t 0 "Go documentation" "$result"; exit;;
- esac
- result=$(go doc "$search"); notify-send -u low -t 0 "Go documentation" "$result";
- }
-
- go_page() {
- name=$(printf "1\n2\n3\n4" | dmenu -p "page name")
- go doc "$(printf "" | dmenu -p 'go doc search')" > /tmp/pages-$name
- printf "$name"
- }
-
- infowindow() {
- printf "$1" | enscript -p - | ps2pdf - | zathura -
- }
-
- cmd() {
- c="$(printf '' | dmenu -i -p 'cmd')"
- output=$( $c )
- notify-send -u low 'command output' "$output"
- }
-
- cmd_clip() {
- value=$(cmd)
- show_value="$(expr substr "$value" 1 200)\n..."
- notify-send -u low -t 2000 "Items cliped" "$show_value"
- printf "%s" "$value" | xclip -selection clipboard
- }
-
- username() {
- account=$(find ~/.password-store/[!\.]* -type f |
- sed -e "s:$HOME/.password-store/::" -e "s:\.gpg::" |
- dmenu -p 'account')
- if [ -z "$account" ]; then exit; fi
- name=$(pass show "$account" | sed -n -e "s/^username: //p" |
- dmenu -p 'which username' | xclip -f -selection clipboard)
- if [ -z "$name" ]; then exit; fi
- notify-send -u low -t 2000 "username copied" "$account: $name"
- }
-
- password() {
- account=$(find ~/.password-store/[!\.]* -type f |
- sed -e "s:$HOME/.password-store/::" -e "s:\.gpg::" |
- dmenu -p 'which service')
- pass -c $account
- notify-send -u low -t 1000 'password copied' "Copied $account"
-
- }
-
- other_password() {
- account=$(find ~/.password-store/[!\.]* -type f |
- sed -e "s:$HOME/.password-store/::" -e "s:\.gpg::" |
- dmenu -p 'service')
- if [ -z "$account" ]; then exit; fi
- name=$(pass show "$account" | sed -n -e "s/^username: //p" |
- dmenu -p 'which user password')
- if [ -z "$name" ]; then exit; fi
- notify-send -u low -t 2000 "password copied" "$account: $name"
-
- #figure out range selections
- sed -n -e ""
- }
-
- edit_password() {
- account=$(find ~/.password-store/[!\.]* -type f |
- sed -e "s:$HOME/.password-store/::" -e "s:\.gpg::" |
- dmenu -p 'which service')
- if [ -z "$account" ]; then exit; fi
- error=$(st -e pass edit "$account" 2>&1)
- if [ -n "$error" ]; then notify-send -u low -t 3000 "password edit error" "$error"; fi
- }
-
- case $1 in
- launch) launch;;
- action) action;;
- cmd) action;;
- cmd_clip) cmd_clip;;
- ddg) ddg;;
- github) github;;
- godoc) godoc;;
- goinfo) goinfo;;
- username) username;;
- password) password;;
- other_password) other_password;;
- edit_password) edit_password;;
- *) printf "Invalid argument";;
- esac
|