#!/bin/sh launch() { app=$(printf "Notes Files Editor Terminal Multiplexer LBRY Chat Music Browser Email Processes" | tr -d '\t' | dmenu -i -p "Launcher") case $app in Notes) st -e vim "+cd ~/Notes/text" "+CtrlP";; Files) st -e nnn;; Editor) st -e vim;; Terminal) st;; Multiplexer) st -e tmux $*;; LBRY) lbry;; Chat) element-desktop;; Music) st -e ncmpcpp;; Browser) brave-browser;; Email) brave-browser mail.protonmail.com/login;; Processes) st -e htop;; esac } action() { action=$(printf "Play Music Pause Music Toggle Music Command Command to clipboard Search github Search ddg Select VPN Disable VPN Enable VPN VPN Status Rebind Keys Disable Bar 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 ddg') ddg;; 'Command') cmd;; 'Command to clipboard') cmd_clip;; 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 "ddg")" search_mode='tab' case "$search_string" in 'New window') search_mode='window'; search_string=$(printf '' | dmenu -p 'new ddg');; 'Bookmarks');; 'History') ;; # *) printf "Invalid argument";; esac printf "$search_string|$search_mode" } brave_search() { search_prefix="$1" search_info="$(search_type)" 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) brave-browser "$search";; window) brave-browser --new-window "$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=" } github() { brave_search "https://github.com/search?q=" } cmd() { sh -c "$(printf '' | dmenu -i -p 'cmd')" } 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 } case $1 in launch) launch;; action) action;; cmd) action;; cmd_clip) cmd_clip;; ddg) brave_search "https://duckduckgo.com/?q=";; github) brave_search "https://github.com/search?q=";; *) printf "Invalid argument";; esac