├── .gitignore ├── README.md ├── bin ├── 0x0 ├── 6r ├── README.md ├── app │ ├── ! │ ├── $ │ ├── adb │ ├── brave │ ├── chromium │ ├── edge │ ├── go │ ├── minecraft │ ├── nix │ ├── nix-build │ ├── nix-channel │ ├── nix-collect-garbage │ ├── nix-copy-closure │ ├── nix-daemon │ ├── nix-env │ ├── nix-hash │ ├── nix-instantiate │ ├── nix-prefetch-url │ ├── nix-shell │ ├── nix-store │ ├── pacman │ ├── reboot │ ├── stack │ ├── steam │ └── wrap ├── bar ├── borders ├── calc ├── ch ├── clipwatch ├── co ├── copy ├── cursor ├── darken ├── datew ├── dcid ├── del ├── dirty ├── down ├── emoji ├── ff-sync ├── focus ├── freeze ├── fzfmenu ├── gkif ├── gs ├── hi ├── hw ├── im ├── install.sh ├── killmen ├── launch ├── linesh ├── lock ├── m ├── ma ├── menu ├── mic ├── micbar ├── mnt ├── move ├── nottop ├── notvol ├── p ├── p1 ├── p2 ├── p3 ├── players.sh ├── pome ├── qe ├── rc ├── rel ├── resize ├── rmd ├── screen.sh ├── sf ├── shade ├── shlib ├── shortcuts ├── snowflake ├── spoiler ├── swallow ├── t ├── targets ├── temp ├── term ├── terms.sh ├── timer ├── transadd ├── ts.sh ├── ttycol ├── umnt ├── util.sh ├── vol ├── walgen ├── walgen1 ├── wm └── x ├── deploy ├── etc ├── bspwm │ ├── bspwmrc │ ├── noswallow │ └── terminals ├── colours │ ├── blackout │ ├── blue │ ├── brit │ ├── cherry │ ├── coal │ ├── coral │ ├── dab │ ├── dragkula │ ├── frost │ ├── grey │ ├── hacker │ ├── magic │ ├── meta │ ├── nh │ ├── notion │ ├── nottion │ ├── pastel │ ├── red │ ├── snow │ ├── vibrant │ └── withered ├── dunst │ └── dunstrc ├── feh │ ├── buttons │ └── keys ├── fontconfig │ └── conf.d │ │ └── 70-nodejavu.conf ├── git │ └── config ├── gtk-3.0 │ ├── gtk.css │ └── settings.ini ├── htop │ └── htoprc ├── mpd │ └── mpd.conf ├── mpv │ └── input.conf ├── ncmpcpp │ ├── bindings │ └── config ├── nvim │ ├── colors │ │ ├── simple.vim │ │ └── term.vim │ ├── init.vim │ ├── rename.vim │ └── statusline.vim ├── openbox │ └── rc.xml ├── picom.conf ├── sh │ ├── .zprofile │ ├── .zshrc │ ├── aliases │ ├── bashrc │ ├── mkshrc │ ├── profile │ ├── sc │ └── zshrc ├── startpage │ ├── index.html │ └── style.css ├── sxhkd │ ├── bspwm │ └── sxhkdrc └── xorg │ ├── rc │ ├── res │ └── res.col ├── opt ├── 00sleep ├── chrome │ ├── colours.css │ ├── newtab.uc.js │ ├── tab_scroll.uc.js │ ├── tabclick.uc.js │ ├── ucjs.sh │ ├── userChrome-gay.css │ ├── userChrome.css │ └── userContent.css ├── comic.css ├── discord-delete-messages.js ├── discord-gay.css ├── discord-lazy.css ├── discord-old.css ├── discord.css ├── emoji ├── font.css ├── gaycord.css ├── gayfox.css ├── gmail.css ├── gmail.js ├── greenscale ├── greyscale ├── keyboard.kbd ├── kmirror.kbd ├── reddit.css ├── redscale ├── screen.sh ├── svg.svg ├── termtime ├── twitter.css ├── usb-insert ├── usb-insert.wav ├── usb-remove ├── usb-remove.wav ├── usb.rules ├── windows-prompt └── youtube.css └── usr ├── applications ├── nvim.desktop └── torrent.desktop ├── fonts ├── FiraMono-Bold.ttf ├── FiraMono-Medium.ttf ├── README.md ├── RobotoMono-Bold.ttf ├── UbuntuMono-Bold.ttf └── font.bdf ├── icons └── cursor │ ├── index.theme │ └── source │ ├── X_cursor.in │ ├── X_cursor.png │ ├── based_arrow_down.in │ ├── based_arrow_down.png │ ├── based_arrow_up.in │ ├── based_arrow_up.png │ ├── beachball.xcf │ ├── beachball1.png │ ├── beachball2.png │ ├── beachball3.png │ ├── beachball4.png │ ├── beachball5.png │ ├── beachball6.png │ ├── beachball7.png │ ├── beachball8.png │ ├── bottom_left_corner.in │ ├── bottom_left_corner.png │ ├── bottom_right_corner.in │ ├── bottom_right_corner.png │ ├── circle.in │ ├── circle.png │ ├── copy.in │ ├── copy.png │ ├── crossed_circle.in │ ├── crossed_circle.png │ ├── fleur.in │ ├── fleur.png │ ├── hand1.in │ ├── hand1.png │ ├── hand1.xcf │ ├── left_ptr.in │ ├── left_ptr.png │ ├── loading │ ├── beachball1.png │ ├── beachball2.png │ ├── beachball3.png │ ├── beachball4.png │ ├── beachball5.png │ ├── beachball6.png │ ├── watch │ └── watch.in │ ├── make.sh │ ├── question_arrow.in │ ├── question_arrow.png │ ├── right_ptr.in │ ├── right_ptr.png │ ├── sb_down_arrow.in │ ├── sb_down_arrow.png │ ├── sb_h_double_arrow.in │ ├── sb_h_double_arrow.png │ ├── sb_left_arrow.in │ ├── sb_left_arrow.png │ ├── sb_right_arrow.in │ ├── sb_right_arrow.png │ ├── sb_up_arrow.in │ ├── sb_up_arrow.png │ ├── sb_v_double_arrow.in │ ├── sb_v_double_arrow.png │ ├── sizing.in │ ├── sizing.png │ ├── top_left_corner.in │ ├── top_left_corner.png │ ├── top_right_corner.in │ ├── top_right_corner.png │ ├── watch │ ├── watch.in │ ├── xterm.in │ └── xterm.png └── themes └── ob └── openbox-3 ├── close.xbm ├── iconify.xbm ├── max.xbm ├── rc └── themerc /.gitignore: -------------------------------------------------------------------------------- 1 | **/*compdump* 2 | **/*hist* 3 | **/*log 4 | **/gtkfilechooser.ini 5 | **/other 6 | **/plugged 7 | **/sc.sh 8 | **/userChrome.js 9 | **/.uuid 10 | **/LICENSE* 11 | **/*ttf 12 | **/bookmarks 13 | **/credentials 14 | usr/applications 15 | 16 | etc/colours/current 17 | etc/mpv 18 | usr/icons 19 | usr/themes 20 | usr/fonts 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 |
⭐ 🥝 star kiwmi ⭐ 🥝
4 | 5 |

Screenshots

6 | 7 |

[bspwm] Current

8 | 9 | ![](https://i.imgur.com/MQSUbo9.png) 10 | 11 |

[bspwm] british pride 🇬🇧󠁧󠁢󠁥󠁮󠁧󠁿

12 | 13 | ![](https://i.imgur.com/69JNubh.png) 14 | 15 |

[bspwm] calm and content

16 | 17 | ![](https://i.imgur.com/P2SWk4c.png) 18 | 19 | ![with discord](https://i.imgur.com/7SaGxHF.png) 20 | 21 |

[bspwm] magical sunset

22 | 23 | ![](https://i.imgur.com/RSA68Q4.png) 24 | 25 |

[bspwm] cherry blossom

26 | 27 | ![](https://i.imgur.com/v8OqidV.png) 28 | 29 |

[openbox] a quiet mind

30 | 31 | ![](https://i.imgur.com/XSQp3IS.png) 32 | 33 |

[openbox] plant v2.0

34 | 35 | ![](https://i.imgur.com/lRU8dYW.png) 36 | 37 |

[bspwm] 🌋

38 | 39 | ![](https://i.redd.it/bdhajrbjnhm41.png) 40 | 41 |

[bspwm] 🌿

42 | 43 | ![](https://i.imgur.com/TTEoDJP.png) 44 | 45 |

[bspwm] Rocky

46 | 47 | ![](https://i.imgur.com/sRTB2pH.png) 48 | ![](https://i.imgur.com/eqP0327.png) 49 | 50 |

[bspwm] The blood moon is rising

51 | 52 | ![](https://i.imgur.com/WzYQESH.png) 53 | 54 |

[bspwm] rainbow

55 | 56 | ![](https://i.imgur.com/cgGyZ3V.png) 57 | 58 |

[DWM.exe] EPIC MINIMAL DOOM SETUP

59 | 60 | ![](https://i.imgur.com/Az4tZsS.jpg) 61 | 62 |

[DWM/Cairo/Bee] 🐝 Bee yourself 🐝

63 | 64 | ![](https://i.imgur.com/KM8You5.png) 65 | ![](https://i.imgur.com/I1bfFfj.png) 66 | 67 |

Section 2

68 | 69 | And now, some rather old setups that I'm not really proud of but am including just because we all start somewhere. 70 | 71 | Most of the wallpapers were OC, but the setups themselves were rather.. thoughtless, ugly, and low-effort. 72 | There are many oversights & inconsistencies that hurt current me to look at. 73 | 74 | (newest-oldest) 75 | 76 | [KOT (borders)](https://i.imgur.com/5lALbvW.png) 77 | [KOT](https://i.imgur.com/3nQtPrD.png) 78 | [BLUE](https://i.imgur.com/m9IiZvp.png) 79 | [nameless](https://i.imgur.com/w8SKdYO.png) 80 | [\*not to scale (neptune -- i have no idea why the accent is randomly now magenta...)](https://i.imgur.com/blUCp9S.png) 81 | [\*not to scale (earth)](https://i.imgur.com/6vzvt4v.png) 82 | [\*not to scale (moon)](https://i.imgur.com/6r1pgwL.png) 83 | [custom XFWM theme](https://i.imgur.com/gwLB13C.png) 84 | [nameless (blue borders)](https://i.imgur.com/z4w5oiy.png) 85 | [nameless (red borders)](https://i.imgur.com/vWFTcv8.png) 86 | [one of my old firefox themes](https://i.imgur.com/UlAuV3v.mp4) 87 | [hexagons2](https://i.imgur.com/rAksb27.png) 88 | [hexagons](https://i.imgur.com/3QbNa8z.png) 89 | -------------------------------------------------------------------------------- /bin/0x0: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # upload file to 0x0.st 3 | 4 | # prevent filetypes like text/x-shellscript or text/x-diff 5 | # autodownloading in some browsers (and assume stdin is plaintext) 6 | type= 7 | ! [ -t 0 ] || file -ibL "$1" | grep -q '^text/' && type=';type=text/plain' 8 | 9 | curl -sF file="@${1:--}$type" 'https://0x0.st' \ 10 | | tee /dev/stderr \ 11 | | xclip -r -sel clip 12 | -------------------------------------------------------------------------------- /bin/6r: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # crappier xrandr wrapper 3 | 4 | help() { 5 | cat << EOF 6 | 7 | rrrrrr - crappier xrandr wrapper 8 | 9 | usage: 10 | - 'dims [-f] ' get WHXY of monitors 11 | - 'focused [-f]' print geometry of focused monitor, needs xdotool 12 | - 'names [-p]' show monitor names (-p = only primary) 13 | - 'primary [-f]' print geometry of primary monitor 14 | 15 | -f = formatted (example: 800x600+0+0) 16 | otherwise, print like '800 600 0 0' 17 | 18 | EOF 19 | } 20 | 21 | eq() { # [ a = b ] with globbing 22 | case $1 in 23 | *$2*) ;; 24 | *) return 1 25 | esac 26 | } 27 | 28 | o() { 29 | xrandr --current | while read -r line; do 30 | eq "$line" "$@" && l=${line%% inv*} l=${l%% lef*} l=${l%% rig*} && printf '%s\n' "$l" 31 | done 32 | } 33 | 34 | # print the first word 35 | word() { 36 | while IFS='' read -r l; do 37 | echo "${l%% *}" 38 | done 39 | } 40 | 41 | d() { 42 | [ "$1" = -f ] && f=nonzero && shift 43 | [ "$1" ] || set -- $(n) 44 | IFS='x+(' 45 | for i; do 46 | var=$(o "$i") 47 | var=${var##*primary } 48 | set -- ${var##*connected } 49 | [ "$f" ] && printf '%s\n' "$1x$2+$3+$4" || printf '%s\n' "$1 $2 $3 $4" 50 | done 51 | } 52 | 53 | f() { 54 | [ "$1" = -f ] && format=-f 55 | # get the dimensions of the focused monitor 56 | eval "$(xdotool getwindowfocus getwindowgeometry --shell)" 57 | # get the maximum size of all the combined monitors 58 | max=$(o " current") 59 | max=${max##*ent } 60 | set -- ${max%%,*} 0 0 61 | # check if the focused window takes up the full size of all 62 | # monitors (most likely the root window), then print the primary monitor 63 | [ "$WIDTH" = "$1" ] && [ "$HEIGHT" = "$3" ] && 64 | { p $format; exit; } 65 | o " connected" | while read -r line; do 66 | IFS='x+(' 67 | set -- ${line} 68 | # remove junk added by the custom IFS 69 | set -- "${1##* }" "$2" "$3" "$4" 70 | #echo "1: $2\n2: $2\n3: $3\n4: $4\n*: $*" 71 | # Width 72 | [ "$X" -ge "$3" ] && [ "$X" -lt "$(($3+$1))" ] || continue 73 | # Height 74 | [ "$Y" -ge "$4" ] && [ "$Y" -lt "$(($4+$2))" ] || continue 75 | [ "$format" = -f ] && printf '%s\n' "$1x$2+$3+$4" || 76 | printf '%s\n' "$1 $2 $3 $4" 77 | exit 78 | done 79 | } 80 | 81 | n() { 82 | case $1 in 83 | -p) o " primary" | word;; 84 | *) o " connected" | word;; 85 | esac 86 | } 87 | 88 | p() { 89 | var=$(o primary) 90 | var=${var##*primary } 91 | [ "$1" = -f ] && printf '%s\n' "${var%% (*}" || { 92 | IFS='x+' 93 | set -- ${var%% (*} 94 | echo "$@" 95 | } 96 | } 97 | 98 | _() { 99 | v=$1; shift 100 | case $v in 101 | d*|f*|n*|p*) ${v%${v#?}} "$@"; exit $?;; 102 | esac 103 | } 104 | 105 | _ "${0##*/}" "$@" 106 | _ "${@:-}" 107 | 108 | help 109 | -------------------------------------------------------------------------------- /bin/README.md: -------------------------------------------------------------------------------- 1 | **0x0:** upload string/file/stdin to https://0x0.st (credit: [viz](https://github.com/vizs)) 2 | 3 | **6r:** xrandr wrapper 4 | 5 | **borders:** double borders in bspwm using chwb2 (wmutils/opt) 6 | 7 | **copy:** copy text from a file using dmenu 8 | 9 | **cursor:** move the cursor to the focused window 10 | 11 | **del:** wrapper for mv/rm to trash files 12 | 13 | **down:** download from multiple sites 14 | 15 | **freeze:** simulate a screen freeze 16 | 17 | **hex:** view hex of a pixel or preview selection (https://github.com/ym1234/colorpicker) 18 | 19 | **hw:** hide window 20 | 21 | **killmen:** kill menu 22 | 23 | **launch:** basically a dmenu-run clone 24 | 25 | **linesh:** count lines in a shell script excluding comments and empty lines 26 | 27 | **menu:** dmenu clone using st & fzf 28 | 29 | **mic:** fork of [mic-over-mumble](https://github.com/pzmarzly/mic_over_mumble) (used with **tm** for toggling mic) 30 | 31 | **mnt/umnt:** mount partition in HOME or unmount a mounted partition using dmenu 32 | 33 | **pm:** minimal power menu 34 | 35 | **shortcuts:** generate aliases 36 | 37 | **temp:** make a temp dir and open a shell there 38 | 39 | **timer:** it's in the name 40 | 41 | **timetest:** check average/low/high speed of an application 42 | 43 | **util.sh:** basic clones of some posix utils in sh 44 | 45 | **vol:** script to manage volume / media 46 | 47 | **walgen:** generate a wallpaper with some static 48 | 49 | **x:** fork of https://github.com/Earnestly/sx with different filenames and DISPLAY starting at 0 50 | -------------------------------------------------------------------------------- /bin/app/!: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ! "$@" 4 | -------------------------------------------------------------------------------- /bin/app/$: -------------------------------------------------------------------------------- 1 | "$@" 2 | -------------------------------------------------------------------------------- /bin/app/adb: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/brave: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | exec /usr/bin/brave "$@" #--scroll-pixels=550 #--disable-web-fonts 4 | -------------------------------------------------------------------------------- /bin/app/chromium: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/edge: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/go: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/minecraft: -------------------------------------------------------------------------------- 1 | /home/d/bin/app/wrap -------------------------------------------------------------------------------- /bin/app/nix: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/nix-build: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/nix-channel: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/nix-collect-garbage: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/nix-copy-closure: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/nix-daemon: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/nix-env: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/nix-hash: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/nix-instantiate: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/nix-prefetch-url: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/nix-shell: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/nix-store: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/pacman: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/reboot: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | sudo cp /etc/systemd/system/getty@tty1.service.d/override.conf{.backup,} 4 | sudo systemctl reboot 5 | -------------------------------------------------------------------------------- /bin/app/stack: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/steam: -------------------------------------------------------------------------------- 1 | wrap -------------------------------------------------------------------------------- /bin/app/wrap: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # remove script location from $PATH to prevent recursion 4 | PATH=$(echo "$PATH" | sed "s|${0%/*}:||") 5 | bin=${0##*/} 6 | 7 | # main functions 8 | _() { HOME="$HOME/opt/apps" exec "$@"; } 9 | _wrap() { _ "$@"; } 10 | 11 | # special app-specific functions 12 | _boox() { boox "$@"; exec sleep 0.1; } 13 | _minecraft() { cd ~/opt/mmc; mangohud --dlsym ./multimc "$@"; } 14 | _steam() { _ lo steam "$@"; } 15 | _pacman() { sudo pacman "$@"; } 16 | #_chromium() { GTK_THEME=phocus chromium --enable-features=VaapiVideoDecoder --enable-accelerated-video-decode --ignore-gpu-blocklist "$@"; } 17 | _chromium() { GTK_THEME=phocus chromium --enable-features=VaapiVideoDecoder --use-gl=desktop --ignore-gpu-blocklist --enable-gpu-rasterization --enable-zero-copy "$@"; } 18 | _edge() { GTK_THEME=phocus microsoft-edge-dev "$@"; } 19 | _apt() { 20 | if [ -t 1 ]; then 21 | sudo apt "$@" 22 | else 23 | { sudo apt "$@" 3>&1 1>&2 2>&3 | grep -iv '^$\|stable cli interface'; } 3>&1 1>&2 2>&3 24 | fi 25 | } 26 | 27 | # make the symlinks 28 | [ "$1" = deploy ] && { 29 | for i in apt boox firefox go minecraft steam nix-shell; do 30 | ln -s wrap "${0%/*}/$i" 31 | done 32 | exit 0 33 | } 34 | 35 | case "$(command -v "_$bin")" in 36 | # wrap 37 | _wrap) _ "$@";; 38 | # command symlinked to wrap without a special case 39 | ""|/*) _ "$bin" "$@";; 40 | # command symlinked to wrap with a special function 41 | *) "_$bin" "$@";; 42 | esac 43 | -------------------------------------------------------------------------------- /bin/bar: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | trap 'kill -9 $$' INT 4 | 5 | . ~/etc/colours/three 6 | 7 | rm /tmp/bar 2>/dev/null 8 | mkfifo /tmp/bar 9 | 10 | ws() { # listen for workspace changes 11 | sleep 0.1; echo desk > /tmp/bar 12 | bspc subscribe desktop | while read -r d; do 13 | echo "$d" > /tmp/bar 14 | done 15 | } 16 | 17 | fws() { # format workspaces to be displayed on the bar 18 | unset desktops 19 | all=$(bspc query -D --names) 20 | focused=$(bspc query -D --names -d focused) 21 | for i in $all; do 22 | [ "$i" = "$focused" ] && 23 | desktops="$desktops%{F#ff$accent}$i%{F-} " || 24 | desktops="$desktops%{F#ff$fg2}$i%{F-} " 25 | done 26 | } 27 | tim() { # time 28 | while :; do 29 | date +"t%H:%M" 30 | sleep 1 31 | date +"t%H %M" 32 | sleep 1 33 | done > /tmp/bar 34 | } 35 | 36 | ws & 37 | tim & 38 | { sleep 0.1; xdo lower -a bar; } & 39 | 40 | while read -r _ < /tmp/bar; do 41 | case $_ in 42 | d*) fws;; 43 | t*) time="${_#t}";; 44 | esac 45 | printf %s "%{O25}$desktops%{r}$time%{O25}" 46 | sleep 0.02 # prevent crashing when 2 signals are sent at the same time 47 | done | lemonbar -d \ 48 | -B "#ff$bg1" \ 49 | -F "#ff$fg1" \ 50 | -f "Roboto Mono:pixelsize=10" \ 51 | -g "300x46+$(( $(mattr x $(lsm -p)) + 30 ))+30" 52 | 53 | kill -9 $$ 54 | -------------------------------------------------------------------------------- /bin/borders: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # double borders 3 | # needs chwb2 from wmutils/opt 4 | 5 | outer='0xf2f2f2' # outer 6 | inner1='0xf4baf0' # focused 7 | inner2='0xd6d8db' # normal 8 | 9 | trap 'bspc config border_width 0; kill -9 -$$' INT TERM 10 | 11 | targets() { 12 | case $1 in 13 | focused) bspc query -N -n .local.focused.\!fullscreen;; 14 | normal) bspc query -N -n .\!focused.\!fullscreen 15 | esac 16 | } 17 | bspc config border_width 4 18 | 19 | draw() { $HOME/src/opt/chwb2 -I "$inner" -O "$outer" -i "2" -o "5" $*; } 20 | 21 | # initial draw, and then subscribe to events 22 | { echo; bspc subscribe node_geometry node_focus; } | 23 | while read -r _; do 24 | [ "$v" ] || v='abcdefg' 25 | inner=$inner1 draw $(targets focused) 26 | inner=$inner2 draw $(targets normal) 27 | done 28 | -------------------------------------------------------------------------------- /bin/calc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | [ "$1" ] || set -- "$(cat)" 3 | echo "scale=5; $*" | bc 4 | -------------------------------------------------------------------------------- /bin/ch: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | printf '%s%%\n' "$(echo "scale=6; ($2)*100/($1)*${3:-1}" | bc)" 3 | -------------------------------------------------------------------------------- /bin/clipwatch: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # needs github.com/cdown/clipnotify, gnu timeout 3 | exec >/dev/null 2>&1 4 | while clipnotify; do 5 | val=$(xclip -o -sel clip) 6 | echo "$val" >> /tmp/logk 7 | { # hex colours 8 | [ "$(cat /tmp/sde)" != "$(date +%s)" ] && timeout 4 shade npreview "$val" && continue 9 | }; { # epoch timestamps 10 | [ "$val" -ge 100000000 ] && 11 | [ "$val" -le 9999999999 ] && { 12 | notify-send "$(date "-d@$val" +"%Y-%m-%d %H:%M:%S")" "($(rel "$val"))" 13 | continue 14 | } 15 | }; { # twitter IDs 16 | timeout 1 sf "${val##*/}" && continue 17 | }; { # discord IDs 18 | timeout 6 dcid "$val" no && continue 19 | } 20 | wait 21 | done 22 | -------------------------------------------------------------------------------- /bin/co: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | test -t 0 && exec xclip -sel clip "$@" || printf %s "$(cat)" | tee /dev/stderr | xclip -sel clip "$@" 3 | -------------------------------------------------------------------------------- /bin/copy: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | file="$HOME/opt/copy" 3 | var=$(cut -d' ' -f1 "$file" | grep -iv '^#' | menu) 4 | 5 | while read -r line; do 6 | case $line in 7 | "$var "*) printf %b "${line#* }" | xclip -sel clip; notify-send "copied ${line%% *}"; exit;; 8 | esac 9 | done < "$file" 10 | -------------------------------------------------------------------------------- /bin/cursor: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | # move cursor to focused window 3 | 4 | # pipe then read for clean variable names 5 | { wmp; wattr whxyb "$(pfw)"; } | { 6 | read -r mx my 7 | read -r w h x y b 8 | 9 | # check if the pointer is on the window 10 | # horizontal 11 | [ "$((mx >= x+b && mx <= w+x+b))" = 0 ] || 12 | # vertical 13 | [ "$((my >= y+b && my <= h+y+b))" = 0 ] 14 | 15 | # move cursor 16 | wmp $((x+b + w/2)) $((y+b + h/2)) 17 | } 18 | -------------------------------------------------------------------------------- /bin/darken: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # darken hex value 4 | # 5 | # credit: github/vizs 6 | # shellcheck disable=SC2046 7 | 8 | hex2rgb() { 9 | s="${1#??}" 10 | printf '%d %d %d' "0x${1%????}" "0x${s%??}" "0x${1#????}" 11 | } 12 | 13 | t=${2:-0.8} 14 | set -- $(hex2rgb "$1") 15 | 16 | for i; do 17 | a="$(echo "$i*$t" | bc)" 18 | a="${a%.*}" 19 | [ "$a" -gt 255 ] && a=255 20 | printf '%02x' "$a" 21 | done 22 | printf "\n" 23 | -------------------------------------------------------------------------------- /bin/datew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | local=$(date "+%F (%a) - %H:%M:%S") 4 | day=$(date +%j) 5 | set -- 6 | for time in \ 7 | 'wat Australia/Perth' \ 8 | 'nzt Pacific/Auckland' \ 9 | 'ist Asia/Calcutta' \ 10 | 'cet Europe/Berlin' \ 11 | 'est America/New_York' \ 12 | 'pst America/Los_Angeles' 13 | do 14 | export TZ=${time#* } name=${time% *} 15 | [ "$(date +%j)" -ge "$day" ] && j=T || j=Y 16 | 17 | eval "$name='$name $j,$(date "+%H:%M")'" 18 | done 19 | 20 | notify-send -t 3000 "$local" \ 21 | "$wat | $nzt 22 | $ist | $cet 23 | $est | $pst 24 | $(acpi)" 25 | -------------------------------------------------------------------------------- /bin/dcid: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # https://discord.com/developers/docs/reference#snowflakes 3 | # get information related to discord ID 4 | #set -x 5 | #exec >/home/d/log 2>&1 6 | 7 | unset bot 8 | 9 | [[ "${1##*[-/]}" = "$1" ]] || set -- "${1##*[-/]}" "$2" "nonzero" 10 | [[ "$1" -gt 11111111111 ]] && [[ "$1" -lt 1100000000000000001 ]] || exit 1 11 | shopt -s lastpipe # allow variables from pipes 12 | 13 | # age # 14 | # convert to binary, trim useless stuff, and go back to decimal 15 | j=$(echo "obase=2; $1" | bc | head -c-23) 16 | j=$(echo "ibase=2; $j" | bc) 17 | s=${j%???} ms=${j#$s} 18 | 19 | # ID + "discord epoch" (2015) -> human readable 20 | date="$(date -d @$((s+1420070400)) +"%Y-%m-%d %H:%M:%S").$ms 21 | ($(rel "$((s+1420070400))"))" 22 | #notify-send "$date" 23 | #printf "$(date -d @$((s+1420070400)) +"%s")" | xclip -sel clip 24 | #exit 25 | 26 | # name/pfp/printing # 27 | [ "$3" ] || 28 | curl -Ss \ 29 | -H "Authorization: $DCTOKEN" \ 30 | -X GET \ 31 | https://discord.com/api/v9/users/"$1" | jq | tr -d '":,' | while read -r fe va; do 32 | [[ "$fe" =~ username ]] && user=$va 33 | [[ "$fe" =~ bot && "$va" == true ]] && bot=' [BOT]' 34 | [[ "$fe" =~ discrimi ]] && numb=\#$va 35 | [[ "$fe" =~ avatar ]] && { 36 | [[ "$va" = null ]] && continue 37 | [[ "$va" =~ ^a_ ]] && ext=.gif || ext=.png 38 | pfp=https://cdn.discordapp.com/avatars/$1/$va$ext\?size=1024 39 | } 40 | done 41 | printf '%s\n%s\n%s\n%s\n' "$user$numb" "${bot# }" "$1 / $date" "$pfp" 42 | 43 | read -r a < /proc/$PPID/comm 44 | [[ "$a" = systemd ]] || [[ "$2" = no ]] && { 45 | rm /tmp/img 46 | [[ "$pfp" =~ http ]] && curl -Ls "${pfp%1024}128" -o \ 47 | /tmp/img && im='-I /tmp/img' || im= 48 | a="$user$numb$bot" b="$1"$'\n'"$date" 49 | [ "$user" ] || a=$b b= 50 | dunstify $im -- "$a" "$b" 51 | }; true 52 | -------------------------------------------------------------------------------- /bin/del: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # simple trasher 3 | # (needs GNU mv) 4 | 5 | td="$HOME/opt/trash" 6 | mkdir -p "$td" 7 | 8 | for o; do 9 | case "$o" in 10 | --) break;; 11 | -*) rm "$@"; exit;; 12 | esac 13 | done 14 | 15 | mv --backup=t "$@" "$td" 16 | -------------------------------------------------------------------------------- /bin/dirty: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # print dirty git repos 3 | 4 | for i in ~/opt/dots ~/src/*; do 5 | cd "$i" >/dev/null 2>&1 || continue 6 | git status --porcelain 2>/n | grep -qiv '^??' && 7 | echo "${i##*/}" 8 | done 9 | -------------------------------------------------------------------------------- /bin/down: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # a ~~simple~~ script to download from multiple places 3 | 4 | fun() { 5 | [ "$1" = m ] && return 6 | out=${2:-${1##*/}} 7 | 8 | # dirs 9 | [ -d "$out" ] && out=$2/${1##*/} 10 | 11 | # # change filename if already existing 12 | # ! [ "$2" ] && [ -e "$out" ] && out=$out-0 && 13 | # while [ -e "$out" ]; do 14 | # out=${out%-*}-$(( ${out##*-} + 1 )) 15 | # done 16 | 17 | # print url 18 | printf '\n%b\n' "\033[35m${1#http*://}\033[0m" 19 | 20 | # shorthand git | ex: user/repo 21 | [[ "$1" =~ ^[A-Za-z0-9-]*/[^/]*$ ]] && { 22 | git clone "https://github.com/$1" $2; return 23 | } 24 | 25 | # search for most popular repo | ex: repo 26 | [[ "$1" =~ ^[a-zB-Z0-9_-]*$ ]] && { 27 | # get first search result 28 | repo=$(curl -s https://api.github.com/search/repositories?q="$1" \ 29 | | grep -i "full_name.*/$1\"" | head -n1 | sed -n 's/.*: "\(.*\)".*/\1/p') 30 | 31 | [ "$repo" ] && git clone "https://github.com/$repo" $2 32 | return 33 | } 34 | 35 | # add missing https 36 | case $1 in 37 | http*) ;; 38 | *) set -- "https://$1" "$2" 39 | esac 40 | 41 | 42 | case $1 in 43 | # individual file github urls 44 | *github*/raw/* | *github*/blob/* | *github*/releases/download/*) 45 | curl -L#o "$out" "${1//\/blob\//\/raw\/}";; 46 | 47 | # diff urls 48 | *github*/commit/*|*github*/commits/*) 49 | curl -L#o "$out" "${1%.diff}.diff";; 50 | 51 | # git repos 52 | https://A*) git clone "https://aur.archlinux.org/${1#*A}.git" $2;; 53 | *.git|*git.*|*github.com*|*gitlab*) git clone "$1" $2;; 54 | 55 | # youtube 56 | *youtu.be*|*youtube.com*) yt-dlp "$1" \ 57 | --geo-bypass --embed-subs --add-metadata \ 58 | --ignore-errors -o "${2:-%(title)s}" \ 59 | -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]';; 60 | 61 | # unsplash 62 | *unsplash.com*) v=${1%/download*} 63 | curl -L#o "${2:-${v##*/}.jpeg}" "$v/download?force=true";; 64 | 65 | # other 66 | *) curl -L#o "$out" "$1";; 67 | esac 68 | } 69 | 70 | # multiple urls 71 | if [ $# -le 2 ]; then 72 | fun "${1%/}" "$2" 73 | elif [ "$2" = -b ]; then 74 | git clone "$@" 75 | elif [ "$1" = e ]; then 76 | fun "https://cdn.discordapp.com/emojis/$2" "$3-$2" && 77 | mime=$(file -b --mime-type "$3-$2") && 78 | mv "$3-$2" "$3-$2.${mime##*/}" 79 | else 80 | for i; do fun "$i"; done 81 | fi 82 | -------------------------------------------------------------------------------- /bin/emoji: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | # copy an emoji 3 | 4 | chosen=$(sed -n 's/^[^ ]* \+//p' ~/opt/emojilist | menu) 5 | [ "$chosen" ] 6 | set -- $(grep -- "$chosen" ~/opt/emojilist) 7 | 8 | printf %s "$1" | xclip -selection clipboard 9 | notify-send "copied '$1'" 10 | -------------------------------------------------------------------------------- /bin/ff-sync: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | exit 3 | 4 | date -Im | tr 'T' ' ' >> /tmp/ff-log 5 | 6 | static="static-$1" 7 | mem="/dev/shm/firefox-$1-$USER" 8 | 9 | cd ~/etc/.mozilla/firefox 10 | [ -e "$mem" ] || mkdir -m0700 "$mem" 11 | 12 | [ "$(readlink "$1")" != "$mem" ] && { 13 | mv "$1" "$static" 14 | ln -s "$mem" "$1" 15 | } 16 | 17 | if [ -e "$1/unpacked" ]; then 18 | rsync -av --delete --exclude unpacked "$1/" "$static/" 19 | else 20 | rsync -av "$static/" "$1/" 21 | touch "$1/unpacked" 22 | fi 23 | -------------------------------------------------------------------------------- /bin/focus: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # focus window 3 | 4 | # issues with this method (simple bspc node -f): 5 | # - https://i.imgur.com/BoBAHcu.png 6 | # - less than perfect focusing of floating windows (even with directional_focus_tightness) 7 | 8 | # issue with previous method (super cool script by github.com/turquoise-hexagon) 9 | # - https://i.imgur.com/svQPkKH.png 10 | 11 | bspc node -f $1.local #|| bspc monitor -f $1 12 | -------------------------------------------------------------------------------- /bin/freeze: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # simulate a screen freeze 3 | 4 | shotgun /tmp/pic.png 5 | xrandr | grep -o 'current[0-9x ]*' | { 6 | # vars are local to subshell, so i have to trap from the subshell 7 | trap 'pkill -USR2 dunst; kill $pid' TERM EXIT 8 | read -r _ w _ h _ 9 | pkill -USR1 dunst 10 | feh --class freeze -g "${w}x$((h+2))+0+-1" /tmp/pic.png & 11 | pid=$! 12 | wait $pid 13 | } 14 | -------------------------------------------------------------------------------- /bin/fzfmenu: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # fzf dmenu alternative 3 | 4 | exec 2>>"$HOME/usr/cache/menu.log" 5 | 6 | [ "$(pgrep -x "${0##*/}")" = "$$" ] || exit 1 7 | 8 | in=/tmp/fzfmenu out=/tmp/fzfmenuout 9 | 10 | : > $out 11 | [ -t 0 ] || cat > $in 12 | 13 | while [ "$1" ]; do 14 | [ "$1" = -p ] && prompt=" $2" && break 15 | shift 16 | done 17 | 18 | args="--cycle --pointer=' ' --no-info --reverse --print-query" 19 | colours="--color='bg+:0,gutter:-1,fg+:15,fg:7,prompt:16,hl:7,hl+:15'" 20 | 21 | st -g 48x16 -c menu -e sh -c \ 22 | "fzf --prompt='$prompt | ' $args $colours < $in > $out" 23 | 24 | [ "$(wc -l < $out)" -gt 1 ] && exec tail -n+2 $out 25 | cat $out 26 | cat $out >&2 27 | -------------------------------------------------------------------------------- /bin/gkif: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | tim="$(date +%s)" dir="${XDG_CACHE_HOME:-$HOME/.cache}/gkif" 4 | mkdir -p "$dir" 5 | 6 | # don't send notifications (stop interruptions) 7 | pkill -USR1 dunst 8 | 9 | # record 10 | pixfmt=yuv444p scr -c -e -n -r50 -x '-threads 4 -t 3 -c:v h264' -b12 "$dir/00.mp4" || { notify-send "failed"; pkill -USR2 dunst; exit 1; } 11 | 12 | # re-enable notifications 13 | pkill -USR2 dunst 14 | 15 | # trim -> convert to gif -> open dragandrop dialog 16 | #notify-send "trimming video" && 17 | #eval "$(ffprobe -v quiet -show_streams ~/file.mp4 | grep '^[wh]')" && 18 | 19 | #ffmpeg -y -v error -sseof -3 -i "$dir/00.mp4" -b:v 12M -c:v hevc_nvenc -pix_fmt yuv444p "$dir/000.mp4" 20 | 21 | ##notify-send "generating palette" && 22 | ffmpeg -y -v error -i "$dir/00.mp4" -vf "fps=50,palettegen" "/tmp/palette.png" 23 | # 24 | #wait 25 | # 26 | notify-send "converting to gif" && 27 | ffmpeg -y -v error -i "$dir/00.mp4" -i "/tmp/palette.png" \ 28 | -lavfi "fps=50 [x]; [x][1:v] paletteuse" "$dir/$tim.gif" && 29 | #gifski "$dir/00.mp4" -r 50 --fast -o "$dir/$tim.gif" 30 | dragon --and-exit "$dir/$tim.gif" 31 | -------------------------------------------------------------------------------- /bin/gs: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | curl -Lso /dev/null -w '%{url_effective}' "${1:-$(xclip -sel clip -o)}" | co 3 | -------------------------------------------------------------------------------- /bin/hi: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #var=$(zsh -ic "fc -R; fc -nl 1 | grep '$*' | grep -iv '"'hist$\|^hi\|;\|\\\||\|^v\b\|^rm\b\|^cp\b\|^mv\b'"' | tail -n1") 4 | var=$(zsh -ic "fc -R; fc -nl 1 | grep -- '$*' | grep -iv '"'hist$\|^hi\|\\$\|^v\b\|^rm\b\|^cp\b\|^mv\b'"' | tail -n1") 5 | 6 | notify-send "cmd: $var" 7 | echo ": $(date +%s):0;$var" >> "${ZDOTDIR:-$HOME}/zsh-history" 8 | #echo ": $(date +%s):0;$var # hist" >> "${ZDOTDIR:-$HOME}/zsh-history" 9 | zsh -ic ". ~/etc/sh/aliases; $var" 10 | -------------------------------------------------------------------------------- /bin/hw: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # hide window 3 | 4 | dir="$XDG_CACHE_HOME/hw" 5 | mkdir -p "$dir" 6 | read -r win < "$dir/$1" 7 | 8 | read -r del < "$dir/0" 9 | [ "$1" = 0 ] && exec echo true > "$dir/0" 10 | [ "$del" = true ] && exec rm "$dir/"$1 "$dir/0" 11 | 12 | #[ "$1" = 0 ] && { 13 | # rm "$dir"/[2-9] 14 | # exit 15 | #} 16 | 17 | if [ "$2" = c ]; then 18 | [ "$(wname "$win")" ] || win="$(pfw)" 19 | echo "$win" > "$dir/$1" 20 | else 21 | wname "$win" || 22 | rm "$dir/$1" 23 | fi 24 | 25 | #mapw -t "$win" 26 | bspc node "$win" -g hidden -t floating 27 | bspc node "$win" -d "$(bspc query -D -d)" -f 28 | -------------------------------------------------------------------------------- /bin/im: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | f() { feh -Z. -g 1000x700 "$@"; } 4 | [ "$#" -gt 1 ] && { f "$@"; exit; } 5 | 6 | case "$1" in 7 | http*) f "$1";; 8 | *) f --start-at "$1" "$(dirname "$1")";; 9 | esac 10 | -------------------------------------------------------------------------------- /bin/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | _() { 4 | printf '%s\n' "$*" 5 | } 6 | 7 | echo '%sudo ALL=(ALL) NOPASSWD: /usr/sbin/kbdrate,/usr/bin/apt,/usr/bin/mount,/usr/bin/umount,/usr/local/bin/cpm,/usr/bin/systemctl' >> /etc/sudoers 8 | 9 | user=$(grep ':1000:' /etc/passwd) 10 | user=${user%%:*} 11 | 12 | systemctl disable gdm3 13 | 14 | # @TODO FIX 15 | _ Installing programs 16 | 17 | apt-get install -y \ 18 | arandr atool bspwm chromium feh firefox lxappearance mumble mumble-server \ 19 | ntfs-3g neovim mpv transmission-cli transmission-daemon tree rxvt-unicode \ 20 | zsh sxhkd steam 21 | 22 | 23 | cat << CMD | sudo -u "$user" sh 24 | _() { printf '%s\n' "$*"; } 25 | 26 | _ 'installing some fonts' 27 | _ ' - roboto condensed' 28 | 29 | curl -Ls https://fonts.google.com/download?family=Roboto%20Condensed \ 30 | -o /tmp/Roboto-Condensed.zip 31 | unzip -o /tmp/Roboto-Condensed.zip -d "\$HOME/usr/fonts" 32 | 33 | 34 | _ 'installing dotfiles' 35 | mkdir -p \$HOME/opt 36 | git clone https://github.com/6gk/polka \$HOME/opt/dots 37 | cd \$HOME/opt/dots 38 | ./deploy y 39 | 40 | 41 | mkdir -p \$HOME/opt/git 42 | 43 | printf 'manually installing some programs' 44 | 45 | _ " - vim-plug" 46 | curl -fLo "\$HOME/usr/nvim/site/autoload/plug.vim" --create-dirs \ 47 | https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim 48 | 49 | _ " - scr" 50 | git clone https://github.com/6gk/scr "\$HOME/opt/git/scr" && 51 | ln -s "\$HOME/opt/git/scr/scr" "\$HOME/bin/scr" 52 | 53 | _ " - st" 54 | git clone https://github.com/6gk/st "\$HOME/opt/git/st" && 55 | cd "\$HOME/opt/git/st" && 56 | make clean install 2>&1 |: 57 | 58 | _ " - tabbed" 59 | git clone https://github.com/6gk/tabbed "\$HOME/opt/git/tabbed" && 60 | cd "\$HOME/opt/git/tabbed" && 61 | make clean install 2>&1 |: 62 | 63 | _ " - dmenu" 64 | git clone https://gitlab.com/6gk/dmenu "\$HOME/opt/git/dmenu" && 65 | cd "\$HOME/opt/git/dmenu" && 66 | make clean install 2>&1 |: 67 | 68 | _ " - colorpicker" 69 | git clone https://github.com/ym1234/colorpicker "\$HOME/opt/git/colorpicker" && 70 | cd "\$HOME/opt/git/colorpicker" && 71 | make clean install 2>&1 |: 72 | 73 | _ " - wmutils" 74 | git clone https://github.com/wmutils/core "\$HOME/opt/git/core"; 75 | cd "\$HOME/opt/git/core" && 76 | make clean install 2>&1 |: 77 | 78 | git clone https://github.com/wmutils/opt "\$HOME/opt/git/opt"; 79 | cd "\$HOME/opt/git/opt" && 80 | make clean install 2>&1 |: 81 | 82 | _ " - mmutils" 83 | git clone https://github.com/pockata/mmutils "\$HOME/opt/git/mmutils" 84 | cd "\$HOME/opt/git/mmutils" && 85 | make clean install 2>&1 |: 86 | 87 | _ " - boox" 88 | git clone https://github.com/BanchouBoo/boox "\$HOME/opt/git/boox" 89 | cd "\$HOME/opt/git/boox" && 90 | make && 91 | make install 92 | CMD 93 | 94 | #_ changing shell to zsh 95 | #chsh -s /bin/zsh "$user" 96 | 97 | _ getting rid of the annoying beep 98 | rmmod pcspkr 99 | echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf 100 | 101 | _ Disabling mouse acceleration 102 | mkdir -p /etc/X11/xorg.conf.d/ 103 | [ -f /etc/X11/xorg.conf.d/50-mouse-acceleration.conf ] || 104 | cat << EOF > /etc/X11/xorg.conf.d/50-mouse-acceleration.conf 105 | Section "InputClass" 106 | Identifier "My Mouse" 107 | MatchIsPointer "yes" 108 | Option "AccelerationProfile" "-1" 109 | Option "AccelerationScheme" "none" 110 | Option "AccelSpeed" "-0.75" 111 | EndSection 112 | EOF 113 | 114 | _ Shortening systemd timeout 115 | sed -i \ 116 | -e 's/^#DefaultTimeoutstopSec=.*/DefaultTimeoutstopSec=4s/g' \ 117 | -e 's/^#DefaultTimeoutStartSec=.*/DefaultTimeoutStartSec=15s/g' \ 118 | /etc/systemd/system.conf 119 | 120 | systemctl daemon-reload 121 | 122 | _ Adding scripts to send a notification when a usb is removed/inserted 123 | mkdir -p /usr/local/bin /usr/local/sounds; 124 | o=https://raw.githubusercontent.com/6gk/polka/master/opt 125 | curl -L $o/usb-remove -o /usr/local/bin/usb-remove; 126 | curl -L $o/usb-insert -o /usr/local/bin/usb-insert; 127 | curl -L $o/usb.rules -o /etc/udev/rules.d/usb.rules; 128 | curl -L $o/usb-insert.wav -o /usr/local/sounds/usb-insert.wav; 129 | curl -L $o/usb-remove.wav -o /usr/local/sounds/usb-remove.wav; 130 | 131 | echo "Changing a few things in journald to possibly speed up boot time" 132 | sed -i \ 133 | -e 's/^#Storage=.*/Storage=auto/' \ 134 | -e 's/^#SystemMaxFiles=.*/SystemMaxFiles=5/' \ 135 | -e 's/^#SystemMaxFileSize=.*/SystemMaxFileSize=1G/' \ 136 | /etc/systemd/journald.conf 137 | 138 | 139 | cat << EOF > /etc/bash.bashrc 140 | [ -e "\${XDG_CONFIG_HOME/sh/bashrc:=\$HOME/etc}" ] && . "\$XDG_CONFIG_HOME/sh/bashrc" 141 | EOF 142 | cat << EOF > /etc/zsh/zshenv 143 | # Global Order: zshenv, zprofile, zshrc, zlogin 144 | [ "$ZDOTDIR" ] || export ZDOTDIR="$HOME/etc/sh" 145 | 146 | : ${XDG_CONFIG_HOME:=$HOME/etc} \ 147 | ${XDG_DATA_HOME:=$HOME/usr} ${XDG_CACHE_HOME:=$HOME/usr/cache} 148 | export XDG_CONFIG_HOME XDG_DATA_HOME XDG_CACHE_HOME 149 | EOF 150 | 151 | sed -i 's/\(.*esound-protocol-unix\)/#\1/g' /etc/pulse/default.pa 152 | 153 | _ adding nodelay to pam so sudo doesn\'t take a lifetime to fail 154 | sed -i "s/pam_unix.so.*/pam_unix.so nullok_secure nodelay/" /etc/pam.d/common-auth 155 | 156 | _ finished 157 | -------------------------------------------------------------------------------- /bin/killmen: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | # kill menu 3 | 4 | m() {( 5 | n=/dev/null 6 | command -v menu >$n && exec menu 7 | command -v rofi >$n && exec rofi -dmenu 8 | command -v dmenu >$n && exec dmenu 9 | )} 10 | 11 | set -- $(pgrep . -l | m) 12 | 13 | [ "$1" ] && kill -9 "$1" 14 | -------------------------------------------------------------------------------- /bin/launch: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | TERM='' IFS=: 4 | set -- $PATH 5 | 6 | # due to it being easier to get the selection than the clipboard, sync 7 | { xclip -sel clip -o | xclip -sel prim; } & 8 | 9 | var=$(find "$@" -type f,l -printf '%f\n' -executable -maxdepth 1 \ 10 | | sort | uniq | menu) 11 | 12 | echo ": $(date +%s):0;$var" >> "${ZDOTDIR:-$HOME}/zsh-history" 13 | bash << EOF 14 | . ~/etc/sh/aliases 15 | $var 16 | EOF 17 | #zsh -c ". ~/etc/sh/aliases; $var" & 18 | #zsh -ic "$comm | cat" # echo "[$(date +%Y-%m-%d_%H-%M-%S)] $comm" >> \ 19 | # "${XDG_CACHE_HOME:=$HOME/.cache}/menulogverbose" 2>&1 20 | -------------------------------------------------------------------------------- /bin/linesh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # count lines in shell script 3 | grep -icv '^[[:space:]]*#\|^$' "$@" 4 | -------------------------------------------------------------------------------- /bin/lock: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | trap 'kill -9 -$$ %1 %2' EXIT INT 4 | arg=; [ "$1" ] || { arg=-b; } #vol pause & } 5 | 6 | # unfocus by making a 1x1 hidden window 7 | bspc rule -a yeetfocus state=floating focus=on rectangle=1x1+1+1 border=off 8 | st -c yeetfocus -g 1x1 -e pause & 9 | 10 | #{ sleep 1; xset dpms force off; } & 11 | #unclutter -idle 1 -jitter 99999 & # hide cursor 12 | pkill -USR1 dunst 13 | xset dpms 6 6 6 14 | p3 s 15 | sudo xtrlock $arg 16 | p1 s 17 | xset dpms 600 600 600 18 | pkill -USR2 dunst 19 | kill %1 %2 20 | -------------------------------------------------------------------------------- /bin/m: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | var=right #bottom/right 4 | 5 | #xrandr --output DVI-D-0 --off 6 | #xcalib -c 7 | #xcalib -v -red 1 4.3 100 -green 1 4.3 97 -blue 1 4.5 96 -alter 8 | ##redshift -o -l 0:0 -m randr:crtc=1 -P -t 7000:7000 -g 1:1.1:1.1 -b 1 9 | # 10 | 11 | #--output HDMI-0 --mode 1920x1080 -r 60 --pos 0x100 --rotate normal --scale 1x1 --primary \ 12 | #--output DVI-D-0 --mode 1440x900 -r 60 --pos 1920x0 --rotate right --scale 1x1 \ 13 | #--output HDMI-0 --off \ 14 | 15 | #--output HDMI-0 --off \ 16 | 17 | case $var in 18 | r*) 19 | xrandr \ 20 | --output DP-0 --mode 2560x1440 --panning 2560x1440+1920+0 -r 165 --pos 1920x0 --rotate normal --reflect normal --scale 1x1 --primary \ 21 | --output HDMI-0 --mode 1920x1080 --panning 1920x1080+0+110 -r 75 --pos 0x110 --rotate normal --reflect normal --scale 1x1 22 | ;; 23 | b*) 24 | xrandr \ 25 | --output DP-0 --mode 2560x1440 -r 165 --pos 0x1080 --rotate normal --reflect normal --scale 1x1 --primary \ 26 | --output HDMI-0 --mode 1920x1080 -r 75 --pos 320x0 --rotate normal --reflect normal --scale 1x1 27 | ;; 28 | esac 29 | #--output HDMI-0 --mode 1920x1080 -r 75 --pos 2560x360 --rotate normal --scale 1x1 30 | #--output DVI-D-0 --mode 1440x900 -r 60 --pos 0x540 --rotate normal --scale 1x1 \ 31 | #--output DVI-D-0 --mode 1440x900 -r 60 --right-of HDMI-0 --rotate normal --scale 1x1 32 | #xrandrr \ 33 | # --output DVI-D-0 --mode 1440x900 -r 60 --pos 0x0 --rotate normal --scale 1x1 --primary \ 34 | # --output HDMI-0 --mode 1920x1080 -r 60 --right-of DVI-D-0 --rotate normal --scale 1x1 35 | #--output HDMI-0 --mode 1920x1080 -r 60 --pos 1440x0 --rotate normal --scale 1x1 36 | #xrandr --output DVI-D-0 --off --output HDMI-0 --primary --mode 1920x1080 -r 72 --pos 0x0 --rotate normal --output DP-0 --off --output DP-1 --off 37 | { 38 | #sleep 0.5 39 | nvidia-settings -l --config=$HOME/opt/nvidia-settings-rc 40 | #redshift -o -l 0:0 -m randr:crtc=1 -P -t 6500:6500 -g 0.85:0.94:1.0 -b 0.7 41 | sleep 0.5 42 | #redshift -o -l 0:0 -m randr:crtc=2 -P -t 7900:7900 -g 0.95:0.95:0.95 -b 1 43 | #redshift -o -l 0:0 -m randr:crtc=1 -P -t 7600:7600 -g 0.97:1:1 -b 1 44 | #redshift -o -l 0:0 -m randr:crtc=0 -P -t 7000:7000 -b 0.34 #-g 0.79:0.98:1.0 -b 1 45 | #xrandr --output eDP-1 --primary 46 | #redshift -o -l 0:0 -m randr:crtc=2 -P -b 0.94 -g 0.95:0.95:0.88 47 | : 48 | } & 49 | pap 50 | -------------------------------------------------------------------------------- /bin/ma: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | TIMEFORMAT=$'took \033[34m%Rs\033[0m' 4 | dewit() { 5 | printf '\033[35m $ %s \033[0m\n' "$*" 6 | time "$@" 7 | } 8 | 9 | PATH=$(echo "$PATH" | sed "s|${0%/*}:||") 10 | git rev-parse --git-dir >/dev/null 2>&1 && dewit git submodule update --init --recursive 11 | set -e 12 | if [ -e "Makefile" ] || [ -e "makefile" ]; then 13 | [ "$1" = install ] || [ "$SUDO_USER" ] && 14 | dewit exec sudo make install 15 | 16 | dewit make "$@" 17 | elif [ -e "build.sh" ]; then 18 | [ "$1" = install ] && 19 | dewit exec ./build.sh install 20 | 21 | dewit ./build.sh build 22 | elif [ -e "meson.build" ]; then 23 | [ "$1" = install ] && 24 | dewit exec sudo ninja -C build install 25 | 26 | dewit meson build 27 | dewit ninja -C build 28 | elif [ -e "PKGBUILD" ]; then 29 | dewit makepkg -si --skippgpcheck --noconfirm "$@" 30 | elif [ -e "CMakeLists.txt" ]; then 31 | dewit cmake . "$@" 32 | elif [ -e "Cargo.toml" ]; then 33 | dewit cargo build --release "$@" 34 | elif [ -e "make.sh" ]; then 35 | chmod +x make.sh 36 | dewit ./make.sh "$@" 37 | elif [ -e "configure" ]; then 38 | dewit ./configure 39 | dewit make "$@" 40 | elif [ -e "autogen.sh" ]; then 41 | dewit ./autogen.sh 42 | dewit ./configure 43 | dewit make "$@" 44 | elif [ -e "./gradlew" ]; then 45 | chmod +x gradlew 46 | export JAVA_HOME=/usr/lib/jvm/java-17-openjdk 47 | export HOME=$HOME/opt/apps 48 | dewit ./gradlew "-Duser.home=$HOME/opt/apps" "$@" 49 | fi 50 | -------------------------------------------------------------------------------- /bin/menu: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | dmenu "$@" #| { 4 | # IFS='' read -r opt 5 | # [ "$opt" ] && echo "[$(date +%Y-%m-%d_%H-%M-%S)] $opt" >> ~/opt/menulog 6 | # echo "$opt" 7 | #} 8 | -------------------------------------------------------------------------------- /bin/mic: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Use your phone as a mic through mumble 3 | # 4 | # github.com/pzmarzly/mic_over_mumble 5 | # Copyright 2018 Pawel Zmarzly 6 | # MIT License 7 | # 8 | # I claim no credit, this is a version with a few changes, notably: 9 | # - not requiring the terminal to stay open (run `mic &!`) 10 | # - removing functions, the original used way too many 11 | # (function > function > pipe into function 12 | # which has a name longer than the command) 13 | # shellcheck disable=SC2086 14 | 15 | # toggle mic 16 | { [ "$1" = on ] && echo true > /tmp/mic; } || 17 | { [ "$1" = off ] && echo false > /tmp/mic; } && set -- toggle 18 | [ "$1" = toggle ] || [ "$1" = query ] && { 19 | #input=$(pactl list sink-inputs | grep -i 'media.name = "Mumble' -B20 \ 20 | # | grep -o 'Input #[0-9]\+') 21 | #input=$(pactl list sources | grep -i '\bName: alsa_input.pci-0000_00_1b.0.analog-stereo' -B3 \ 22 | input=$(pactl list sources | grep -i '\bName: alsa_input.*MH752' -B3 \ 23 | | grep -o 'Source #[0-9]\+') 24 | 25 | [ "$input" ] || { notify-send "mic is not running"; exit 1; } 26 | touch /tmp/mic 27 | read -r v < /tmp/mic 28 | 29 | case $v in 30 | true) a=false b=unmuted c=1200 d= h=00aaff;; 31 | *) a=true b=muted c=800 d=- h=ff0000 32 | esac 33 | 34 | if [ "$1" = query ]; then 35 | [ "$v" = true ] && b=muted || b=unmuted; c=300 36 | else 37 | echo "$a" > /tmp/mic 38 | #pactl set-sink-input-mute "${input##*#}" "$a" 39 | pactl set-source-mute "${input##*#}" "$a" 40 | fi 41 | 42 | xset ${d}led 43 | 44 | #exec dunstify -r 20 -t "$c" "$b" 45 | #exec micbar "$a" 46 | #exec sudo python $HOME/src/g403-led/g403-led.py solid "$h" 47 | 48 | ## dunstrc: 49 | # [mike] 50 | # background = "#b6d0fd" 51 | # summary = "muted" 52 | # format = " ​ " 53 | # history_ignore = yes 54 | # 55 | # [mic] 56 | # background = "#eb9797" 57 | # summary = "unmuted" 58 | # format = "​ ​" 59 | # history_ignore = yes 60 | } 61 | 62 | exit 63 | 64 | exec 2>/dev/null 65 | [ "$(pgrep -x "${0##*/}")" = $$ ] || exit 1 66 | trap 'pkill mumble' 2 67 | 68 | # prepare environment 69 | mkdir -p "${XDG_DATA_HOME:=$HOME/.local/share}/mic-mumble" 70 | 71 | cd "$XDG_DATA_HOME/mic-mumble" || exit 1 72 | #rm murmur* # idk it sometimes doesnt work without this.. :shrug: 73 | 74 | echo "bonjour=true" > murmur.ini 75 | echo "bandwidth=130000" >> murmur.ini 76 | 77 | if [ ! -e ./initdone ]; then 78 | echo "You will need to configure Mumble client to use the lowest possible latency." 79 | echo "We will start Mumble now. Please complete setup wizard and go to settings to increase quality and decrease latency." 80 | echo "Also, mute your microphone (if you have one) in Mumble." 81 | echo "Then exit Mumble." 82 | mumble |: 83 | touch ./initdone 84 | fi 85 | 86 | # set up 87 | echo "Starting Mumble server (murmurd)..." 88 | murmurd -ini ./murmur.ini & 89 | # Murmur forks, so the PID acquired by `$!` 90 | # wouldn't help us much. 91 | sleep 5 92 | 93 | echo "Starting Mumble client..." 94 | mumble "mumble://localhost" |: & 95 | mumble_pid=$! 96 | # Mumble is slow to launch, and the 97 | # user may need to click on OK button. 98 | sleep 8 99 | 100 | echo "Changing PulseAudio configuration..." 101 | echo "Adding sink..." 102 | moduleid=$(pactl load-module \ 103 | module-null-sink \ 104 | sink_name=Loopback_of_Mumble \ 105 | sink_properties=device.description=Loopback_of_Mumble) 106 | sleep 1 107 | 108 | var=$(pacmd list-sinks | grep -i -B2 'loopback_of_mumble') 109 | set -- ${var##*index:?} 110 | sinkid=$1 111 | 112 | var=$(pacmd list-sink-inputs | grep -B20 -e 'client.*Mumble') 113 | set -- ${var##*index:?} 114 | mumbleid=$1 115 | 116 | pacmd move-sink-input "$mumbleid" "$sinkid" 117 | 118 | echo "Adding a virtual microphone..." 119 | SOURCE_MODULEid=$(pactl load-module \ 120 | module-virtual-source \ 121 | source_name=VirtualMic \ 122 | master=Loopback_of_Mumble.monitor \ 123 | source_properties=device.description=VirtualMic) 124 | 125 | pactl set-default-source VirtualMic 126 | 127 | echo "Done." 128 | 129 | wait $mumble_pid 130 | 131 | echo "Shutting down..." 132 | sleep 2 133 | echo "Stopping Mumble server..." 134 | pkill murmurd 135 | echo "Restoring PulseAudio configuration..." 136 | pactl unload-module "$moduleid" 137 | pactl unload-module "$SOURCE_MODULEid" 138 | -------------------------------------------------------------------------------- /bin/micbar: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | case $1 in 4 | 0|off|false) ;; 5 | 1|on|true) exec pkill -9 "${0##*/}|lemonbar";; 6 | esac 7 | 8 | IFS=' +x' 9 | monitor=$(xrandr --current) 10 | monitor=${monitor##*primary } 11 | set -- ${monitor%%(*} 12 | 13 | printf '%s\n' "%{B#ff0000}%{O9999}" | 14 | lemonbar -d -p -g "15x15+$(($3+$1-19))+$(($4+4))" 15 | -------------------------------------------------------------------------------- /bin/mnt: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # mount disk 3 | set -e 4 | . ~/etc/colours/current 5 | 6 | d() case $LABEL in 7 | Windows) echo "/win";; 8 | *) echo "${1:-$HOME}/dev/$NAME";; 9 | esac 10 | 11 | lsblk -Po NAME,SIZE,MOUNTPOINT,FSTYPE,LABEL | while read -r a; do 12 | eval "$a" 13 | 14 | [ "$FSTYPE" ] && [ ! "$MOUNTPOINT" ] && 15 | printf "%-4s:%s:%s:-> %s\n" \ 16 | "$NAME" \ 17 | "$SIZE" \ 18 | "${LABEL:-unnamed}" \ 19 | "$(d \~)" 20 | 21 | done | column -ts':' -o' ' | menu -p mount | { 22 | read -r NAME _ 23 | eval "$(lsblk -Polabel "/dev/$NAME")" 24 | mkdir -p "$(d)" 25 | sudo mount -o "umask=000" "/dev/$NAME" "$(d)" 26 | notify-send summary "$NAME: $LABEL\n$(d \~)" 27 | } 28 | -------------------------------------------------------------------------------- /bin/move: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # move window 3 | # by (github) windelicato, Chrysostomus, 6gk 4 | 5 | dir=$1 size=${2:-40} rot1=270 rot2=270 6 | 7 | # If the window is floating, move it 8 | bspc query -T -n | grep -q '"state":"floating"' && { 9 | case "$dir" in 10 | north) switch="-y" sign="-";; 11 | east) switch="-x" sign="+";; 12 | south) switch="-y" sign="+";; 13 | west) switch="-x" sign="-";; 14 | esac 15 | exec xdo move $switch "$sign$size" 16 | } 17 | 18 | # Otherwise, the window is tiled: switch with window in given direction 19 | if [ "$(bspc query -N -n .local.\!floating | wc -l)" != 2 ]; then 20 | [ "$dir" = north ] && odir=north || odir=south 21 | 22 | bspc node "$dir.local" -p "$odir" && bspc node -n "$dir.local" || 23 | { bspc node @/ -p "$dir" && bspc node -n @/ || 24 | bspc node -s next.local && bspc node -n @/; } 25 | bspc node @/ -p cancel 26 | else 27 | case "$dir" in 28 | north) opdir=south nxdir=east rot2=90;; 29 | east) opdir=west nxdir=south rot1=90;; 30 | south) opdir=north nxdir=west rot1=90;; 31 | west) opdir=east nxdir=north rot1=90;; 32 | esac 33 | 34 | bspc node -s "$dir.local" || bspc query -N -n "$opdir".local || 35 | { bspc query -N -n "$nxdir".local && rot=$rot1 || rot=$rot2; } 36 | bspc node @/ -R "$rot" 37 | fi 38 | -------------------------------------------------------------------------------- /bin/nottop: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | [ "$1" = a ] && a='window moved to' || a='switched to' 3 | 4 | var=$(pgrep "${0##*/}") 5 | var=${var%$$*} 6 | [ "$var" ] && 7 | kill $var 8 | 9 | dunstify -u low -r 9966 "$a $2" 10 | sleep 0.5 11 | dunstify -C 9966 12 | -------------------------------------------------------------------------------- /bin/notvol: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | . ~/etc/colours/current 4 | 5 | bar() { 6 | raw=$(vol get) 7 | vol=${raw%% *} 8 | [ "$raw" != "$vol" ] && fg2=$red 9 | vol=$((vol/5)) 10 | i=0 11 | printf "" 12 | while [ "$i" -lt 20 ]; do 13 | [ "$i" = "$vol" ] && printf "" 14 | printf ' ' 15 | i=$((i+1)) 16 | done 17 | printf "" 18 | } 19 | 20 | dunstify -u low -t 700 -r 9955 "$1" "$(bar)" 21 | -------------------------------------------------------------------------------- /bin/p: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # a glorified man for posix definitions 3 | # it's up to you to find the files, good luck :) 4 | 5 | d=$HOME/opt/posix 6 | 7 | for i in "$d"/*/"$1" "$d/"*/[0-9][0-9]-"$1"* "$d/"*"/$1"*; do 8 | [ -f "$i" ] && { 9 | [ -t 1 ] || exec cat "$i" 10 | exec nvim -R "$i" 11 | } 12 | done 13 | 14 | # lmao annaisms, enjoy your black text 15 | printf 'spec not found: \033[38;5;16m%s\033[m\n' "$1" 16 | -------------------------------------------------------------------------------- /bin/p1: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | sudo cpupower frequency-set -u 3.7G 3 | notify-send "performance" 4 | -------------------------------------------------------------------------------- /bin/p2: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | sudo cpupower frequency-set -u 2.8G 3 | notify-send "powersave" 4 | -------------------------------------------------------------------------------- /bin/p3: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | sudo cpupower frequency-set -u 2.2G 3 | notify-send "powerersaver" 4 | -------------------------------------------------------------------------------- /bin/players.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "player='$(playerctl -l | menu)'" > /tmp/player 4 | -------------------------------------------------------------------------------- /bin/pome: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | opt=$(printf "suspend\nreboot\nreboot --firmware\nreboot (windows)\npoweroff" | menu) 5 | 6 | [[ "$opt" =~ windows ]] && { 7 | # https://gist.github.com/Darkhogg/82a651f40f835196df3b1bd1362f5b8c 8 | refivars=/sys/firmware/efi/efivars/PreviousBoot-36d08fa7-cf0b-42f5-8f14-68df73ed3740 9 | sudo chattr -i $refivars 10 | printf "\x07\x00Windows\x20\x00" | iconv -f UTF-8 -t UTF-16LE | sudo tee $refivars 11 | } 12 | 13 | [ "$opt" = suspend ] && lock & 14 | [ "$opt" = reboot ] && sudo cp /etc/systemd/system/getty@tty1.service.d/autologin.conf{.backup,} 15 | sudo systemctl ${opt%%(*} 16 | -------------------------------------------------------------------------------- /bin/qe: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # don't QuEstion the name. 3 | 4 | f=${1##*/} 5 | set -- "$(realpath "$1")" 6 | case $(file -b --mime-type "$1") in 7 | text/x-shellscript) ext=sh;; 8 | text/html) ext=html;; 9 | text/*) ext=txt;; 10 | esac 11 | 12 | cp "$1" "/tmp/${f%.$ext}.$ext" 13 | dragon --and-exit "$_" 14 | -------------------------------------------------------------------------------- /bin/rc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | xrdb ~/etc/xorg/res 4 | pgrep -x st | xargs kill -USR1 5 | 6 | exit 7 | 8 | . ~/etc/colours/current 9 | 10 | _() { 11 | printf '\033]4;%s;%s\007' "$(($1+8))" "#$2" 12 | printf '\033]4;%s;%s\007' "$1" "#$2" 13 | } 14 | 15 | for tty in /dev/pts/[0-9]*; do 16 | [ -w $tty ] || continue 17 | 18 | { 19 | _ 1 "$red" 20 | _ 2 "$yellow" 21 | _ 3 "$green" 22 | _ 4 "$cyan" 23 | _ 5 "$blue" 24 | _ 6 "$purple" 25 | 26 | printf '\033]11;%s\007' "#$bg1" # bg 27 | printf '\033]708;%s\007' "#$bg1" # padding 28 | printf '\033]4;0;%s\007' "#$bg1" 29 | printf '\033]4;8;%s\007' "#$black" 30 | 31 | printf '\033]10;%s\007' "#$fg1" # fg 32 | printf '\033]4;7;%s\007' "#$fg2" 33 | printf '\033]4;15;%s\007' "#$fg1" 34 | 35 | # annaisms 36 | printf '\033]4;16;%s\007' "#$accent" 37 | printf '\033]4;17;%s\007' "#$accent2" 38 | printf '\033]4;18;%s\007' "#$contrast" 39 | } > "$tty" 40 | done 41 | -------------------------------------------------------------------------------- /bin/rel: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | d=$(($(date +%s)-$1)) 3 | [ "$d" -lt 0 ] && thing='in the future' d=${d#-} || thing=ago 4 | if [ "$d" -lt 120 ]; then 5 | word=seconds 6 | calc= 7 | elif [ "$d" -lt $((60*60)) ]; then 8 | word=minutes 9 | calc=/60 10 | scal=0 11 | elif [ "$d" -lt $((60*60*24)) ]; then 12 | word=hours 13 | calc=/60/60 14 | elif [ "$d" -lt $((60*60*24*30)) ]; then 15 | word=days 16 | calc=/60/60/24 17 | elif [ "$d" -lt $((60*60*24*365)) ]; then 18 | word=months 19 | calc=/60/60/24/30 20 | else 21 | word=years 22 | calc=/60/60/24/365 23 | fi 24 | echo "$(echo "scale=${scal:-1}; $d$calc" | bc) $word $thing" 25 | -------------------------------------------------------------------------------- /bin/resize: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # resize window 3 | 4 | case $1 in 5 | # dimension direction fallback-dir sign 6 | west) set -- width right left -;; 7 | east) set -- width right left +;; 8 | north) set -- height bottom top -;; 9 | south) set -- height bottom top + 10 | esac 11 | 12 | # 5% of monitor res 13 | #set -- "$@" "$4$(($(mattr ${1%%[ie]*} "$(pfm)") * 5 / 100 ))" 14 | a=${4}40 15 | #[ "$(bspc query -T -n focused | jq -r '.client .state')" = floating ] && { 16 | # [ "$1" = width ] && a=${4}32 || a=${4}18 17 | #} 18 | 19 | [ "$1" = width ] && { x=$a; y=0; } 20 | [ "$1" = height ] && { y=$a; x=0; } 21 | 22 | # try to resize in one direction 23 | # fall back to the other if it fails 24 | bspc node -z "$2" "$x" "$y" || bspc node -z "$3" "$x" "$y" 25 | -------------------------------------------------------------------------------- /bin/rmd: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | exit 4 | [ "$(pgrep -x rmd)" = "$$" ] || exit 5 | 6 | while :; do 7 | set -- 8 | for i in ~/.thumbnails ~/.cargo ~/.nvidia-settings-rc ~/.npm ~/go ~/.cache ~/.config ~/.nv ~/.pki ~/.bash* ~/.local; do 9 | [ -e "$i" ] && set -- "$@" "$i" 10 | done 11 | [ "$1" ] && rm -rf -- "$@" 12 | sleep 120 13 | done 14 | -------------------------------------------------------------------------------- /bin/screen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | var=right #bottom/right 4 | 5 | #xrandr --output DVI-D-0 --off 6 | #xcalib -c 7 | #xcalib -v -red 1 4.3 100 -green 1 4.3 97 -blue 1 4.5 96 -alter 8 | ##redshift -o -l 0:0 -m randr:crtc=1 -P -t 7000:7000 -g 1:1.1:1.1 -b 1 9 | # 10 | 11 | #--output HDMI-0 --mode 1920x1080 -r 60 --pos 0x100 --rotate normal --scale 1x1 --primary \ 12 | #--output DVI-D-0 --mode 1440x900 -r 60 --pos 1920x0 --rotate right --scale 1x1 \ 13 | #--output HDMI-0 --off \ 14 | 15 | #--output HDMI-0 --off \ 16 | 17 | case $var in 18 | r*) 19 | xrandr \ 20 | --output DP-0 --mode 2560x1440 --panning 2560x1440+1920+0 -r 165 --pos 1920x0 --rotate normal --reflect normal --scale 1x1 --primary \ 21 | --output HDMI-0 --mode 1920x1080 --panning 1920x1080+0+110 -r 75 --pos 0x110 --rotate normal --reflect normal --scale 1x1 22 | ;; 23 | b*) 24 | xrandr \ 25 | --output DP-0 --mode 2560x1440 -r 165 --pos 0x1080 --rotate normal --reflect normal --scale 1x1 --primary \ 26 | --output HDMI-0 --mode 1920x1080 -r 75 --pos 320x0 --rotate normal --reflect normal --scale 1x1 27 | ;; 28 | esac 29 | #--output HDMI-0 --mode 1920x1080 -r 75 --pos 2560x360 --rotate normal --scale 1x1 30 | #--output DVI-D-0 --mode 1440x900 -r 60 --pos 0x540 --rotate normal --scale 1x1 \ 31 | #--output DVI-D-0 --mode 1440x900 -r 60 --right-of HDMI-0 --rotate normal --scale 1x1 32 | #xrandrr \ 33 | # --output DVI-D-0 --mode 1440x900 -r 60 --pos 0x0 --rotate normal --scale 1x1 --primary \ 34 | # --output HDMI-0 --mode 1920x1080 -r 60 --right-of DVI-D-0 --rotate normal --scale 1x1 35 | #--output HDMI-0 --mode 1920x1080 -r 60 --pos 1440x0 --rotate normal --scale 1x1 36 | #xrandr --output DVI-D-0 --off --output HDMI-0 --primary --mode 1920x1080 -r 72 --pos 0x0 --rotate normal --output DP-0 --off --output DP-1 --off 37 | { 38 | #sleep 0.5 39 | nvidia-settings -l --config=$HOME/opt/nvidia-settings-rc 40 | #redshift -o -l 0:0 -m randr:crtc=1 -P -t 6500:6500 -g 0.85:0.94:1.0 -b 0.7 41 | sleep 0.5 42 | #redshift -o -l 0:0 -m randr:crtc=2 -P -t 7900:7900 -g 0.95:0.95:0.95 -b 1 43 | #redshift -o -l 0:0 -m randr:crtc=1 -P -t 7600:7600 -g 0.97:1:1 -b 1 44 | #redshift -o -l 0:0 -m randr:crtc=0 -P -t 7000:7000 -b 0.34 #-g 0.79:0.98:1.0 -b 1 45 | #xrandr --output eDP-1 --primary 46 | #redshift -o -l 0:0 -m randr:crtc=2 -P -b 0.94 -g 0.95:0.95:0.88 47 | : 48 | } & 49 | pap 50 | -------------------------------------------------------------------------------- /bin/sf: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # get human-readable time of twitter snowflake 3 | # usage: sf [ids] 4 | 5 | [[ "$1" -gt 1100000000000000000 ]] || exit 1 6 | 7 | for i; do 8 | # remove url stuff 9 | i=${i##*[/-]} 10 | 11 | # check if number 12 | #[ "$i" -gt 1 ] 2>/dev/null || continue 13 | # convert to binary, trim useless stuff, and go back to decimal 14 | j=$(echo "obase=2; $i" | bc | head -c-23) 15 | j=$(echo "ibase=2; $j" | bc) 16 | j=$(echo "$j+1288834974657" | bc) 17 | s=${j%???} ms=${j#$s} 18 | 19 | # ID + "discord epoch" (2015) -> human readable 20 | TZ=UTC date -d@$s +"$i %Y-%m-%d %H:%M:%S.${ms}Z %s" 21 | notify-send "[twitter id]" "$(date -d@$s +"%Y-%m-%d %H:%M:%S.${ms}") 22 | ($(rel "$s"))" 23 | done 24 | -------------------------------------------------------------------------------- /bin/shade: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # SHade - colour stuff 3 | 4 | help() { 5 | cat << EOF 6 | 7 | SHade - colour stuff 8 | 9 | hex 10 | convert rgb to hex 11 | 12 | rgb 13 | convert hex to rgb 14 | 15 | darken 16 | darken a hex value with an optional second argument for multipliers, 17 | the default is 80(%) 18 | 19 | picker 20 | preview (using a notification) a hex/rgb value from selection, or select a pixel 21 | 22 | preview 23 | supply a number between 1-500 to generate random numbers 24 | or hex values, also reads from stdin 25 | 26 | random 27 | generate x random numbers (default 1) 28 | 29 | only the first 3 characters are required, everything after is optional 30 | 31 | you can also symlink to the argument you want to use it as its own command 32 | 33 | EOF 34 | } 35 | 36 | # to hex 37 | hex() { 38 | printf "%02X%02X%02X\n" "$@" 39 | } 40 | 41 | # to rgb 42 | rgb() { 43 | for i; do 44 | a=${i%??} 45 | printf "%d %d %d\n" \ 46 | "0x${a%??}" \ 47 | "0x${a#??}" \ 48 | "0x${1#????}" 49 | done 50 | } 51 | 52 | 53 | # darken 54 | dar() { 55 | # default multiplier 56 | multi=${2:-80} 57 | set -- $(rgb "$1") 58 | 59 | for i; do 60 | a=$(( i*multi/100 )) 61 | 62 | [ "$a" -gt 255 ] && a=255 63 | printf '%02x' "$a" 64 | done 65 | printf "\n" 66 | } 67 | 68 | # picker 69 | pic() { 70 | # select a pixel 71 | hex=$(colorpicker -doq) 72 | 73 | hex=$(printf %s "$hex" | tr '[:upper:]' '[:lower:]' | tr -d '#\n') 74 | 75 | # copy the hex, then clear selection 76 | date +%s > /tmp/sde 77 | printf %s "$hex" | xclip -sel clip; xclip -i /dev/null 78 | 79 | # send notification with the hex value and a preview (pango markup) 80 | notify-send "$hex" " 81 | " 82 | } 83 | 84 | npr() { 85 | # duped from ^ because lazy 86 | # TODO: make ^ use this 87 | hex=$(echo "$1" | sed 's/rgb//' | tr "#:;,.='()\"" ' ') 88 | set -- $hex 89 | 90 | v='[a-fA-F0-9]' 91 | 92 | case $1$2$3 in 93 | # for hexes 94 | $v$v$v$v$v$v) hex=$1$2$3;; 95 | # for rgb 96 | *) 97 | if [ "$1" -lt 256 ] 2>/dev/null && [ "$2" -lt 256 ] && [ "$3" -lt 256 ]; then # 255, 200, 255 98 | hex=$(printf "%02X%02X%02X\n" "$@") 99 | elif [ $# = 6 ] && [ "$1$2$3$4$5$6" -ge 0 ] 2>/dev/null; then # 1.0, 0.855, 1.0 100 | calc() { echo "scale=5; $1/3.92156*1000" | bc; } 101 | hex=$(printf "%02X%02X%02X\n" "$(calc $1.$2)" "$(calc $3.$4)" "$(calc $5.$6)") 102 | else 103 | exit 104 | fi 105 | esac 106 | [ "${#hex}" = 6 ] || exit 1 107 | # send notification with the hex value and a preview (pango markup) 108 | notify-send "$hex" " 109 | " 110 | } 111 | 112 | # preview 113 | pre() { 114 | # read from stdin 115 | [ "$@" ] || set -- $(cat /dev/stdin) 116 | 117 | # generate x random numbers 118 | [ "$1" -ge 1 ] 2>/dev/null && [ "$1" -lt 500 ] && set -- $(ran $1) 119 | 120 | for i; do 121 | # delete leading pound 122 | i=${i###} 123 | printf "\033[38;2;%s;%s;%sm%s \033[7m \033[0m\n" \ 124 | $(rgb $i) "$i" 125 | done 126 | } 127 | 128 | # random 129 | ran() { 130 | printf "%02X%02X%02X\n" $(shuf -i 0-255 -n $(( ${1:-1}*3 )) ) 131 | } 132 | 133 | 134 | _() { 135 | v=$1; shift 136 | case $v in 137 | ""|h|-[h\?]|-|--help|help) help me; exit;; 138 | hex* | rgb* | dar* | pic* | npr* | pre* | ran*) ${v%${v#???}} "$@"; exit;; 139 | esac 140 | } 141 | 142 | _ "${0##*/}" "$@" 143 | _ "${@:-}" 144 | -------------------------------------------------------------------------------- /bin/shlib: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # functions to make my life easier 3 | 4 | # basically [ a = b ] with globbing 5 | eq() { 6 | case $1 in 7 | $2) ;; 8 | *) return 1 9 | esac 10 | } 11 | 12 | # print word from stdin 13 | # example: 14 | # $ echo a b c d e f | word 3 4 3 15 | # c d c 16 | word() { 17 | v=$* 18 | while read -r l; do 19 | set -- $l 20 | for i in $v; do 21 | # yucky yucky eval 22 | eval j="\$$i" 23 | printf '%s ' "$j" 24 | done 25 | prin 26 | done 27 | } 28 | 29 | # check if command exists 30 | ex() { command -v "$1" >/dev/null 2>&1; } 31 | 32 | # echo but safer (bash doesn't expand escape sequences) 33 | prin() { printf '%b\n' "$*"; } 34 | 35 | war() { printf '%b\n' "$*" >&2; } 36 | die() { printf '%b\n' "$*" >&2; exit 1; } 37 | -------------------------------------------------------------------------------- /bin/shortcuts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # $1 = (d)irectory or (f)ile 4 | # $2 = name of alias 5 | # $3 = file or folder to edit / cd to 6 | 7 | while read -r line; do 8 | set -- ${line//\~/$HOME} 9 | case $line in 10 | \#*|"") continue 11 | esac 12 | [ -d "$2" ] && echo "alias $1='cd \"$2\"'" || 13 | echo "alias $1='v \"$2\"'" 14 | 15 | echo "export $1=\"$2\"" 16 | done < "${XDG_CONFIG_HOME:=$HOME/.config}/sh/sc" > "$XDG_CONFIG_HOME/sh/sc.sh" 17 | -------------------------------------------------------------------------------- /bin/snowflake: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # https://discord.com/developers/docs/reference#snowflakes 3 | # get human-readable time of discord snowflake 4 | # usage: snowflake [ids] 5 | 6 | for i; do 7 | # remove url stuff 8 | i=${i##*[/-]} 9 | 10 | # check if number 11 | [ "$i" -gt 1 ] 2>/dev/null || continue 12 | # convert to binary, trim useless stuff, and go back to decimal 13 | j=$(echo "obase=2; $i" | bc | head -c-23) 14 | j=$(echo "ibase=2; $j" | bc) 15 | s=${j%???} ms=${j#$s} 16 | 17 | # ID + "discord epoch" (2015) -> human readable 18 | TZ=UTC date -d @$((s+1420070400)) +"$i %Y-%m-%d %H:%M:%S.${ms}Z %s" 19 | done 20 | -------------------------------------------------------------------------------- /bin/spoiler: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | case "$1" in 4 | -r) shift; printf %s "$@" | sed "s/./>!&!> /tmp/swallowids 30 | bspc node "$swallowingid" --flag hidden=on 31 | fi 32 | } 33 | 34 | spit() { 35 | spitterid=$1 36 | spitterdesktop=$2 37 | grep "^$spitterid" /tmp/swallowids || return 38 | spittingid=$(grep "^$spitterid" /tmp/swallowids | head -n1 | awk '{print $2}') 39 | 40 | bspc node "$spittingid" --flag hidden=off 41 | 42 | termdesktop=$(bspc query -D -n "$spittingid") 43 | [ "$termdesktop" = "$spitterdesktop" ] || bspc node "$spittingid" -d "$spitterdesktop" 44 | 45 | bspc node "$spittingid" -f 46 | sed -i "/^$spitterid/d" /tmp/swallowids 47 | } 48 | 49 | bspc subscribe node_add node_remove | while read -r event 50 | do 51 | case $(echo "$event" | awk '{ print $1 }') in 52 | node_add) 53 | swallow $(echo "$event" | awk '{print $5 " " $3}') 54 | ;; 55 | node_remove) 56 | spit $(echo "$event" | awk '{print $4 " " $3}') 57 | ;; 58 | esac 59 | done 60 | -------------------------------------------------------------------------------- /bin/t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | timer "$@" 3 | -------------------------------------------------------------------------------- /bin/targets: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # output windows 3 | 4 | case $1 in 5 | focused) bspc query -N -n .local.\!hidden.focused.\!fullscreen;; 6 | normal) bspc query -N -n .local.\!hidden.\!focused.\!fullscreen 7 | esac 8 | -------------------------------------------------------------------------------- /bin/temp: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # make a temp dir 3 | 4 | trap 'rm -rf "$dir"' INT HUP TERM EXIT 5 | dir="${XDG_CACHE_HOME:=$HOME/.cache}/tmp-$$" 6 | 7 | mkdir -p "$dir" 8 | cd "$dir" 9 | 10 | [ "$1" = r ] && unset XDG_CONFIG_HOME XDG_DATA_HOME XDG_CACHE_HOME 11 | 12 | _JAVA_OPTIONS=-Duser.home=$dir \ 13 | HOME="$dir" $SHELL 14 | -------------------------------------------------------------------------------- /bin/term: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export RXVT_SOCKET="${XDG_DATA_HOME:=$HOME/.local/share}/rxvt" 4 | 5 | urxvtc "$@" 6 | [ $? -eq 2 ] && { 7 | urxvtd -q -o -f 8 | urxvtc "$@" 9 | } 10 | : 11 | -------------------------------------------------------------------------------- /bin/terms.sh: -------------------------------------------------------------------------------- 1 | export times=0 delay=0.1 limit=5 2 | c='zsh -ic "true"' 3 | #c='dash -c "/bin/sleep 0.05"' 4 | 5 | echo "ms, ${times}x, ${delay}s between" 6 | echo "cmd: [terminal] $c" 7 | while read -r line; do 8 | eval $line 9 | sleep 0.1 10 | done << EOF | sed -e 's/\x1b\[[0-9;]*m//g' -e 's/|/()/' -e 's/ *|.*//' -e 's/()/|/' | sort -V | column -t 11 | #timetest xterm -e $c 12 | #timetest urxvt -e $c 13 | #timetest defaultst -e $c 14 | timetest st -e $c 15 | timetest wezterm start -- $c 16 | #timetest alacrappy -e $c 17 | #timetest xfce4-terminal -x $c 18 | #timetest kitty $c 19 | #timetest tilix -e $c 20 | #timetest konsole -e $c 21 | #timetest terminator -e '$c' 22 | EOF 23 | -------------------------------------------------------------------------------- /bin/timer: -------------------------------------------------------------------------------- 1 | #!/bin/sh -x 2 | # simple timer 3 | sound=/usr/share/sounds/freedesktop/stereo/complete.oga 4 | 5 | t=${1:-1h}; [ "$1" ] || set -- 1h; shift 6 | calc() { 7 | seconds=$(echo "$1*$2" | bc) 8 | } 9 | 10 | case $t in 11 | 0|0s) notify-send -u critical "$*"; exec paplay "$sound";; 12 | *h) calc "${t%?}" 3600;; 13 | *m) calc "${t%?}" 60;; 14 | *s) seconds="${t%?}" ;; 15 | #*) calc "$t" 60;; 16 | *) seconds=$t;; 17 | esac 18 | 19 | b="Timer set for $t ($seconds) ${1:+- $*}" 20 | notify-send "$b" -t 800 21 | { 22 | sleep "$seconds" 23 | 24 | notify-send -u critical "$t Timer finished" "$*" & 25 | paplay "$sound" 26 | [ "$silenzio" = yes ] || n tmr "timer done: $*" 27 | } & 28 | -------------------------------------------------------------------------------- /bin/transadd: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | pgrep -x transmission-da || { transmission-daemon && 4 | notify-send "Starting transmission daemon" && sleep 3; } 5 | 6 | transmission-remote -a "$@" && notify-send "Torrent added." 7 | -------------------------------------------------------------------------------- /bin/ttycol: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | file='/usr/local/bin/ttycol.sh' 4 | serv='/usr/lib/systemd/system/ttycol.service' 5 | . ~/etc/colours/current 6 | 7 | { 8 | printf '#!/usr/bin/env bash\n' 9 | printf 'export TERM=linux\n' 10 | printf 'for tty in /dev/tty[0-9]; do\n' 11 | printf '\t[ -w "$tty" ] || continue\n' 12 | for i in 0$bg1 1$red 2$yellow 3$green 4$cyan 5$blue 6$purple 7$fg1; do 13 | printf '\tprintf "\\033]P%s%s" > "$tty"\n' "${i%??????}" "${i#?}" 14 | printf '\tprintf "\\033]P%X%s" > "$tty"\n' "$((${i%??????}+8))" "${i#?}" 15 | done 16 | printf 'done\n' 17 | } | sudo sh -c "cat > '$file'; chmod +x '$file'" 18 | 19 | [ -e "$serv" ] || cat << EOF | sudo tee "$serv" >/dev/null 20 | [Unit] 21 | Description=Change tty colours 22 | After=multi-user.target 23 | 24 | [Service] 25 | Type=oneshot 26 | ExecStart=/usr/local/bin/ttycol.sh 27 | 28 | [Install] 29 | WantedBy=multi-user.target 30 | EOF 31 | -------------------------------------------------------------------------------- /bin/umnt: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # unmount disk 3 | set -e 4 | . ~/etc/colours/current 5 | 6 | lsblk -Po NAME,SIZE,MOUNTPOINT,FSTYPE,LABEL | while read -r a; do 7 | eval "$a" 8 | 9 | [ "$MOUNTPOINT" ] && ! grep -iq "\s$MOUNTPOINT\s" /etc/fstab && 10 | printf "%-4s:%s:%s:<- %s\n" \ 11 | "$NAME" \ 12 | "$SIZE" \ 13 | "${LABEL:-unnamed}" \ 14 | "${MOUNTPOINT//$HOME/\~}" 15 | 16 | done | column -ts':' -o' ' | menu -p unmount | { 17 | read -r NAME _ 18 | eval "$(lsblk -Po LABEL,MOUNTPOINT "/dev/$NAME")" 19 | notify-send summary "$NAME: $LABEL\n${MOUNTPOINT/$HOME/\~}" 20 | sudo umount "$MOUNTPOINT" 21 | sudo rmdir "$HOME/dev/$NAME" ||: 22 | } 23 | -------------------------------------------------------------------------------- /bin/util.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # collection of utils written in POSIX sh 4 | # some probably only work on linux 5 | # 6 | # shellcheck disable=SC2254 disable=SC2086 7 | # 8 | 9 | prin() { printf '%s\n' "$*"; } 10 | 11 | pg() { # pgrep 12 | [ "$1" = '-x' ] && a="$2" || a="*$1*" 13 | for i in /proc/[0-9]*; do 14 | read -r c < "$i/comm" 15 | case $c in 16 | $a) prin "${i##*/}";; 17 | esac 18 | done 19 | } 20 | 21 | pk() { # pkill 22 | for i; do 23 | case $i in 24 | -x) v=-x; shift;; 25 | -*) p="$i"; shift;; 26 | esac 27 | done 28 | [ "$1" ] || exit 1 29 | g=$(pg $v "$1") 30 | # WARNING: kill isn't always a builtin 31 | # USE WITH CAUTION 32 | [ "$g" ] && kill $p $g 33 | } 34 | 35 | ppid() { 36 | while read -r line; do 37 | case $line in 38 | PPid*) prin "${line##*:?}"; break;; 39 | esac 40 | done < /proc/"$1"/status 41 | } 42 | 43 | # very slow... 44 | cpids() { 45 | for i in /proc/[0-9]*; do 46 | [ "$(ppid "${i##/proc/}")" = "$1" ] && prin "${i##*/}" 47 | done 48 | } 49 | 50 | pname() { 51 | for i; do 52 | read -r v < /proc/"$i"/comm 53 | prin "$v" 54 | done 55 | } 56 | 57 | gr() { # grep 58 | pat="*$1*"; shift 59 | case $pat in 60 | '*^'*|*'$*') pat=${pat#\*^}; pat=${pat%\$*} 61 | esac 62 | [ "$#" = 0 ] && set -- /dev/stdin 63 | for i; do 64 | [ "$#" -gt 1 ] && var="$i: " 65 | while IFS='' read -r l; do 66 | case $l in 67 | $pat) prin "$var$l";; 68 | esac 69 | done < "$i" 70 | done 71 | } 72 | 73 | ca() { # cat 74 | [ $# = 0 ] && set -- /dev/stdin 75 | for i; do 76 | while IFS='' read -r l; do 77 | prin "$l" 78 | done < "$i" 79 | done 80 | } 81 | 82 | ll() { # ls -1 83 | set -- "${1:-.}"/* 84 | # it just needs to separate dirs and have colours... 85 | for i; do 86 | [ -d "$i" ] && printf '\033[35m%s\033[0m\n' "${i##*/}" 87 | done 88 | 89 | for i; do 90 | [ -d "$i" ] && continue 91 | c= 92 | [ -x "$i" ] && c='\033[33m' 93 | [ -L "$i" ] && c='\033[32m' 94 | printf '%b\033[0m\n' "$c${i##*/}" 95 | done 96 | } 97 | 98 | fn() { # find 99 | file=$1 100 | [ "$dir" ] || dir=${2:-.} 101 | for i in "$dir"/*; do 102 | case $i in 103 | $file) printf '%s\n' "$i";; 104 | esac 105 | [ -d "$i" ] && [ ! -h "$i" ] && dir="$i" && fn "$1" 106 | done 107 | : 108 | } 109 | 110 | fe() { # field 111 | v=$* 112 | while read -r l; do 113 | set -- $l 114 | for i in $v; do 115 | # yucky yucky eval 116 | eval j="\$$i" 117 | printf '%s ' "$j" 118 | done 119 | prin 120 | done 121 | } 122 | 123 | he() { # head 124 | u="$1"; shift 125 | [ "$1" ] || set -- /dev/stdin 126 | for i; do 127 | n=0 128 | while IFS='' read -r l; do 129 | prin "$l" 130 | n=$((n+1)) 131 | [ "$n" = "$u" ] && break 132 | done < "$i" 133 | done 134 | } 135 | 136 | li() { # line 137 | u="$1"; shift 138 | [ "$1" ] || set -- /dev/stdin 139 | for i; do 140 | n=0 141 | while IFS='' read -r l; do 142 | n=$((n+1)) 143 | [ "$n" = "$u" ] && prin "$l" && break 144 | done < "$i" 145 | done 146 | } 147 | 148 | to() { # touch 149 | for i; do 150 | [ -e "$i" ] && continue 151 | :> "$i" 152 | done 153 | } 154 | 155 | _() { 156 | case $1 in 157 | pk|pg|ppid|cpids|pname|gr|ca|ll|fn|fe|he|li|to) "$@"; exit $?;; 158 | esac 159 | } 160 | 161 | case $1 in 162 | -h|-?|--help) cat << EOF 163 | 164 | clones in posix sh 165 | 166 | usage: 167 | - 'ca ' cat 168 | - 'fe ' print fields from stdin 169 | - 'fn ' find 170 | - 'gr ' head 172 | - 'li ' print line # from file 173 | - 'll ' ls 174 | - 'to ' touch 175 | 176 | - 'cpids ' child PIDs 177 | - 'pg [-x] ' pgrep 178 | - 'pk [-x] ' pkill 179 | - 'pname ' process name 180 | - 'ppid ' parent PID 181 | 182 | EOF 183 | exit 184 | esac 185 | 186 | _ "${0##*/}" "$@" 187 | _ "$@" 188 | -------------------------------------------------------------------------------- /bin/vol: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # amixer/playerctl wrapper script for volume/media 4 | # 5 | # source: 6 | # https://github.com/6gk 7 | # 8 | # shellcheck disable=SC2015 9 | # shellcheck disable=SC2086 10 | 11 | # use gdbus to replace notifications 12 | # notify
13 | # body is optional 14 | 15 | notify() { 16 | gdbus call -e -d "org.freedesktop.Notifications" \ 17 | -o /org/freedesktop/Notifications \ 18 | -m org.freedesktop.Notifications.Notify "" \ 19 | "$1" "" "$2" "$3" "[]" "{}" 800 >$n 2>&1 20 | } 21 | 22 | playerctl() { 23 | # playerctl sometimes runs and hangs, so set a timeout then kill it 24 | command playerctl "$@" & 25 | { 26 | pid=$! 27 | sleep 1; kill $pid 28 | } >$n 2>&1 & 29 | } 30 | 31 | n=/dev/null 32 | 33 | mute() { 34 | action="$1" 35 | # if a command isn't specified toggle mute 36 | [ ! "$1" ] && amixer -D pulse get Master | grep -qio off && 37 | action=unmute || action=mute 38 | 39 | amixer -D pulse set Master "$action" >$n 2>&1 40 | notif="vol ${action}d" 41 | } 42 | 43 | mute_window() { 44 | set -e 45 | # binary name 46 | cmd=$(readlink "/proc/$(xdotool getactivewindow getwindowpid)/exe") 47 | cmd=${cmd##*/} 48 | 49 | # pulseaudio ID 50 | set -- $(pactl list sink-inputs | grep -iB28 "\.binary.*${cmd%%.*}" \ 51 | | sed -n 's/^.*\(Mute: \|#\)//p') 52 | 53 | # more helpful notification, prevent windows having different states 54 | [ "$2" = yes ] && human=unmuted mute=0 || human=muted mute=1 55 | 56 | for id; do 57 | pactl set-sink-input-mute "${id###}" $mute && notify 451 "$human $cmd" 58 | done 59 | exit 60 | } 61 | 62 | volume() { 63 | # get the current volume 64 | amixer=$(amixer -D pulse get Master) 65 | current=${amixer##*[0-9] \[} 66 | current=${current%%%*} 67 | mute=${amixer##*\[} 68 | 69 | [ "$1" = get ] && { 70 | [ "$mute" != 'on]' ] && exec printf '%s\n' "$current [muted]" 71 | exec printf '%s\n' "$current" 72 | } 73 | 74 | # default modifier (5%) 75 | number=${2:-5} 76 | 77 | # calculate the new volume 78 | [ "$1" = up ] && number="$((current + number))" 79 | [ "$1" = down ] && number="$((current - number))" 80 | 81 | # handling of invalid numbers 82 | [ "$number" -lt 0 ] && number=0 83 | [ "$number" -gt 100 ] && number=100 84 | 85 | amixer -D pulse set Master "$number%" >$n 2>&1 86 | 87 | notif="vol set to $number" 88 | } 89 | 90 | media() { 91 | # force playerctl to use player 92 | # format: 93 | # player="" 94 | [ -f /tmp/player ] || touch /tmp/player 95 | . /tmp/player 96 | 97 | action="$1" 98 | 99 | # toggle play/pause 100 | [ "$1" = p ] && action=play-pause && act="toggled pause on" 101 | 102 | playerctl -p "$player" "$action" 103 | notif="$act $(playerctl -p "$player" metadata xesam:title)" 104 | } 105 | 106 | case $1 in 107 | # mute 108 | m) mute;; 109 | mute|unmute) mute $1;; 110 | 111 | # mute current window 112 | mw) mute_window;; 113 | 114 | # volume 115 | up|down) volume $1 $2;; 116 | get) volume get;; 117 | set) 118 | [ "$2" ] || { echo "option 'set' requires a number"; exit 1; } 119 | volume set "$2" 120 | ;; 121 | 122 | # media 123 | p|pause|play|stop) media $1;; 124 | 125 | *) 126 | cat << EOF 127 | muting 128 | mw toggle mute on window 129 | m toggle mute 130 | mute 131 | unmute 132 | 133 | volume 134 | get get current volume 135 | set set volume to 136 | up increase volume by number (default: 5) 137 | down decrease volume by number (default: 5) 138 | 139 | media 140 | p toggle pause 141 | pause 142 | play 143 | stop 144 | EOF 145 | exit 1 146 | esac 147 | 148 | #notify 70 "$notif" 149 | echo "$notif" 150 | notvol "$notif" 151 | -------------------------------------------------------------------------------- /bin/walgen: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Generate a wallpaper with some static 3 | 4 | fi="$HOME/src/walls/tile.png" 5 | 6 | convert -size 512x512 canvas:"$1" \ 7 | -separate -attenuate "0.${2:-10}" \ 8 | +noise gaussian -combine -colorspace sRGB "$fi" 9 | 10 | feh --no-fehbg --bg-tile "$fi" 11 | -------------------------------------------------------------------------------- /bin/walgen1: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Plain Colour Wallpaper 3 | 4 | fi="$HOME/src/walls/tile.png" 5 | convert -size 100x100 canvas:"$1" "$fi" 6 | feh --bg-tile --no-fehbg "$fi" 7 | -------------------------------------------------------------------------------- /bin/wm: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | case $1 in 3 | *q*) bspc quit;; 4 | *r*) bspc wm -r 5 | esac 6 | -------------------------------------------------------------------------------- /bin/x: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # github.com/Earnestly/sx 3 | # Copyright 2017 Earnestly 4 | # MIT License 5 | 6 | cleanup() { 7 | if [ "$pid" ] && kill -0 "$pid" 2> /dev/null; then 8 | kill "$pid" 9 | wait "$pid" 10 | xorg=$? 11 | fi 12 | 13 | if ! stty "$stty"; then 14 | stty sane 15 | fi 16 | 17 | xauth remove :"$tty" 18 | 19 | if [ "$1" = exit ]; then 20 | exit "${xorg:-0}" 21 | fi 22 | } 23 | 24 | stty=$(stty -g) 25 | tty=$(tty) 26 | tty=$((${tty##*[a-z]}-1)) 27 | 28 | conf=${XDG_CONFIG_HOME:=$HOME/.config}/xorg 29 | data=${XDG_DATA_HOME:=$HOME/.local/share}/xorg 30 | mkdir -p -- "$conf" "$data" 31 | 32 | export XAUTHORITY="${XAUTHORITY:-$data/xauthority}" 33 | touch -- "$XAUTHORITY" 34 | 35 | xauth add :"$tty" MIT-MAGIC-COOKIE-1 "$(od -An -N16 -tx /dev/urandom | tr -d ' ')" 36 | 37 | trap 'cleanup; trap - INT; kill -INT "$$"' INT 38 | trap 'cleanup exit' EXIT HUP TERM QUIT 39 | 40 | # Xorg will check whether it inherited a USR1 with a disposition of SIG_IGN and 41 | # use this state to reply back to the parent process with its own USR1. 42 | # This is done to indicate that the server is ready to accept connections. 43 | # Taking advantage of this feature allows launching the client directly from a 44 | # USR1 signal trap which obviates the need to poll for server readiness. 45 | trap 'DISPLAY=:$tty exec "${@:-$conf/rc}" & wait "$!"' USR1 46 | 47 | (trap '' USR1 && exec Xorg :"$tty" -keeptty vt"$((tty+1))" -noreset -auth "$XAUTHORITY") & pid=$! 48 | wait "$pid" 49 | -------------------------------------------------------------------------------- /deploy: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | exec 2>/dev/null 3 | 4 | [ "$1" = y ] || { 5 | printf 'button: ' 6 | read -r y 7 | } 8 | 9 | [ "${1:-$y}" = y ] || exit 10 | 11 | ln -sf "$HOME/etc/.mozilla/firefox" "$HOME/etc/firefox" 12 | 13 | mkdir -p \ 14 | ~/etc \ 15 | ~/src \ 16 | ~/tmp \ 17 | ~/bin/app \ 18 | ~/bin/bin \ 19 | ~/opt/junk \ 20 | ~/opt/apps \ 21 | ~/usr/cache 22 | 23 | ln -sf "$PWD/bin/"* ~/bin/ 24 | ln -sf "$PWD/etc/"* ~/etc/ 25 | ln -sf "$PWD/usr/"* ~/usr/ 26 | : 27 | -------------------------------------------------------------------------------- /etc/bspwm/bspwmrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # bspwmrc 4 | # 5 | # yes, using env rather than a direct /bin/sh is intentional, 6 | # but I won't say the reason :) 7 | 8 | c() { bspc config "$@" & } 9 | R() { bspc rule -a "$@" & } 10 | s() { pkill -x "$1"; { sleep 0.1; "$@" & }; } 11 | sx=$XDG_CONFIG_HOME/sxhkd bs=$XDG_CONFIG_HOME/bspwm 12 | 13 | # desktops 14 | bspc monitor DP-0 -d 1 2 3 4 5 6 15 | bspc monitor HDMI-0 -d 7 8 9 0 16 | ## fix ordering 17 | #bspc monitor DVI-D-0 -s HDMI-0 18 | 19 | c ignore_ewmh_fullscreen all 20 | #c ignore_ewmh_focus true 21 | #c ignore_ewmh_struts true 22 | 23 | # mouse 24 | xsetroot -cursor_name left_ptr 25 | c pointer_modifier mod4 26 | c focus_follows_pointer true 27 | c pointer_follows_focus false 28 | c pointer_motion_interval 2 29 | 30 | 31 | # borders/gaps 32 | c window_gap 15 33 | c border_width 0 34 | c single_monocle true 35 | c gapless_monocle true 36 | c borderless_monocle true 37 | 38 | c normal_border_color '#f2f2f2' 39 | c active_border_color '#f2f2f2' 40 | c focused_border_color '#f2f2f2' 41 | 42 | 43 | # 44 | # rules 45 | # 46 | R taskman locked=on state=floating 47 | R yeetfocus state=floating focus=on rectangle=1x1+1+1 border=off 48 | R obs desktop=9 49 | R Steam desktop=5 50 | R feh state=floating 51 | R Iwgtk state=floating 52 | R Pinsel state=floating 53 | R tabbed state=floating 54 | R Gcolor3 state=floating 55 | R floating state=floating 56 | R menu state=floating sticky=on layer=normal 57 | R freeze state=floating border=off monitor=DP-0 layer=above focus=off 58 | R Surphace state=floating border=off rectangle=3360x3024+0+0 59 | R conky state=floating layer=above sticky=true focus=off manage=off 60 | R Dragon sticky=true focus=off 61 | R d6 desktop=6 62 | R qBittorrent desktop=6 63 | #R mpv desktop=0 64 | 65 | 66 | # 67 | # autostart 68 | # 69 | pgrep sxhkd || { 70 | # focus first/last desktops 71 | bspc desktop -f 0 -f 1 72 | 73 | ## dropdown htop/shell 74 | sleep 0.7 75 | # start invisible 76 | bspc rule -a taskman hidden=on -o 77 | cp ~/src/htop/htoprc ~/etc/htop 78 | st -c taskman -e bash -c 'while :; do sudo -E htop -d 10; zsh; done' & 79 | 80 | # on reboots stuff sometimes takes a while to start 81 | sleep 2 82 | 83 | # pid > xdotool wid > wmutils wid 84 | printf 0x%x "$(xdotool search --pid $!)" > "$XDG_CACHE_HOME/hw/1" 85 | } & 86 | 87 | s picom 88 | s clipwatch 89 | s dunst 90 | #s swallow 91 | s borders 92 | s sxhkd -c "$sx/other" # give priority to binds in this file 93 | sxhkd -c "$sx/sxhkdrc" "$sx/bspwm" 94 | [ -e "$bs/other" ] && . "$bs/other" 95 | -------------------------------------------------------------------------------- /etc/bspwm/noswallow: -------------------------------------------------------------------------------- 1 | Dragon 2 | freeze 3 | Surphace 4 | xterm-256color 5 | -------------------------------------------------------------------------------- /etc/bspwm/terminals: -------------------------------------------------------------------------------- 1 | xterm-256color 2 | -------------------------------------------------------------------------------- /etc/colours/blackout: -------------------------------------------------------------------------------- 1 | # ----- 2 | black=434366 3 | red=d26161 4 | yellow=cf9b6a 5 | green=a8b67a 6 | cyan=83b5c2 7 | blue=8497cf 8 | purple=b887cc 9 | # ----- 10 | bg0=000000 11 | bg1=000000 12 | bg2=050505 13 | bg3=0a0a0a 14 | bg4=0e0e0e 15 | # ----- 16 | fg1=bfc1d5 17 | fg2=797b8f 18 | button=${fg1}20 19 | disabled=696969 20 | # ----- 21 | accent=$blue 22 | accent2=$purple 23 | contrast=$bg4 24 | # ----- 25 | wall=black-rocks.jpg 26 | # ----- 27 | -------------------------------------------------------------------------------- /etc/colours/blue: -------------------------------------------------------------------------------- 1 | # ----- 2 | black=60608f 3 | red=f69499 4 | yellow=f6dd94 5 | green=b4f694 6 | cyan=94f2f6 7 | blue=94c2f6 8 | purple=d39ff5 9 | # ----- 10 | bg0=18182b 11 | bg1=191932 12 | bg2=1d1d3b 13 | bg3=222242 14 | bg4=2c2c4a 15 | chrome=303052 16 | # ----- 17 | fg1=ccccdc 18 | fg2=8a8aa8 19 | button=${fg1}20 20 | disabled=696969 21 | # ----- 22 | accent=$blue 23 | accent2=$purple 24 | contrast=$bg4 25 | # ----- 26 | wall=paint-dark-blue-crop.jpg 27 | #wall=$chrome 28 | # ----- 29 | -------------------------------------------------------------------------------- /etc/colours/brit: -------------------------------------------------------------------------------- 1 | # ----- 2 | black=777a80 3 | borders=98a1b4 4 | red=9e1d1f 5 | yellow=88842a 6 | green=6a8835 7 | cyan=226088 8 | blue=2e2e9e 9 | purple=872a88 10 | # ----- 11 | bg0=ffffff 12 | bg1=fafafa 13 | bg2=f8f8f8 14 | bg3=f1f1f1 15 | bg4=eeeeee 16 | chrome=cccccc 17 | # ----- 18 | fg1=444444 19 | fg2=666666 20 | button=${fg1}20 21 | disabled=696969 22 | # ----- 23 | accent=$blue 24 | accent2=$red 25 | contrast=$bg1 26 | # ----- 27 | wall=tea.jpg 28 | #wall=$chrome 29 | # ----- 30 | -------------------------------------------------------------------------------- /etc/colours/cherry: -------------------------------------------------------------------------------- 1 | # ----- 2 | black="4f5d6b" 3 | red="ff8e8e" 4 | yellow="ffee99" 5 | green="adffbd" 6 | cyan="b5e9ff" 7 | blue="b0c7ff" 8 | purple="fbc2ff" 9 | # ----- 10 | bg0="29323d" 11 | bg1="2f3945" 12 | bg2="343f4c" 13 | bg3="3e4957" 14 | bg4="485461" 15 | # ----- 16 | fg1="f3f6ff" 17 | fg2="bcc1d1" 18 | button="${fg1}1a" 19 | disabled="696969" 20 | # ----- 21 | accent="$purple" 22 | accent2="$blue" 23 | contrast="555555" 24 | # ----- 25 | wall="cherry-blossom.jpg" 26 | # ----- 27 | -------------------------------------------------------------------------------- /etc/colours/coal: -------------------------------------------------------------------------------- 1 | # ----- 2 | bg0="070708" 3 | bg1="0d0d0f" 4 | bg2="111114" 5 | bg3="16161a" 6 | bg4="1a1a1f" 7 | button="daddee1a" 8 | chrome="272733" 9 | # ----- 10 | fg1="daddee" 11 | fg2="a6a9b7" 12 | disabled="696969" 13 | # ----- 14 | accent="7baae8" 15 | accent2="c488ec" 16 | contrast="ffffff" 17 | # ----- 18 | #wall="volcano.jpg" 19 | wall="$bg4" 20 | # ----- 21 | 22 | black="484e5b" 23 | red="e56f92" 24 | green="8cd7aa" 25 | yellow="e9967e" 26 | blue="79aaeb" 27 | purple="c488ec" 28 | cyan="7acfe4" 29 | -------------------------------------------------------------------------------- /etc/colours/coral: -------------------------------------------------------------------------------- 1 | # ----- 2 | bg0="0e171c" 3 | bg1="111c23" 4 | bg2="17242c" 5 | bg3="1c2d37" 6 | bg4="$(darken $bg3 1.1)" 7 | button="edeef01a" 8 | # ----- 9 | fg1="edeef0" 10 | fg2="999ba0" 11 | disabled="595959" 12 | # ----- 13 | accent="f6b2b6" 14 | accent2="8ac4ba" 15 | contrast="000000" 16 | red="d48398" 17 | # ----- 18 | wall="$bg0" 19 | # ----- 20 | 21 | black="546977" 22 | red="d48398" 23 | green="8ac4ac" 24 | yellow="e6c4bb" 25 | blue="9dcce1" 26 | purple="f6b2b6" 27 | cyan="99d1d7" 28 | -------------------------------------------------------------------------------- /etc/colours/dab: -------------------------------------------------------------------------------- 1 | # ----- 2 | black=dab420 3 | red=dab420 4 | yellow=dab420 5 | green=dab420 6 | cyan=420dab 7 | blue=420dab 8 | purple=420dab 9 | # ----- 10 | bg0=FFFFF8 11 | bg1=FCFCF5 12 | bg2=F7F7ED 13 | bg3=F2F2E8 14 | bg4=$yellow 15 | # ----- 16 | fg1=420420 17 | fg2=692c37 18 | button=${fg1}1a 19 | disabled=ffffff 20 | # ----- 21 | accent=$purple 22 | accent2=$purple 23 | contrast=$bg4 24 | # ----- 25 | wall=purple-yellow-flower.jpg 26 | # ----- 27 | -------------------------------------------------------------------------------- /etc/colours/dragkula: -------------------------------------------------------------------------------- 1 | black="c5c5c5" 2 | red="dc7474" 3 | green="dc7474" 4 | yellow="dc7474" 5 | blue="dc7474" 6 | purple="dc7474" 7 | cyan="dc7474" 8 | 9 | borders="dc7474" 10 | # ----- 11 | bg0="e3e3e3" 12 | bg1="e3e3e3" 13 | bg2="e3e3e3" 14 | bg3="c5c5c5" 15 | bg4="c5c5c5" 16 | button="c5c5c5" 17 | chrome="c5c5c5" 18 | # ----- 19 | fg1="464646" 20 | fg2="888888" 21 | disabled="aaaaaa" 22 | # ----- 23 | accent="dc7474" 24 | accent2="dc7474" 25 | contrast="ffffff" 26 | red="dc7474" 27 | # ----- 28 | wall="ffffff" 29 | # ----- 30 | 31 | # vim:ft=sh 32 | -------------------------------------------------------------------------------- /etc/colours/frost: -------------------------------------------------------------------------------- 1 | # ----- 2 | bg0="20242e" 3 | bg1="232836" 4 | bg2="282e3f" 5 | bg3="2f364a" 6 | bg4="333b51" 7 | button="ccccfa1a" 8 | # ----- 9 | fg1="ccccfa" 10 | fg2="8686a4" 11 | disabled="696969" 12 | # ----- 13 | accent="8da4eb" 14 | accent2="e9799b" 15 | contrast="ffffff" 16 | red="e9799b" 17 | # ----- 18 | wall="$bg0" 19 | # ----- 20 | 21 | black="434d6a" 22 | red="e9799b" 23 | green="93caa8" 24 | yellow="f5b2a3" 25 | blue="8da4eb" 26 | purple="dca7fa" 27 | cyan="8fc5e6" 28 | -------------------------------------------------------------------------------- /etc/colours/grey: -------------------------------------------------------------------------------- 1 | # ----- 2 | black=5c5c5c 3 | red=F69499 4 | yellow=F6DD94 5 | green=B4F694 6 | cyan=94F2F6 7 | blue=94C2F6 8 | purple=D39FF5 9 | # ----- 10 | bg0=121212 11 | bg1=171717 12 | bg2=1a1a1a 13 | bg3=1e1e1e 14 | bg4=232323 15 | chrome=2d2d2d 16 | # ----- 17 | fg1=e8e8e8 18 | fg2=999999 19 | button=${fg1}20 20 | disabled=696969 21 | # ----- 22 | accent=$blue 23 | accent2=$purple 24 | contrast=$bg4 25 | # ----- 26 | wall=wooden-star-crop.jpg 27 | #wall=$chrome 28 | # ----- 29 | -------------------------------------------------------------------------------- /etc/colours/hacker: -------------------------------------------------------------------------------- 1 | # ----- 2 | black=334433 3 | red=00ff00 4 | yellow=00ff00 5 | green=00ff00 6 | cyan=00ff00 7 | blue=00ff00 8 | purple=00ff00 9 | # ----- 10 | bg0=000000 11 | bg1=000000 12 | bg2=0c0c0c 13 | bg3=141414 14 | bg4=1c1c1c 15 | # ----- 16 | fg1=00ff00 17 | fg2=00aa00 18 | button=${fg1}1a 19 | disabled=696969 20 | # ----- 21 | accent=00ff00 22 | accent2=00ff00 23 | contrast=000000 24 | # ----- 25 | wall=004400 26 | # ----- 27 | chrome=004c00 28 | -------------------------------------------------------------------------------- /etc/colours/magic: -------------------------------------------------------------------------------- 1 | # ----- 2 | black=434366 3 | red=d26161 4 | yellow=cf9b6a 5 | green=a8b67a 6 | cyan=83b5c2 7 | blue=8497cf 8 | purple=b887cc 9 | # ----- 10 | bg0=11101C 11 | bg1=141321 12 | bg2=161524 13 | bg3=1A1929 14 | bg4=201E30 15 | # ----- 16 | fg1=bfc1d5 17 | fg2=808297 18 | button=${fg1}1a 19 | disabled=696969 20 | # ----- 21 | accent=$yellow 22 | accent2=$purple 23 | contrast=$bg4 24 | # ----- 25 | wall=magical-sunset.jpg 26 | # ----- 27 | -------------------------------------------------------------------------------- /etc/colours/meta: -------------------------------------------------------------------------------- 1 | font="Ubuntu Mono" 2 | fontsize="16" 3 | fontweight="Medium" 4 | font2="Comic Sans MS" 5 | font2size="14" 6 | font2weight="normal" 7 | -------------------------------------------------------------------------------- /etc/colours/nh: -------------------------------------------------------------------------------- 1 | # ----- 2 | bg0="000000" 3 | bg1="0d0d0d" 4 | bg2="141414" 5 | bg3="1a1a1a" 6 | bg4="1f1f1f" 7 | button="d9d9d91a" 8 | # ----- 9 | fg1="d9d9d9" 10 | fg2="a9a9a9" 11 | disabled="696969" 12 | # ----- 13 | accent="ed2553" 14 | accent2="ff32e3" 15 | contrast="ffffff" 16 | red="ed2553" 17 | # ----- 18 | wall="$bg2" 19 | # ----- 20 | 21 | black="404040" 22 | red="ed2553" 23 | green="9be32b" 24 | yellow="ff920c" 25 | blue="2097ef" 26 | purple="e42dcc" 27 | cyan="20d2ef" 28 | -------------------------------------------------------------------------------- /etc/colours/notion: -------------------------------------------------------------------------------- 1 | black="aaaeb5" 2 | red="b54a65" 3 | green="6b9e4c" 4 | yellow="c97d4e" 5 | blue="4973b7" 6 | purple="b45aaa" 7 | cyan="5094b4" 8 | 9 | borders=89bbd2 10 | # ----- 11 | bg0="ffffff" 12 | bg1="ffffff" 13 | bg2="fafafa" 14 | bg3="f2f2f2" 15 | bg4="ebebeb" 16 | button="0000001a" 17 | chrome="dde0e3" 18 | # ----- 19 | fg1="5b5f66" 20 | fg2="83878c" 21 | disabled="999999" 22 | # ----- 23 | accent="$cyan" 24 | accent2="$purple" 25 | contrast="ffffff" 26 | red="cd5e79" 27 | # ----- 28 | wall="blur.jpg" 29 | # ----- 30 | 31 | # vim:ft=sh 32 | -------------------------------------------------------------------------------- /etc/colours/nottion: -------------------------------------------------------------------------------- 1 | black="aaaeb5" 2 | red="eb9e9b" 3 | green="c4de80" 4 | yellow="edc278" 5 | blue="8fc5e6" 6 | purple="eea8e9" 7 | cyan="8fc5e6" 8 | 9 | borders=f4baf0 10 | unborders=d6d8db 11 | # ----- 12 | bg0="ffffff" 13 | bg1="ffffff" 14 | bg2="fafafa" 15 | bg3="f2f2f2" 16 | bg4="ebebeb" 17 | button="0000001a" 18 | chrome="dde0e3" 19 | # ----- 20 | fg1="828791" 21 | fg2="B1B6BD" 22 | disabled="999999" 23 | # ----- 24 | accent="$purple" 25 | accent2="$yellow" 26 | contrast="ffffff" 27 | # ----- 28 | wall="flower-pink-bundle2.jpg" 29 | # ----- 30 | 31 | # vim:ft=sh 32 | -------------------------------------------------------------------------------- /etc/colours/pastel: -------------------------------------------------------------------------------- 1 | # ----- 2 | black=5c5c80 3 | red=eb9797 4 | yellow=eec299 5 | green=d6e4ab 6 | cyan=b3e8e8 7 | blue=b6d0fd 8 | purple=d6b1f0 9 | # ----- 10 | bg0=12151e 11 | bg1=151823 12 | bg2=1a1d28 13 | bg3=1e212e 14 | bg4=232733 15 | chrome=2a2e3d 16 | # ----- 17 | fg1=d6d8eb 18 | fg2=9294a8 19 | button=${fg1}20 20 | disabled=696969 21 | # ----- 22 | accent=$blue 23 | accent2=$purple 24 | contrast=$bg4 25 | # ----- 26 | #wall=white-cherry-blossom.jpg 27 | wall=$chrome 28 | # ----- 29 | -------------------------------------------------------------------------------- /etc/colours/red: -------------------------------------------------------------------------------- 1 | # ----- 2 | black=880000 3 | red=000000 4 | yellow=000000 5 | green=000000 6 | cyan=000000 7 | blue=000000 8 | purple=000000 9 | # ----- 10 | bg0=ff0000 11 | bg1=ff0000 12 | bg2=ff0000 13 | bg3=ff0000 14 | bg4=ff0000 15 | # ----- 16 | fg1=000000 17 | fg2=000000 18 | button=${fg1}20 19 | disabled=696969 20 | # ----- 21 | accent=$blue 22 | accent2=$purple 23 | contrast=$bg4 24 | # ----- 25 | wall=ff0000 26 | # ----- 27 | -------------------------------------------------------------------------------- /etc/colours/snow: -------------------------------------------------------------------------------- 1 | # ----- 2 | bg0="ffffff" 3 | bg1="f8f9fc" 4 | bg2="f0f2f7" 5 | bg3="ebeef5" 6 | bg4="e3e6ed" 7 | button="43566f1a" 8 | # ----- 9 | fg1="314053" 10 | fg2="7d8998" 11 | disabled="595959" 12 | # ----- 13 | accent="6796e1" 14 | accent2="c185da" 15 | contrast="ffffff" 16 | red="cd5e79" 17 | # ----- 18 | wall="$bg0" 19 | # ----- 20 | 21 | 22 | black="acb1b8" 23 | red="cd5e79" 24 | green="7bb854" 25 | yellow="e09b70" 26 | blue="6796e1" 27 | purple="c185da" 28 | cyan="65b0d4" 29 | -------------------------------------------------------------------------------- /etc/colours/vibrant: -------------------------------------------------------------------------------- 1 | # ----- 2 | black="5f7282" 3 | red="ff5061" 4 | green="93f552" 5 | yellow="ffdd44" 6 | blue="52bdff" 7 | purple="d286ff" 8 | cyan="43eeff" 9 | # ----- 10 | bg0="2c3945" 11 | bg1="31404d" 12 | bg2="384754" 13 | bg3="43505c" 14 | bg4="4b5863" 15 | button="bbbbbf1a" 16 | # ----- 17 | fg1="eaeaee" 18 | fg2="c6c6ca" 19 | disabled="696969" 20 | # ----- 21 | accent="$cyan" 22 | accent2="$purple" 23 | contrast="000000" 24 | # ----- 25 | wall="a_quiet_mind.jpg" 26 | # ----- 27 | -------------------------------------------------------------------------------- /etc/colours/withered: -------------------------------------------------------------------------------- 1 | # ----- 2 | bg0="fff6ef" 3 | bg1="f8efe8" 4 | bg2="f2e9e3" 5 | bg3="e6ddd6" 6 | bg4="$(darken $bg3 0.97)" 7 | button="4d4d4d16" 8 | # ----- 9 | fg1="4d4d4d" 10 | fg2="999999" 11 | disabled="595959" 12 | # ----- 13 | accent="c48b66" 14 | accent2="7bb854" 15 | contrast="f8efe8" 16 | red="be6767" 17 | # ----- 18 | wall="$bg0" 19 | # ----- 20 | 21 | black="c9c2bc" 22 | red="be6767" 23 | green="8da65e" 24 | yellow="c48b66" 25 | blue="6983b1" 26 | purple="ac7db3" 27 | cyan="64a49e" 28 | -------------------------------------------------------------------------------- /etc/dunst/dunstrc: -------------------------------------------------------------------------------- 1 | [global] 2 | font = Ubuntu Mono Medium 16px 3 | #geometry = "500x5-40-40" 4 | shrink = true 5 | 6 | width = (0, 500) 7 | origin = bottom-right 8 | offset = 40x40 9 | follow = none 10 | 11 | markup = full 12 | format = "%s\n%b" 13 | alignment = center 14 | word_wrap = true 15 | 16 | dmenu = menu 17 | browser = xdg-open 18 | 19 | icon_position = left 20 | max_icon_size = 64 21 | icon_path = /dev/null 22 | 23 | 24 | # borders 25 | corner_radius = 4 26 | padding = 25 27 | frame_width = 0 28 | frame_color = "#f2f2f2" 29 | separator_height = 2 30 | separator_color = frame 31 | horizontal_padding = 25 32 | 33 | idle_threshold = 0 34 | show_indicators = false 35 | show_age_threshold = 60 36 | 37 | #close = ctrl+space 38 | #close_all = ctrl+shift+space 39 | #history = ctrl+shift+grave 40 | #context = ctrl+shift+period 41 | 42 | mouse_left_click = do_action 43 | mouse_middle_click = close_current 44 | mouse_right_click = context 45 | 46 | [experimental] 47 | per_monitor_dpi = true 48 | 49 | [urgency_low] 50 | background = "#ffffff" 51 | foreground = "#B1B6BDbb" 52 | frame_color = "#f2f2f2" 53 | timeout = 7 54 | 55 | [urgency_normal] 56 | background = "#ffffff" 57 | foreground = "#828791cf" 58 | frame_color = "#f2f2f2" 59 | timeout = 7 60 | 61 | [urgency_critical] 62 | background = "#ffffff" 63 | foreground = "#828791" 64 | frame_color = "#f2f2f2" 65 | timeout = 0 66 | 67 | [stuff] 68 | appname = dunstify 69 | summary = "[sw][wi][in][td][co][hw]*" 70 | set_transient = yes 71 | history_ignore = yes 72 | 73 | [stuff2] 74 | appname = dunstify 75 | summary = "vol*" 76 | set_transient = yes 77 | history_ignore = yes 78 | 79 | [mike] 80 | background = "#8fc5e6" 81 | format = " ​ " 82 | #format = "" 83 | summary = "muted" 84 | history_ignore = yes 85 | set_transient = yes 86 | #script = micbar off 87 | 88 | [mic] 89 | background = "#eb9e9b" 90 | format = "​ ​" 91 | #format = "" 92 | summary = "unmuted" 93 | history_ignore = yes 94 | set_transient = yes 95 | #script = micbar on 96 | 97 | [discord] 98 | appname = Firefox 99 | #appname = Brave 100 | #summary = "*(#*)" 101 | #body = "*discord.com*" 102 | #format = 103 | timeout = 7 104 | script = /home/mirror/bin/discordsound 105 | 106 | [email] 107 | appname = Firefox 108 | summary = "*Notifier for Gmail*" 109 | format = "%b" 110 | 111 | [iceice] 112 | appname = Firefox 113 | body = "*Highlight*265441058383593474*" 114 | new_icon = /dev/null 115 | format = " " 116 | 117 | [nosum] 118 | summary = "summary" 119 | format = "%b" 120 | 121 | # vim: ft=conf 122 | -------------------------------------------------------------------------------- /etc/feh/buttons: -------------------------------------------------------------------------------- 1 | # Unbind existing scroll operations 2 | prev_img 3 | next_img 4 | # Set 5 | zoom_in 4 6 | zoom_out 5 7 | -------------------------------------------------------------------------------- /etc/feh/keys: -------------------------------------------------------------------------------- 1 | # unbind `o` 2 | toggle_pointer 3 | # bind `o` to zoom to 100% 4 | zoom_default o 5 | -------------------------------------------------------------------------------- /etc/fontconfig/conf.d/70-nodejavu.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | DejaVu Sans 13 | 14 | 15 | 16 | 17 | 18 | DejaVu Serif 19 | 20 | 21 | 22 | 23 | 24 | DejaVu Sans Mono 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /etc/git/config: -------------------------------------------------------------------------------- 1 | [credential] 2 | helper = store 3 | [color "status"] 4 | added = 3 5 | [color "diff"] 6 | new = 3 7 | meta = 7 8 | frag = 4 9 | [color] 10 | pager = no 11 | [core] 12 | pager = nvim -R 13 | -------------------------------------------------------------------------------- /etc/gtk-3.0/gtk.css: -------------------------------------------------------------------------------- 1 | *:not(.path-bar-button):not(.rubberband):not(separator) { 2 | border: none; 3 | } 4 | 5 | 6 | /*.thunar #location-toolbar { 7 | margin-right: -50px; 8 | } 9 | .thunar #location-toolbar * widget box entry { 10 | margin-left: 30px; 11 | margin-right: 55px; 12 | } 13 | 14 | .thunar #location-toolbar { 15 | margin-left: -200px; 16 | } 17 | */ 18 | .thunar .standard-view, 19 | .thunar .sidebar { 20 | padding: 15px; 21 | } 22 | 23 | .thunar separator { 24 | background: transparent; 25 | } 26 | 27 | .thunar .sidebar treeview { 28 | padding-bottom: 1px; 29 | padding-top: 1px; 30 | } 31 | -------------------------------------------------------------------------------- /etc/gtk-3.0/settings.ini: -------------------------------------------------------------------------------- 1 | [Settings] 2 | gtk-application-prefer-dark-theme=0 3 | gtk-button-images=1 4 | gtk-cursor-theme-name=cursor 5 | gtk-cursor-theme-size=0 6 | gtk-decoration-layout=icon:minimize,maximize,close 7 | gtk-enable-animations=1 8 | gtk-enable-event-sounds=1 9 | gtk-enable-input-feedback-sounds=1 10 | gtk-font-name=Comic Sans MS, 11 11 | gtk-enable-input-feedback-sounds=0 12 | gtk-icon-theme-name=Papirus-Dark 13 | gtk-menu-images=1 14 | gtk-primary-button-warps-slider=0 15 | gtk-theme-name=Materia-dark-compact 16 | gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR 17 | gtk-toolbar-style=GTK_TOOLBAR_BOTH 18 | gtk-xft-antialias=1 19 | gtk-xft-hinting=1 20 | gtk-xft-hintstyle=hintfull 21 | gtk-xft-rgba=rgb 22 | -------------------------------------------------------------------------------- /etc/htop/htoprc: -------------------------------------------------------------------------------- 1 | # Beware! This file is rewritten by htop when settings are changed in the interface. 2 | # The parser is also very primitive, and not human-friendly. 3 | fields=0 48 18 39 46 1 4 | sort_key=0 5 | sort_direction=-1 6 | hide_threads=1 7 | hide_kernel_threads=1 8 | hide_userland_threads=1 9 | shadow_other_users=1 10 | show_thread_names=0 11 | show_program_path=0 12 | highlight_base_name=0 13 | highlight_megabytes=0 14 | highlight_threads=0 15 | tree_view=0 16 | header_margin=1 17 | detailed_cpu_time=0 18 | cpu_count_from_zero=0 19 | show_cpu_usage=1 20 | show_cpu_frequency=0 21 | update_process_names=0 22 | account_guest_in_cpu_meter=0 23 | color_scheme=0 24 | enable_mouse=1 25 | delay=15 26 | left_meters=CPU(1) CPU(3) Memory 27 | left_meter_modes=1 1 1 28 | right_meters=CPU(2) CPU(4) 29 | right_meter_modes=1 1 30 | vim_mode=0 31 | -------------------------------------------------------------------------------- /etc/mpd/mpd.conf: -------------------------------------------------------------------------------- 1 | bind_to_address "127.0.0.1" 2 | music_directory "~/opt/mus" 3 | playlist_directory "~/etc/mpd/playlists" 4 | db_file "~/etc/mpd/mpd.db" 5 | log_file "~/etc/mpd/mpd.log" 6 | pid_file "~/etc/mpd/mpd.pid" 7 | state_file "~/etc/mpd/mpdstate" 8 | audio_output { 9 | type "pulse" 10 | name "pulse audio" 11 | device "pulse" 12 | mixer_type "hardware" 13 | } 14 | 15 | audio_output { 16 | type "fifo" 17 | name "fifo" 18 | path "/tmp/mpd.fifo" 19 | format "44100:16:2" 20 | } 21 | -------------------------------------------------------------------------------- /etc/mpv/input.conf: -------------------------------------------------------------------------------- 1 | MBTN_LEFT cycle pause 2 | UP add volume 5 3 | DOWN add volume -5 4 | d playlist_next 5 | a playlist_prev 6 | 7 | ctrl+= add audio-delay 0.050 # change audio/video sync by delaying the audio 8 | ctrl+- add audio-delay -0.050 # change audio/video sync by shifting the audio earlier 9 | -------------------------------------------------------------------------------- /etc/ncmpcpp/bindings: -------------------------------------------------------------------------------- 1 | def_key "p" 2 | add_item_to_playlist 3 | 4 | def_key "space" 5 | pause 6 | 7 | def_key "right" 8 | seek_forward 9 | 10 | def_key "left" 11 | seek_backward 12 | 13 | def_key "j" 14 | move_selected_items_down 15 | 16 | def_key "k" 17 | move_selected_items_up 18 | 19 | def_key "=" 20 | volume_up 21 | 22 | def_key "-" 23 | volume_down 24 | 25 | def_key "delete" 26 | delete_playlist_items 27 | 28 | def_key "D" 29 | delete_playlist_items 30 | 31 | def_key "s" 32 | shuffle 33 | 34 | def_key "n" 35 | next 36 | 37 | def_key "N" 38 | previous 39 | -------------------------------------------------------------------------------- /etc/ncmpcpp/config: -------------------------------------------------------------------------------- 1 | # Files 2 | mpd_music_dir = ~/opt/mus 3 | lyrics_directory = ~/etc/ncmpcpp/lyrics 4 | ncmpcpp_directory = ~/etc/ncmpcpp 5 | mpd_host = "localhost" 6 | mpd_port = "6600" 7 | mpd_connection_timeout = "5" 8 | mpd_crossfade_time = "5" 9 | 10 | visualizer_color = cyan, green, yellow, magenta, red 11 | playlist_display_mode = columns 12 | progressbar_look = "▂▂▂" # ━━─ 13 | header_visibility = no 14 | statusbar_visibility = no 15 | titles_visibility = no 16 | colors_enabled = yes 17 | main_window_color = 16 18 | progressbar_color = 9 19 | progressbar_elapsed_color = 17 20 | seek_time = 5 21 | volume_change_step = 5 22 | message_delay_time = 1 23 | 24 | # --- 25 | # Layouts 26 | # --- 27 | 28 | current_item_prefix = "$(16_black)" 29 | current_item_suffix = "$/r$(end)" 30 | 31 | now_playing_prefix = "$(17)" 32 | now_playing_suffix = "$9" 33 | #now_playing_suffix = "$(17) * $9" 34 | 35 | song_status_format = $/b{%t}|{%f} 36 | song_list_format = "%a - %t$R$(end) " 37 | song_library_format = $/b{{%a - %t} (%b)}|{%f} 38 | #song_columns_list_format = "(50)[08]{ar} (50)[16]{t}" 39 | song_columns_list_format = "(4f)[]{} (90)[]{t}" 40 | -------------------------------------------------------------------------------- /etc/nvim/colors/simple.vim: -------------------------------------------------------------------------------- 1 | let g:colors_name='simple' 2 | 3 | syntax clear 4 | 5 | " spellcheck 6 | hi SpellBad ctermbg=none cterm=underline 7 | hi SpellCap ctermbg=none cterm=none 8 | hi SpellRare ctermbg=none cterm=none 9 | 10 | " netrw file browser 11 | 12 | hi question ctermfg=none " symlink 13 | hi NetrwExe ctermfg=none 14 | hi directory ctermfg=none 15 | hi NetrwClassify ctermfg=none 16 | 17 | " bars 18 | hi LineNr ctermfg=8 19 | hi CursorLineNr ctermfg=16 cterm=none 20 | hi StatusLine ctermfg=15 21 | hi VertSplit ctermbg=8 ctermfg=0 22 | 23 | " selected line/column 24 | hi StatusLineNC ctermfg=15 25 | hi CursorLine cterm=none 26 | 27 | " autocomplete 28 | hi Pmenu ctermbg=8 ctermfg=15 cterm=none 29 | hi PmenuSel ctermbg=8 ctermfg=4 cterm=none 30 | hi PmenuSbar ctermbg=8 ctermfg=8 cterm=none 31 | hi PmenuThumb ctermbg=8 ctermfg=8 cterm=none 32 | hi WildMenu ctermbg=none ctermfg=4 cterm=none 33 | 34 | " search 35 | hi Search ctermfg=16 ctermbg=none cterm=underline 36 | hi MatchParen ctermfg=16 ctermbg=none cterm=underline 37 | 38 | " other 39 | hi GitGutterAdd ctermfg=16 40 | hi GitGutterChange ctermfg=16 41 | hi GitGutterDelete ctermfg=17 42 | hi gitcommitSummary ctermfg=15 43 | hi DiffAdd ctermfg=3 44 | hi DiffChange ctermfg=2 45 | hi DiffDelete ctermfg=1 46 | hi Visual ctermbg=8 ctermfg=15 47 | hi Normal ctermbg=none ctermfg=15 cterm=none 48 | hi EndOfBuffer ctermbg=none ctermfg=0 cterm=none 49 | hi SignColumn ctermbg=none 50 | hi WarningMsg ctermbg=none ctermfg=11 cterm=none 51 | hi ErrorMsg ctermfg=1 ctermbg=none 52 | hi error ctermfg=1 ctermbg=none 53 | hi todo ctermfg=2 ctermbg=none 54 | 55 | " ale 56 | hi ALEWarningSign ctermfg=2 57 | hi ALEWarning ctermfg=2 cterm=underline 58 | hi AleErrorSign ctermfg=1 59 | hi AleError ctermfg=1 cterm=underline 60 | 61 | " general lang syntax 62 | hi Comment ctermfg=7 63 | hi Constant ctermfg=15 64 | hi String ctermfg=16 65 | hi Character ctermfg=1 66 | hi Number ctermfg=none 67 | hi Boolean ctermfg=none 68 | hi Float ctermfg=none 69 | hi Identifier ctermfg=none cterm=none 70 | hi Function ctermfg=none 71 | hi Conditional ctermfg=none 72 | hi Repeat ctermfg=15 73 | hi Label ctermfg=4 74 | hi Operator ctermfg=none 75 | hi Keyword ctermfg=none 76 | hi Exception ctermfg=none 77 | hi Include ctermfg=none 78 | hi Define ctermfg=none 79 | hi Macro ctermfg=none 80 | hi PreCondit ctermfg=none 81 | hi Type ctermfg=none 82 | hi StorageClass ctermfg=15 83 | hi PreProc ctermfg=16 84 | hi Structure ctermfg=none 85 | hi Special ctermfg=15 86 | hi SpecialChar ctermfg=none 87 | hi Underliend ctermfg=none cterm=underline 88 | hi Ignore ctermfg=none 89 | hi Error ctermfg=none cterm=bold 90 | hi Todo ctermfg=none cterm=bold 91 | hi Statement ctermfg=none 92 | hi Delimiter ctermfg=none 93 | hi Title ctermfg=none 94 | 95 | " 96 | " lang-specific syntax adjustments 97 | " 98 | 99 | " css 100 | hi cssUrl ctermfg=none cterm=italic 101 | hi cssBraces ctermfg=15 102 | hi cssTagName ctermfg=none 103 | hi cssImportant ctermfg=none 104 | hi cssClassName ctermfg=none 105 | hi cssAttrRegion ctermfg=none 106 | hi cssIdentifier ctermfg=none 107 | hi cssDefinition ctermfg=none 108 | hi cssClassNameDot ctermfg=none 109 | hi cssFunctionName ctermfg=none 110 | hi cssPseudoClassId ctermfg=none 111 | hi cssUnitDecorators ctermfg=none 112 | hi cssBackgroundProp ctermfg=none 113 | hi cssUnitDecorators ctermfg=none 114 | hi cssAttributeSelector ctermfg=none 115 | hi cssAttributeSelector ctermfg=none 116 | 117 | hi! link shQuote String 118 | 119 | " md 120 | hi htmlItalic ctermfg=none cterm=italic 121 | hi htmlBold ctermfg=15 cterm=bold 122 | hi htmlTag ctermfg=15 123 | hi htmlEndTag ctermfg=15 124 | hi markdownLinkText ctermfg=15 125 | hi markdownURL ctermfg=16 126 | hi markdownCode ctermfg=15 127 | hi markdownBlockquote ctermfg=15 128 | hi markdownCodeDelimiter ctermfg=16 129 | hi markdownHeadingDelimiter ctermfg=15 130 | hi markdownH1 ctermfg=15 131 | 132 | 133 | " vimscript 134 | hi vimNotation ctermfg=16 135 | 136 | hi xdefaultsLabel ctermfg=16 137 | -------------------------------------------------------------------------------- /etc/nvim/colors/term.vim: -------------------------------------------------------------------------------- 1 | let g:colors_name='term' 2 | 3 | set numberwidth=1 4 | 5 | " spellcheck 6 | hi SpellBad ctermfg=none ctermbg=none cterm=underline 7 | hi SpellCap ctermfg=none ctermbg=none cterm=underline 8 | hi SpellRare ctermfg=none ctermbg=none cterm=underline 9 | hi SpellLocal ctermfg=none ctermbg=none cterm=underline 10 | 11 | " netrw file browser 12 | hi Question ctermfg=6 13 | hi netrwExe ctermfg=3 14 | hi netrwDir ctermfg=5 15 | hi netrwClassify ctermfg=8 16 | 17 | " bars 18 | hi LineNr ctermfg=8 19 | hi StatusLine ctermfg=15 20 | hi VertSplit ctermbg=8 ctermfg=0 21 | 22 | " selected line/column 23 | hi StatusLineNC ctermfg=15 24 | hi CursorLineNr ctermfg=7 25 | hi CursorLine cterm=none 26 | 27 | " autocomplete 28 | hi Pmenu ctermbg=8 ctermfg=15 cterm=none 29 | hi PmenuSel ctermbg=8 ctermfg=4 cterm=none 30 | hi PmenuSbar ctermbg=8 ctermfg=8 cterm=none 31 | hi PmenuThumb ctermbg=8 ctermfg=8 cterm=none 32 | hi WildMenu ctermbg=none ctermfg=4 cterm=none 33 | 34 | " search 35 | hi Search ctermfg=16 ctermbg=none cterm=underline 36 | hi MatchParen ctermfg=16 ctermbg=none cterm=underline 37 | 38 | " other 39 | hi gitcommitSummary ctermfg=15 40 | hi DiffAdd ctermfg=3 41 | hi DiffChange ctermfg=2 42 | hi DiffDelete ctermfg=1 43 | hi GitGutterAdd ctermfg=16 44 | hi GitGutterChange ctermfg=16 45 | hi GitGutterDelete ctermfg=17 46 | hi Visual ctermbg=8 ctermfg=15 47 | hi Normal ctermbg=none ctermfg=15 cterm=none 48 | hi EndOfBuffer ctermbg=none ctermfg=0 cterm=none 49 | hi SignColumn ctermbg=none 50 | hi WarningMsg ctermbg=none ctermfg=11 cterm=none 51 | hi ErrorMsg ctermfg=1 ctermbg=none 52 | hi error ctermfg=1 ctermbg=none 53 | hi todo ctermfg=2 ctermbg=none 54 | 55 | " ale 56 | hi ALEWarningSign ctermfg=2 57 | hi ALEWarning ctermfg=2 cterm=underline 58 | hi AleErrorSign ctermfg=1 59 | hi AleError ctermfg=1 cterm=underline 60 | 61 | " general lang syntax 62 | hi Comment ctermfg=8 63 | hi Constant ctermfg=15 64 | hi String ctermfg=16 65 | hi Character ctermfg=1 66 | hi Number ctermfg=none 67 | hi Boolean ctermfg=12 68 | hi Float ctermfg=4 69 | hi Identifier ctermfg=7 70 | hi Function ctermfg=3 71 | hi Conditional ctermfg=2 72 | hi Repeat ctermfg=15 73 | hi Label ctermfg=4 74 | hi Operator ctermfg=16 75 | hi Keyword ctermfg=1 76 | hi Exception ctermfg=1 77 | hi Include ctermfg=2 78 | hi Define ctermfg=2 79 | hi Macro ctermfg=1 80 | hi PreCondit ctermfg=1 81 | hi Type ctermfg=none 82 | hi StorageClass ctermfg=15 83 | hi PreProc ctermfg=17 84 | hi Structure ctermfg=5 85 | hi Special ctermfg=15 86 | hi SpecialChar ctermfg=5 87 | hi Underliend ctermfg=1 cterm=underline 88 | hi Ignore ctermfg=1 89 | hi Error ctermfg=1 cterm=bold 90 | hi Todo ctermfg=3 cterm=bold 91 | hi Statement ctermfg=none cterm=bold 92 | hi Delimiter ctermfg=16 93 | hi Title ctermfg=4 94 | 95 | " 96 | " lang-specific syntax adjustments 97 | " 98 | 99 | " css 100 | hi cssUrl ctermfg=1 cterm=italic 101 | hi cssBraces ctermfg=15 102 | hi cssTagName ctermfg=16 103 | hi cssImportant ctermfg=17 104 | hi cssClassName ctermfg=3 105 | hi cssAttrRegion ctermfg=16 106 | hi cssIdentifier ctermfg=4 107 | hi cssDefinition ctermfg=16 108 | hi cssClassNameDot ctermfg=3 109 | hi cssFunctionName ctermfg=16 110 | hi cssPseudoClassId ctermfg=16 111 | hi cssUnitDecorators ctermfg=16 112 | hi cssBackgroundProp ctermfg=15 113 | hi cssUnitDecorators ctermfg=none 114 | hi cssAttributeSelector ctermfg=3 115 | hi cssAttributeSelector ctermfg=3 116 | 117 | 118 | " sh 119 | hi shOperator ctermfg=17 120 | hi shConditional ctermfg=15 121 | hi shDerefSimple ctermfg=17 122 | hi shVariable ctermfg=15 123 | hi shStatement ctermfg=15 124 | hi shAlias ctermfg=15 125 | hi shSetList ctermfg=15 126 | "hi shQuote ctermfg=7 127 | hi! link shQuote String 128 | hi shFunction ctermfg=16 129 | hi shHereDoc ctermfg=15 130 | 131 | 132 | " md 133 | hi htmlItalic ctermfg=none cterm=italic 134 | hi htmlBold ctermfg=15 cterm=bold 135 | hi htmlTag ctermfg=15 136 | hi htmlEndTag ctermfg=15 137 | hi markdownLinkText ctermfg=15 138 | hi markdownURL ctermfg=16 139 | hi markdownCode ctermfg=15 140 | hi markdownBlockquote ctermfg=15 141 | hi markdownCodeDelimiter ctermfg=17 142 | hi markdownHeadingDelimiter ctermfg=15 143 | hi markdownH1 ctermfg=15 144 | 145 | 146 | " vimscript 147 | hi vimNotation ctermfg=7 148 | 149 | 150 | hi xdefaultsLabel ctermfg=16 151 | -------------------------------------------------------------------------------- /etc/nvim/init.vim: -------------------------------------------------------------------------------- 1 | " 2 | " ,=,e 3 | " init.vim 4 | " 5 | 6 | set clipboard^=unnamed,unnamedplus 7 | 8 | " indentation 9 | set tabstop=2 " Number of visual spaces per Tab 10 | set softtabstop=2 " Number of spaces in tab when editing 11 | set shiftwidth=2 " Number of spaces to use for autoindent 12 | set nocopyindent 13 | set nosmartindent 14 | "set expandtab 15 | 16 | " search 17 | set incsearch " Search as characters are typed 18 | set hlsearch " Highlight matches 19 | set ignorecase " Ignore case when searching 20 | set smartcase " Ignore case when only lower case is typed 21 | 22 | " misc 23 | set cursorline " Highlight the line that the cursor is on 24 | set mouse=a " Mouse support 25 | set linebreak " Don't wrap the middle of a word 26 | set fcs=eob:\ 27 | color simple 28 | 29 | "cnoreabbrev rm !del %:next 30 | 31 | " whitespace at the end of the line 32 | hi! ExtraWhitespace ctermbg=red guibg=red 33 | autocmd BufWinEnter * match ExtraWhitespace /\s\+$/ 34 | autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@ :setlocal spell! spelllang=ena 40 | nnoremap :setlocal spell! spelllang=en 41 | set spellcapcheck= 42 | 43 | " 44 | " Plugins 45 | " 46 | call plug#begin() 47 | Plug 'dense-analysis/ale' 48 | Plug 'machakann/vim-sandwich' 49 | Plug 'airblade/vim-gitgutter' 50 | Plug 'elkowar/kmonad.vim' 51 | Plug 'tpope/vim-dadbod' 52 | call plug#end() 53 | set updatetime=100 54 | 55 | 56 | " statusline 57 | source $HOME/etc/nvim/statusline.vim 58 | hi bl ctermfg=8 59 | hi gr ctermfg=7 60 | set laststatus=0 61 | set rulerformat=%30(%=%#bl#%l,%c\ \ %#gr#%t%) 62 | 63 | " fallback colour scheme for ttys due to using color16 in main one 64 | if $TERM == 'linux' 65 | colorscheme desert 66 | set background=dark 67 | hi cursorLine cterm=none 68 | hi matchparen cterm=none ctermfg=15 ctermbg=0 69 | endif 70 | 71 | let g:ale_sign_error = '▍' 72 | let g:ale_sign_warning = '▍' 73 | 74 | let g:gitgutter_sign_added = '▍' 75 | let g:gitgutter_sign_modified = '▍' 76 | let g:gitgutter_sign_modified_removed = '▍' 77 | let g:gitgutter_sign_removed = '▍' 78 | let g:gitgutter_sign_removed_first_line = '▍' 79 | let g:gitgutter_sign_removed_above_and_below = '▍' 80 | 81 | 82 | " 83 | " Keybinds 84 | " 85 | 86 | set pastetoggle= 87 | 88 | "nnoremap :Rex 89 | " There's got to be a more efficient way of doing this, but whatever 90 | 91 | noremap Q :prev 92 | 93 | noremap E :next 94 | 95 | " move up/down better on long lines 96 | noremap k gk 97 | noremap j gj 98 | noremap gk 99 | noremap gj 100 | 101 | "noremap 102 | "noremap 103 | "noremap 104 | "noremap 105 | " 106 | "inoremap 107 | "inoremap 108 | "inoremap 109 | "inoremap 110 | " 111 | "vnoremap 112 | "vnoremap 113 | "vnoremap 114 | "vnoremap 115 | 116 | " move line 117 | nnoremap :m .+1== 118 | nnoremap :m .-2== 119 | inoremap :m .+1==gi 120 | inoremap :m .-2==gi 121 | nnoremap :m .+1== 122 | nnoremap :m .-2== 123 | "inoremap :m .+1==gi 124 | "inoremap :m .-2==gi 125 | 126 | nnoremap :m .+1== 127 | nnoremap :m .-2== 128 | inoremap :m .+1==gi 129 | inoremap :m .-2==gi 130 | 131 | inoremap $a 132 | inoremap ^i 133 | nnoremap $a 134 | 135 | " copy, cut & paste 136 | vnoremap "+y 137 | vnoremap "+c 138 | vnoremap "+p 139 | "nnoremap

"+p 140 | inoremap "+pa 141 | 142 | let mapleader = "," 143 | let g:mapleader = "," 144 | nnoremap x "_x 145 | vnoremap x "_x 146 | nnoremap d "_d 147 | nnoremap D "_D 148 | vnoremap d "_d 149 | nnoremap d "+d 150 | nnoremap D "+D 151 | vnoremap d "+d 152 | 153 | nnoremap d "+d 154 | nnoremap D "+D 155 | vnoremap d "+d 156 | 157 | inoremap :wa 158 | nnoremap :w 159 | 160 | " toggle sidebars 161 | nnoremap :let [&nu, &rnu] = [!&rnu, &nu+&rnu==1] 162 | nnoremap :GitGutterToggle 163 | nnoremap :ALEToggle 164 | 165 | inoremap :w !bash 166 | nnoremap :w !bash 167 | 168 | " Output the current syntax group 169 | map :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' 170 | \ . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" 171 | \ . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">" 172 | 173 | nnoremap K :vert Man 174 | 175 | runtime rename.vim 176 | autocmd BufNewFile,BufRead,BufEnter * syn match matchURL /http[s]\?:\/\/[[:alnum:]%\/_#.-]*/ 177 | hi matchURL cterm=underline ctermfg=12 178 | -------------------------------------------------------------------------------- /etc/nvim/rename.vim: -------------------------------------------------------------------------------- 1 | " Rename2.vim - Rename a buffer within Vim and on disk 2 | " 3 | " Copyright July 2009 by Manni Heumann 4 | " 5 | " based on Rename.vim 6 | " Copyright June 2007 by Christian J. Robinson 7 | " 8 | " Distributed under the terms of the Vim license. See ":help license". 9 | " 10 | " Usage: 11 | " 12 | " :Rename[!] {newname} 13 | 14 | command! -nargs=* -complete=file -bang Rename :call Rename("", "") 15 | 16 | function! Rename(name, bang) 17 | let l:curfile = expand("%:p") 18 | let l:curfilepath = expand("%:p:h") 19 | let l:newname = l:curfilepath . "/" . a:name 20 | let v:errmsg = "" 21 | silent! exe "saveas" . a:bang . " " . l:newname 22 | if v:errmsg =~# '^$\|^E329' 23 | if expand("%:p") !=# l:curfile && filewritable(expand("%:p")) 24 | silent exe "bwipe! " . l:curfile 25 | if delete(l:curfile) 26 | echoerr "Could not delete " . l:curfile 27 | endif 28 | endif 29 | else 30 | echoerr v:errmsg 31 | endif 32 | endfunction 33 | -------------------------------------------------------------------------------- /etc/nvim/statusline.vim: -------------------------------------------------------------------------------- 1 | " 2 | " ,=,e 3 | " vim statusline 4 | " based on lena's 5 | " 6 | 7 | set noshowmode 8 | 9 | set laststatus=2 10 | 11 | hi Sl1 ctermfg=16 cterm=none ctermbg=none 12 | hi Sl2 ctermfg=7 cterm=none ctermbg=none 13 | hi Sl3 ctermfg=8 cterm=none ctermbg=none 14 | hi Slrese ctermfg=none cterm=none ctermbg=none 15 | function! RedrawMode(mode) 16 | " Normal mode 17 | if a:mode == 'n' 18 | return 'nor' 19 | " Insert mode 20 | elseif a:mode == 'i' 21 | return 'ins' 22 | elseif a:mode == 'R' 23 | return 'rep' 24 | " Visual mode 25 | elseif a:mode == 'v' || a:mode == 'V' || a:mode == '^V' 26 | return 'sel' 27 | " Command mode 28 | elseif a:mode == 'c' 29 | return 'cmd' 30 | " Terminal mode 31 | elseif a:mode == 't' 32 | return 'trm' 33 | endif 34 | return '' 35 | endfunction 36 | 37 | 38 | function! SetModifiedSymbol(modified) 39 | if a:modified == 1 40 | return '[*]' 41 | else 42 | return '' 43 | endif 44 | endfunction 45 | 46 | 47 | function! SetFiletype(filetype) 48 | if a:filetype == '' 49 | return 'txt' 50 | else 51 | return a:filetype 52 | endif 53 | endfunction 54 | 55 | set statusline=%#Slrese#\ %{RedrawMode(mode())}\ %#Sl1#\| 56 | " Filename 57 | set statusline+=%#Sl2#\ %.20t\ 58 | " Modified status 59 | set statusline+=%#Sl3#%{SetModifiedSymbol(&modified)} 60 | set statusline+=%#SlRese# 61 | " right side 62 | set statusline+=%= 63 | " ruler 64 | set statusline+=\%#Sl2#\ %l,%c 65 | " filetype 66 | set statusline+=\ %#Sl1#\|%#Slrese#\ %{SetFiletype(&filetype)}\ 67 | -------------------------------------------------------------------------------- /etc/picom.conf: -------------------------------------------------------------------------------- 1 | # shadows 2 | shadow = true 3 | #shadow-radius = 40 4 | #shadow-offset-x = -33 5 | #shadow-offset-y = -28 6 | #shadow-opacity = .35 7 | shadow-radius = 31 8 | shadow-offset-y = -25 9 | shadow-offset-x = -18 10 | shadow-opacity = .12 11 | xinerama-shadow-crop = true 12 | shadow-exclude = [ 13 | "g:e:conky", 14 | "g:e:slop", 15 | "g:e:boox" 16 | ] 17 | 18 | fade-exclude = [ 19 | "g:e:boox" 20 | ] 21 | 22 | # Fading 23 | fading = false 24 | fade-delta = 3 25 | fade-in-step = .03 26 | fade-out-step = .04 27 | 28 | # Other 29 | backend = "xrender" 30 | vsync = false 31 | corner-radius = 0 32 | inactive-dim = 0.00 33 | rounded-corners-exclude = [ 34 | "width=1920 && height=1080", 35 | "width=1440 && height=900 ", 36 | ] 37 | focus-exclude = [ 38 | "x=1920 && width=1440", 39 | "g:e:dmenu", 40 | ] 41 | wintypes = { notification = { full-shadow = true } } 42 | 43 | opacity-rule = [ 44 | "50:class_g = 'conky'", 45 | ]; 46 | -------------------------------------------------------------------------------- /etc/sh/.zprofile: -------------------------------------------------------------------------------- 1 | profile -------------------------------------------------------------------------------- /etc/sh/.zshrc: -------------------------------------------------------------------------------- 1 | zshrc -------------------------------------------------------------------------------- /etc/sh/bashrc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # ~/etc/sh/bashrc 3 | 4 | # login shells 5 | [[ "$0" =~ -.* ]] && . "$XDG_CONFIG_HOME/sh/profile" 6 | 7 | . "$XDG_CONFIG_HOME/sh/aliases" 8 | 9 | stty -ixon 10 | shopt -s extglob 11 | 12 | # cd without typing cd 13 | shopt -s autocd 14 | 15 | # lazy git / ls 16 | bind -x '"\C-n": clear; git status -sb' 17 | bind -x '"\C-k": clear; ls -A' 18 | 19 | # non-greedy ^w 20 | stty werase undef 21 | bind '"\C-w": backward-kill-word' 22 | 23 | # cycle autocomplete 24 | # @TODO @FIXME: buggy when pasting tabs :( (this is a st problem) 25 | bind '"\C-t": complete' 26 | bind '"\t": menu-complete' 27 | bind '"\e[Z": menu-complete-backward' 28 | 29 | # open command in editor 30 | bind '"\C-f": edit-and-execute-command' 31 | 32 | # history 33 | HISTFILE="$XDG_CONFIG_HOME/sh/bash-history" 34 | HISTSIZE= 35 | HISTFILESIZE= 36 | bind '"\e[A": history-search-backward' 37 | bind '"\e[B": history-search-forward' 38 | 39 | # 40 | # prompt 41 | # 42 | 43 | # readable colours when using the tty, which doesn't have annaisms 44 | [[ "$TERM" = linux ]] && 45 | bash_shell_accent=$'\033[34m' bash_shell_accent2=$'\033[31m' || 46 | bash_shell_accent=$'\033[38;5;16m' bash_shell_accent2=$'\033[38;5;17m' 47 | 48 | # cute sudo 49 | export SUDO_PROMPT=$'pass for\033[38;05;16m %u\033[0m ' 50 | 51 | # cute cnf 52 | command_not_found_handle() { 53 | d "$@" && return 54 | printf 'not found: %s%s\033[0m\n' "$bash_shell_accent" "$1" >&2 55 | return 127 56 | } 57 | 58 | # main prompt 59 | PS1='\[\033[0m\]\[$bash_shell_col\] > \[\033[0m\]' 60 | PROMPT_COMMAND=_prompt 61 | 62 | _prompt() { 63 | ## exit status 64 | case $? in 65 | 0) bash_shell_col=$bash_shell_accent;; 66 | *) bash_shell_col=$bash_shell_accent2 67 | esac 68 | 69 | stty echo 70 | 71 | ## git 72 | git=' ' 73 | timeout 0.04 git rev-parse &>/dev/null && { 74 | out=$(git status --porcelain) 75 | git='*' 76 | [[ "$out" =~ .*^.[MD].* ]] && git=$'\e[37m*' 77 | [[ "$out" =~ .*^[MA].* ]] && git=$'\e[38;5;16m*' 78 | } 79 | 80 | ## display dir in top-right 81 | eq "$PWD" "$HOME" && v='~' || v=${PWD##*/} 82 | op=${OLDPWD##*/} 83 | 84 | # save cursor pos, move cursor to the top-right 85 | # then delete the previous contents 86 | # then print the new dir and restore cursor pos 87 | printf '%b%b%b' \ 88 | "\033[s\033[0;9999H" \ 89 | "\033[${#op}D\033[K" \ 90 | "\033[999C\033[${#v}D${git}${v}\033[u" 91 | } 92 | -------------------------------------------------------------------------------- /etc/sh/mkshrc: -------------------------------------------------------------------------------- 1 | # if login shell, source profile 2 | case "$-" in 3 | *l*) . ~/etc/sh/profile;; 4 | esac 5 | 6 | # fancy prompt 7 | PS1=$'$([ $? = 0 ] && printf "\e[38;05;16m" || printf "\e[90m")| \e[0m' 8 | export SUDO_PROMPT=$'\e[37mpass for \e[0m%u ' 9 | 10 | # fancy command not found 11 | cnf() { 12 | # only continue if the command wasn't found 13 | [ "$?" = 127 ] && { 14 | # clear default message 15 | printf "\033[1A\033[2K" 16 | # print new message 17 | printf '\033[37mnot found\033[0m\n' 18 | } 19 | } 20 | trap 'cnf' ERR 21 | 22 | 23 | # aliases 24 | alias ..="cd .." 25 | alias ...="cd ../.." 26 | . ~/etc/sh/aliases 27 | 28 | 29 | # binds 30 | bind '^f=edit-line' 31 | bind '^l=clear-screen' 32 | bind -m '^j=^U clear; git status^M^Y' 33 | bind -m '^k=^U clear; ls^M^Y' 34 | # disable ^s 35 | stty -ixon 36 | 37 | # history 38 | bind '^[[A=search-history-up' 39 | bind '^[[B=search-history-down' 40 | export HISTFILE="$HOME/etc/sh/history" 41 | 42 | # vim: ft=bash 43 | -------------------------------------------------------------------------------- /etc/sh/profile: -------------------------------------------------------------------------------- 1 | # 2 | # profile 3 | # 4 | 5 | export \ 6 | null=/dev/null \ 7 | opt=$HOME/opt \ 8 | data=$HOME/usr \ 9 | conf=$HOME/etc \ 10 | apps=$HOME/opt/apps \ 11 | cache=$HOME/tmp/cache 12 | 13 | export \ 14 | XDG_DATA_HOME="$data" \ 15 | XDG_CACHE_HOME="$cache" \ 16 | XDG_CONFIG_HOME="$conf" \ 17 | LC_TIME=en_CA 18 | 19 | # garbage dotfile apps 20 | export \ 21 | GOPATH="$cache/go" \ 22 | CARGO_HOME="$cache/cargo" \ 23 | LESSHISTFILE="$null" \ 24 | XAUTHORITY="$cache/xauth" \ 25 | GNUPGHOME="$opt/apps/gpg" \ 26 | WEECHAT_HOME="$conf/weechat" \ 27 | GTK2_RC_FILES="$conf/gtk-2.0/gtkrc-2.0" \ 28 | NVIM_LOG_FILE=/dev/null \ 29 | RUSTUP_HOME=$HOME/opt/apps 30 | 31 | # user 32 | export \ 33 | EDITOR="nvim" \ 34 | scr_dir="$opt/scr" \ 35 | rec_dir="$opt/scr" \ 36 | audrey_dir="$opt/scr" \ 37 | scr_file='$(date +%s.%3N).png' \ 38 | rec_file='$(date +%s.%3N).mp4' \ 39 | audrey_file='$(date +%s.%3N).mp3' 40 | 41 | export \ 42 | PAGER="nvim -R" \ 43 | MANPAGER="nvim '+Man!'" \ 44 | MANWIDTH=999 45 | #MANPAGER="nvim -c 'set ft=man' -" 46 | 47 | # disable dbind accessibility bus warning - https://unix.stackexchange.com/a/532589 48 | export NO_AT_BRIDGE=1 49 | 50 | 51 | export QT_QPA_PLATFORMTHEME=gtk2 52 | 53 | # colours lol 54 | ls="di=35:ln=36:pi=42:tw=0:ow=0:st=0:*.md=31:*.css=32:ex=33" 55 | lstar="*.gz=31:*.tar=31:*.xz=31:*.zip=31:*.zst=31" 56 | lsimg="*.gif=34:*.jpeg=34:*.jpg=34:*.png=34:*.webp=34" 57 | lsvid="*.avi=34:*.mkv=34:*.mp4=34:*.webm=34" 58 | 59 | export LS_COLORS="$ls:$lstar:$lsimg:$lsvid" 60 | 61 | # nix lol 62 | export \ 63 | NIX_PATH=$apps/.nix-defexpr/channels \ 64 | NIX_PROFILES="/nix/var/nix/profiles/default $HOME/.nix-profile" \ 65 | NIX_SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt 66 | 67 | export PATH="$(find ~/bin -maxdepth 1 -type d | tr '\n' ':')/usr/local/bin:/usr/bin" 68 | 69 | star() { ( "$@" & ) >$null 2>&1; } 70 | star systemctl --user import-environment >/dev/null 2>&1 71 | star kiwmi # (https://github.com/buffet/kiwmi) 72 | star rmd 73 | star sudo kbdrate -d 200 -r 60 74 | #star archi 75 | #star shortcuts 76 | star sudo cpupower frequency-set --governor performance 77 | 78 | sudo rm /etc/systemd/system/getty@tty1.service.d/autologin.conf 2>/dev/null 79 | ! [ -e /tmp/session ] && [ "$(tty)" = /dev/tty1 ] && :>/tmp/session && sleep 1 && x 80 | 81 | # vim: ft=sh 82 | -------------------------------------------------------------------------------- /etc/sh/sc: -------------------------------------------------------------------------------- 1 | # dirs 2 | h ~ 3 | gi ~/src 4 | dl ~/tmp 5 | dots ~/opt/dots 6 | bks ~/opt/bks 7 | db ~/opt/bks 8 | 9 | wp ~/src/walls 10 | fet ~/src/fetsh 11 | gg ~/src/gkay 12 | 13 | scrs ~/opt/scr 14 | pics ~/opt/scr 15 | recs ~/opt/scr 16 | gf ~/tmp/cache/gkif 17 | tu ~/opt/turtles 18 | em /hd/discord/emotes 19 | 20 | oth /hd/linuxdistros 21 | ot /hd2/linuxdistros 22 | dw /hd/media/DoctorWho 23 | tw /hd/media/Torchwood 24 | sp ~/etc/startpage 25 | fchr ~/etc/firefox/main/chrome 26 | 27 | # files 28 | # shells 29 | sc ~/etc/sh/sc 30 | z ~/etc/sh/.zshrc 31 | zh ~/etc/sh/zsh-history 32 | a ~/etc/sh/aliases 33 | pro ~/etc/sh/profile 34 | 35 | # wm 36 | com ~/etc/picom.conf 37 | bs ~/etc/bspwm/bspwmrc 38 | drc ~/etc/dunst/dunstrc 39 | sx ~/etc/sxhkd/sxhkdrc 40 | sb ~/etc/sxhkd/bspwm 41 | so ~/etc/sxhkd/other 42 | 43 | # X 44 | xin ~/etc/xorg/rc 45 | xres ~/etc/xorg/res 46 | uc ~/etc/firefox/main/chrome/userChrome.css 47 | ucc ~/etc/firefox/main/chrome/userContent.css 48 | 49 | vimrc ~/etc/nvim/init.vim 50 | -------------------------------------------------------------------------------- /etc/sh/zshrc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | # ~/etc/sh/zshrc 3 | 4 | set -k # allow comments in shell 5 | setopt auto_cd # cd by just typing the directory name 6 | unsetopt flowcontrol # disable ^s/^q 7 | . "$ZDOTDIR/aliases" # aliases 8 | setopt SHwordsplit # disable zsh's stupid variable auto-quoting 9 | 10 | # 11 | # keybinds 12 | # 13 | 14 | bindkey '^a' beginning-of-line # ^a 15 | bindkey '^e' end-of-line # ^e 16 | bindkey '^[[3~' delete-char # delete 17 | bindkey '^[[1;5C' forward-word # ^right [st] 18 | bindkey '^[[1;5D' backward-word # ^left [st] 19 | bindkey '^[Oc' forward-word # ^right [urxvt] 20 | bindkey '^[Od' backward-word # ^left [urxvt] 21 | bindkey '^[^M' self-insert-unmeta # alt-return 22 | bindkey '^[[Z' reverse-menu-complete # shift-tab 23 | bindkey '^r' history-incremental-search-backward # ^e 24 | 25 | load() { autoload -U "$1"; zle -N "$1"; bindkey "$2" "$1"; } 26 | 27 | nop() { :; } 28 | load nop '^[[O' 29 | # stop clearing input when using alt-arrows 30 | load nop '^[[1;3D' 31 | load nop '^[[1;3C' 32 | 33 | # open current command in EDITOR 34 | load edit-command-line '^x' 35 | 36 | # arrow keys search history 37 | load up-line-or-beginning-search '^[[A' 38 | load up-line-or-beginning-search '^s' 39 | load down-line-or-beginning-search '^[[B' 40 | load down-line-or-beginning-search '^f' 41 | 42 | # git status on ^j 43 | kgs() { clear; git status -sb; zle redisplay; } 44 | zle -N kgs; bindkey ^j kgs 45 | 46 | # ls on ^k 47 | kls() { clear; ls -A; zle redisplay; } 48 | zle -N kls; bindkey ^k kls 49 | 50 | # 51 | # history 52 | # 53 | 54 | export HISTSIZE=999999 \ 55 | SAVEHIST=999999 \ 56 | HISTFILE="${ZDOTDIR:-$HOME}/zsh-history" 57 | setopt histignorespace 58 | setopt extended_history # record timestamp of command in HISTFILE 59 | setopt hist_ignore_dups # ignore duplicated commands in history 60 | setopt share_history # save/reload command history without exiting the shell 61 | 62 | # 63 | # autocompletion 64 | # 65 | 66 | setopt NO_NOMATCH # disable "no matching glob" error 67 | setopt complete_in_word 68 | zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" 69 | zstyle ':completion:*' menu select 70 | zstyle ':completion:*' special-dirs true 71 | zstyle ':completion:*' matcher-list \ 72 | 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*' 73 | autoload -U compinit && compinit -C 74 | 75 | # 76 | # prompt 77 | # 78 | 79 | setopt prompt_subst # enable command execution in prompt 80 | [ "$SSH_CLIENT" ] && export TERM=linux DISPLAY=:0 81 | 82 | topdir() { 83 | ## display dir in top-right 84 | [ "$PWD" = "$HOME" ] && v='~' || v=${PWD##*/} 85 | op=${OLDPWD##*/} 86 | 87 | # save cursor pos, move cursor to the top-right 88 | # then delete the previous contents 89 | # then print the new dir and restore cursor pos 90 | printf '%b%b%b' \ 91 | "\033[s\033[0;9999H" \ 92 | "\033[${#op}D\033[K" \ 93 | "\033[999C\033[${#v}D$v\033[u" 94 | } 95 | 96 | # fancy prompts 97 | command_not_found_handler() { 98 | printf 'not found:\033[38;05;%sm %s\033[0m\n' "$acc" "$0" >&2 99 | return 127 100 | } 101 | 102 | case $TERM in 103 | linux) acc=4 acc2=1 PROMPT=' %1~%F{%(?.4.1)} %(!.|./) %f';; 104 | *) acc=16 acc2=17 PROMPT=$'%{\e[?25h\e[4 q%}%{$(topdir)%}%F{%(?.$acc.$acc2)} > %f' 105 | esac 106 | 107 | export SUDO_PROMPT=$'pass for\033[38;05;'"${acc}m %u"$'\033[0m ' 108 | 109 | [ "$TERM" = rxvt-unicode-256color ] && { 110 | . ~/etc/colours/current 111 | printf '%b%b%b' \ 112 | "\033]4;16;#$accent\007" \ 113 | "\033]4;17;#$accent2\007" \ 114 | "\033]4;18;#$contrast\007" 115 | 116 | cat << EOF 117 | ( ( 118 | )))) 119 | _ .---. 120 | ( |\`---'| Would you like a cup 121 | \\| | of tea, sir? 122 | : .___, : 123 | \`-----' 124 | EOF 125 | No() { echo "That is not an option. Would you like a cup of tea, sir?"; } 126 | };: 127 | -------------------------------------------------------------------------------- /etc/startpage/index.html: -------------------------------------------------------------------------------- 1 | 2 | ~ 3 | 4 |

5 | media 6 | youtube 7 | subs 8 |
9 |
10 | social 11 | github 12 | mail 13 |
14 | 15 | -------------------------------------------------------------------------------- /etc/startpage/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | font: var(--font-weight) var(--font-size) var(--font); 3 | background: var(--bg1); 4 | /* align to center */ 5 | height: 100%; 6 | display: flex; 7 | align-items: center; 8 | justify-content: center; 9 | margin: 0; 10 | } 11 | 12 | nobody { 13 | /* flow horizontally */ 14 | display: flex; 15 | } 16 | 17 | div > * { 18 | display: block; 19 | text-decoration: none; 20 | padding: 10px 40px; 21 | text-align: center; 22 | } 23 | 24 | a { color: var(--fg1); } 25 | span, a:hover { color: var(--fg2); } 26 | -------------------------------------------------------------------------------- /etc/sxhkd/bspwm: -------------------------------------------------------------------------------- 1 | XF86Tools 2 | bspc node -c 3 | {alt,super} + q 4 | bspc node -{c,k} 5 | 6 | super + {n,m} 7 | bspc desktop -l {tiled,monocle} 8 | 9 | super + {_,shift} + Escape 10 | {wm restart,:} 11 | #wm {restart,quit} 12 | 13 | super + r 14 | bspc node -t "~floating" 15 | 16 | super + {_,ctrl,shift} + {a,s,w,d} 17 | {focus,move,resize} {west,south,north,east} 18 | 19 | shift + alt + {d,a} 20 | bspc node -d "{next,prev}" --follow; \ 21 | #nottop a $(bspc query -D -d focused --names) 22 | 23 | ctrl + alt + {d,a} 24 | bspc desktop -f {next,prev}; \ 25 | #nottop no $(bspc query -D -d focused --names) 26 | 27 | ctrl + super + {1-6,v,c,x,z} 28 | a={1-9,0}; \ 29 | bspc node -d $a && \ 30 | nottop a $a 31 | 32 | super + {1-6,v,c,x,z} 33 | a={1-9,0}; \ 34 | bspc desktop -f $a || \ 35 | notify-send failed 36 | 37 | alt {_,shift} + Tab 38 | bspc node -f {next, prev}.!hidden.window 39 | 40 | super shift {z,x} 41 | bspc node @^1:focused:/ -s @^2:focused:/ || \ 42 | bspc node @^1:focused:/ -d ^2:focused || \ 43 | bspc node @^2:focused:/ -d ^1:focused 44 | -------------------------------------------------------------------------------- /etc/sxhkd/sxhkdrc: -------------------------------------------------------------------------------- 1 | # 2 | # ,=,e 3 | # 4 | 5 | ctrl + alt + 3 6 | kb 7 | 8 | super + {alt + space, Return, e} 9 | date +%s >> ~/tmp/cache/sttimes & st 10 | #term -pixmap '/home/d/src/walls/uk.png;style=scale' 11 | 12 | #super + g 13 | # st -g 60x8 -c menu -e sh -c 'printf "[%s] %s\n" "$(date +%Y-%m-%d_%H-%M-%S)" "$(head -n1)" >> ~/opt/notes' 14 | #xdotool keyup super; eval "$(xdotool getmouselocation --shell)"; xdotool mousemove_relative 46 376; sleep 0.05; xdotool click 1 click 1; sleep 0.1; xdotool mousemove 2121 842 click 1; xdotool mousemove $X $Y 15 | 16 | #super + b 17 | # surphace 18 | 19 | super + space 20 | launch 21 | 22 | super + y 23 | keepassxc 24 | 25 | XF86Launch8 26 | xdotool keyup XF86Launch8; xdotool key ctrl+w 27 | 28 | {XF86Launch7, shift XF86Launch7,super BackSpace} 29 | mic toggle 30 | 31 | super ctrl BackSpace 32 | mic query 33 | 34 | {_,@}Pause 35 | mic {on,off} 36 | 37 | #button9 38 | # mic on 39 | # 40 | #@button9 41 | # mic off 42 | 43 | ctrl + shift + {1,2,Escape} 44 | mic {on,off,query} 45 | 46 | #ctrl + alt + space 47 | # xdotool keyup space; xdotool key --clearmodifiers ctrl+Return 48 | # 49 | #ctrl + shift + space 50 | # xdotool keyup space; xdotool key --clearmodifiers Shift+Return 51 | # 52 | #alt + shift + space 53 | # xdotool keyup space; xdotool key --clearmodifiers alt+Return 54 | # 55 | #ctrl + space 56 | # xdotool keyup space; xdotool key --clearmodifiers Return 57 | 58 | super + {u,i} 59 | {copy,emoji} 60 | 61 | super + f 62 | GTK_THEME=Materia-light-compact /usr/lib/firefox/firefox -P main 63 | #taskset -c 8,9,10,11 firefox -P main 64 | #firefox -P main 65 | 66 | super g 67 | pavucontrol -t 3 68 | 69 | super b 70 | nvidia-settings 71 | 72 | 73 | # power menu 74 | super + h 75 | pome 76 | 77 | 78 | # un/mount drives 79 | ctrl + alt + {m,u} 80 | {_,u}mnt 81 | 82 | 83 | # send a notif of the time and battery 84 | super + t 85 | datew 86 | 87 | # change theme 88 | ctrl + alt + s 89 | ts.sh 90 | 91 | # mousebind 92 | {XF86Launch6,super + k} 93 | xdotool keyup XF86Launch6; shade picker 94 | 95 | #super + shift + 2 96 | # pgrep mumble && hw 2 97 | 98 | #{super,alt} + shift + 1 99 | # if pgrep -f '[s]t -c taskman'; then \ 100 | # hw 1; \ 101 | # else \ 102 | # st -c taskman -e bash -c 'while :; do sudo -E htop -d 10; zsh; done' & \ 103 | # fi 104 | 105 | super + shift + {0,1-9} 106 | hw {0,1-9} 107 | 108 | alt + shift + {0,1-9} 109 | hw {0,1-9} c 110 | 111 | 112 | # 113 | # screenshots 114 | # 115 | Scroll_Lock 116 | scr -G$(6r f -f) "$HOME/tmp/dlh/$(date +%s).png" 117 | 118 | {Print,ctrl alt w} 119 | scr -G$(6r f -f) 120 | 121 | # selection 122 | {shift + Print, XF86Launch5} 123 | freeze & scr -S; pkill freeze 124 | #scr -S 125 | 126 | super backslash 127 | if pgrep scr; then \ 128 | scr -s; dragon --and-exit "$(ls -c ~/opt/scr/* | head -n1)"; \ 129 | else \ 130 | scr -e -r30 -c; \ 131 | fi 132 | #super bracketright 133 | # scr -s; dragon --and-exit ~/opt/scr/"$(ls -c ~/opt/scr | head -n1)" 134 | 135 | alt {Print,ctrl x} 136 | v=$HOME/opt/scr/$(date +%s.%3N); \ 137 | donotcopy=1 scr -S "$v.png" && \ 138 | pinsel -o "$v-e.png" < "$v.png" && \ 139 | xclip -sel clip -t image/png "$v-e.png" 140 | 141 | super + {Insert, Home, Next, Prior, End} 142 | scr {_,-c -pwnd -b12,-c -e -b6,-c -pro -a -r60 -b12,-s} 143 | 144 | super {Pause, Scroll_Lock} 145 | {audrey, gkif} 146 | 147 | # 148 | # media 149 | # 150 | XF86Audio{Prev,Next,Play,Stop,Mute} 151 | vol {prev, next, p, stop, m} 152 | 153 | {_,shift,control} XF86Audio{Raise,Lower}Volume 154 | q={2,1,5}; vol {up,down} $q 155 | 156 | super + {p, Tab} 157 | vol {p, mw} 158 | 159 | 160 | 161 | ctrl + alt + t 162 | synclient TouchpadOff={0,1} 163 | 164 | 165 | 166 | super + shift + grave 167 | setxkbmap {us dvorak-l; notify-send dvlh; sleep 0.2; xkbset sticky -twokey -latchlock; xkbset exp 1 =sticky,us; notify-send qwerty; xkbset -sticky} 168 | 169 | # desaturate monitor 170 | super 0 171 | nvidia-settings -a '[DPY:DP-0]'/DigitalVibrance={-1023,0} 172 | super control 0 173 | nvidia-settings -a '[DPY:HDMI-0]'/DigitalVibrance={-1023,0} 174 | 175 | # invert monitor 176 | super {_,control} minus 177 | xrandr-invert-colors -s {0,1 &; xrandr-invert-colors -s 2} 178 | 179 | 180 | 181 | {super l,ctrl Pause} 182 | nob;lock 183 | 184 | ctrl shift Pause 185 | lock butdontblank 186 | 187 | 188 | # fuck you dunst tbh 189 | ctrl shift period 190 | dunstctl context 191 | 192 | ctrl shift grave 193 | dunstctl history-pop 194 | 195 | ctrl alt z 196 | surphace 197 | 198 | super alt Return 199 | {for win in $(xdotool search 'Minecraft*'); do xdotool click --delay 550 --repeat 9999999999 --window $win 1 & done, pkill -x xdotool} 200 | -------------------------------------------------------------------------------- /etc/xorg/rc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Tweaks 4 | # 5 | 6 | wm="${1:-bspwm}" 7 | c="${XDG_CONFIG_HOME:=$HOME/.config}" 8 | 9 | # /etc/X11/xinit/xinitrc.d/*.sh 10 | [ "$DBUS_SESSION_BUS_ADDRESS" ] || dbus-launch --exit-with-session $$ 11 | #eval export $(gnome-keyring-daemon --start) 12 | 13 | hw 0; hw \* & # clear hidden windows cache 14 | clipwatch & 15 | xmousepasteblock & # disable middle-click paste 16 | pulseaudio -D 17 | #unclutter -idle 15 & # hide cursor after 15 seconds 18 | synclient TouchpadOff=1 # disable touchpad 19 | { sleep 20; gsync; } & 20 | xrdb "$c/xorg/res" & 21 | 22 | case "$wm" in 23 | bspwm) ;; # already in the config 24 | gnome) export XDG_SESSION_TYPE=x11 GDK_BACKEND=x11 wm=gnome-session;; 25 | kde) wm=startplasma-x11;; 26 | xfce) wm=startxfce4; sxhkd &;; 27 | *) sxhkd & picom & dunst & 28 | esac 29 | 30 | { # keyboard mapping | git.io/kmonad 31 | sleep 3 32 | sudo kmonad ~/opt/dots/opt/keyboard.kbd & #sleep 2; xset r rate 200 60 33 | } & 34 | 35 | screen.sh & # change display layout 36 | sleep 0.3 37 | 38 | { sleep 3; torrent; } & 39 | #{ sleep 3; obs --startreplaybuffer; } & 40 | { sleep 1; firefox -P main; } & 41 | #torrent & 42 | #st -e sudo s-tui & 43 | #st -e re & 44 | #p1 & 45 | 46 | "$wm" 47 | -------------------------------------------------------------------------------- /etc/xorg/res: -------------------------------------------------------------------------------- 1 | Xft.dpi: 96 2 | Xft.antialias: 1 3 | Xft.autohint: 0 4 | Xft.hinting: 1 5 | Xft.lcdfilter: lcddefault 6 | Xft.hintstyle: hintfull 7 | 8 | ! 9 | ! URxvt 10 | ! 11 | 12 | !URxvt.letterSpace: -1 13 | URxvt.internalBorder: 30 14 | 15 | ! underline cursor 16 | URxvt.cursorUnderline: 1 17 | 18 | ! apparently helps with speed 19 | URxvt.skipBuiltinGlyphs: true 20 | 21 | ! copypasting 22 | URxvt.keysym.Shift-Control-V: eval:paste_clipboard 23 | URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard 24 | 25 | ! ctrl-shift thing 26 | URxvt.iso14755: false 27 | URxvt.iso14755_52: false 28 | 29 | ! mouse 30 | ! consistent selection behavior 31 | URxvt.perl-ext: default,-selection 32 | 33 | ! clickable links 34 | URxvt.perl-ext-common: default,matcher 35 | URxvt.url-launcher: /usr/bin/xdg-open 36 | URxvt.matcher.button: 1 37 | 38 | ! disable the hideous scrollbar 39 | URxvt.scrollBar: false 40 | 41 | ! dont automatically jump to the bottom when new text appears 42 | URxvt.scrollTtyOutput: false 43 | URxvt.scrollWithBuffer: true 44 | URxvt.scrollTtyKeypress: true 45 | 46 | ! dont try to scroll in apps like less 47 | URxvt.secondaryScreen: 1 48 | URxvt.secondaryScroll: 0 49 | 50 | URxvt.geometry: 92x23 51 | 52 | st.termname: st-256color 53 | st.borderpx: 30 54 | st.tabspaces: 4 55 | st.xfps: 60 56 | st.actionfps: 60 57 | st.bellvolume: 0 58 | st.cwscale: 1.0 59 | st.chscale: 1.0 60 | st.blinktimeout: 0.5 61 | 62 | #include "res.col" 63 | -------------------------------------------------------------------------------- /etc/xorg/res.col: -------------------------------------------------------------------------------- 1 | st.font: Ubuntu Mono:pixelsize=16:style=Medium 2 | URxvt.font: xft:Ubuntu Mono:Medium:pixelsize=16 3 | 4 | *.background: #ffffff 5 | *.foreground: #828791 6 | *.cursorColor: #aaaeb5 7 | 8 | *.color0: #ffffff 9 | *.color8: #aaaeb5 10 | 11 | *.color1: #eb9e9b 12 | *.color9: #eb9e9b 13 | 14 | *.color2: #edc278 15 | *.color10: #edc278 16 | 17 | *.color3: #c4de80 18 | *.color11: #c4de80 19 | 20 | *.color4: #8fc5e6 21 | *.color12: #8fc5e6 22 | 23 | *.color5: #8fc5e6 24 | *.color13: #8fc5e6 25 | 26 | *.color6: #eea8e9 27 | *.color14: #eea8e9 28 | 29 | *.color7: #B1B6BD 30 | *.color15: #828791 31 | 32 | *.color16: #eea8e9 33 | *.color17: #edc278 34 | *.color18: #ffffff 35 | 36 | 37 | tabbed.selbgcolor: #ffffff 38 | tabbed.selfgcolor: #828791 39 | tabbed.normfgcolor: #B1B6BD 40 | tabbed.normbgcolor: #f2f2f2 41 | -------------------------------------------------------------------------------- /opt/00sleep: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # /usr/lib/systemd/system-sleep/00sleep 3 | 4 | case $1 in 5 | # sleeping 6 | pre) pkill ArchiSteamFarm;; # pkill obs;; 7 | 8 | # waking 9 | post) su d -c 'archi &' 10 | #su d -c 'env -i zsh -c "XAUTHORITY=$HOME/usr/cache/xauth DISPLAY=:0 obs --startreplaybuffer &"' 11 | esac 12 | -------------------------------------------------------------------------------- /opt/chrome/colours.css: -------------------------------------------------------------------------------- 1 | :root { 2 | /* ---- */ 3 | --bg0: #000000; 4 | --bg1: #000000; 5 | --bg2: #050505; 6 | --bg3: #0a0a0a; 7 | --bg4: #0e0e0e; 8 | --button: #bfc1d520; 9 | --black: #434366; 10 | /* ---- */ 11 | --fg1: #bfc1d5; 12 | --fg2: #797b8f; 13 | --fg1o: #bfc1d588; 14 | --fg2o: #797b8f99; 15 | --disabled: #696969; 16 | /* ---- */ 17 | --accent: #8497cf; 18 | --accento: #8497cf66; 19 | --accent2: #b887cc; 20 | --contrast: #0e0e0e; 21 | /* ---- */ 22 | --red: #d26161; 23 | --yellow: #cf9b6a; 24 | --green: #a8b67a; 25 | --cyan: #83b5c2; 26 | --blue: #8497cf; 27 | --purple: #b887cc; 28 | /* ---- */ 29 | 30 | --font: "Ubuntu Mono"; 31 | --font-size: 12px; 32 | --font-weight: Bold; 33 | 34 | --font2: "Roboto Condensed"; 35 | --font2-size: 13px; 36 | --font2-weight: normal; 37 | } 38 | -------------------------------------------------------------------------------- /opt/chrome/newtab.uc.js: -------------------------------------------------------------------------------- 1 | var {classes:Cc,interfaces:Ci,utils:Cu} = Components; 2 | 3 | /* set new tab page */ 4 | try { 5 | Cu.import("resource:///modules/AboutNewTab.jsm"); 6 | var newTabURL = "file:///home/mirror/etc/startpage/index.html"; 7 | AboutNewTab.newTabURL = newTabURL; 8 | } catch(e){Cu.reportError(e);} // report errors in the Browser Console 9 | -------------------------------------------------------------------------------- /opt/chrome/tab_scroll.uc.js: -------------------------------------------------------------------------------- 1 | // Switch tabs by scrolling on the tab bar. Also works on the specified extension's sidebar. 2 | (function() { 3 | const EXT_ID = "{0ad88674-2b41-4cfb-99e3-e206c74a0076}"; 4 | const wrap = true; 5 | const scrollRight = true; 6 | const sidebarActionId = `${makeWidgetId(EXT_ID)}-sidebar-action`; 7 | 8 | gBrowser.tabContainer.addEventListener("wheel", e => scroll(e), true); 9 | document.getElementById("sidebar").onwheel = e => scroll(e, true); 10 | 11 | function scroll(e, sidebar) { 12 | let broadcaster = document.getElementById(sidebarActionId); 13 | if(sidebar && !broadcaster.hasAttribute("checked")) return; 14 | e.preventDefault(); 15 | let dir = (scrollRight ? 1 : -1) * Math.sign(e.deltaY); 16 | gBrowser.tabContainer.advanceSelectedTab(dir, wrap); 17 | } 18 | 19 | function makeWidgetId(id) { 20 | id = id.toLowerCase(); 21 | return id.replace(/[^a-z0-9_-]/g, "_"); 22 | } 23 | })(); 24 | -------------------------------------------------------------------------------- /opt/chrome/tabclick.uc.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name Tab Click 3 | // @version 1.0 4 | // @description Double click the active tab to focus the urlbar 5 | // @author https://github.com/6gk 6 | // @license https://creativecommons.org/share-your-work/public-domain/cc0/ 7 | // @compatibility Created 2019-07-04. Tested on Firefox 69.0b1 8 | // ==/UserScript== 9 | 10 | var openUrlBar = function(e) { 11 | var urlbar = document.getElementById('urlbar-input'); 12 | urlbar.focus(); 13 | }; 14 | 15 | function tabClick() { 16 | var classname = document.getElementsByClassName("tabbrowser-tab"); 17 | 18 | for (var i = 0; i < classname.length; i++) { 19 | classname[i].removeEventListener('dblclick', openUrlBar); 20 | } 21 | document.querySelector(".tabbrowser-tab[selected=\"true\"]").addEventListener('dblclick', openUrlBar); 22 | } 23 | 24 | gBrowser.tabContainer.addEventListener("TabSelect", tabClick); 25 | 26 | 27 | 28 | // add openUrlBar function to the initial tab 29 | document.querySelector(".tabbrowser-tab[selected=\"true\"]").addEventListener('dblclick', openUrlBar); 30 | gBrowser.selectedBrowser.focus(); 31 | -------------------------------------------------------------------------------- /opt/chrome/ucjs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | loc="/usr/lib/firefox-developer-edition" 4 | [ -d "$loc" ] || loc="/usr/lib/firefox" 5 | 6 | curl -Ls \ 7 | https://raw.githubusercontent.com/alice0775/userChrome.js/master/72/userChrome.js \ 8 | -o "$HOME/etc/.mozilla/firefox/*/chrome/userChrome.js" 9 | 10 | sudo curl -Ls \ 11 | https://raw.githubusercontent.com/alice0775/userChrome.js/master/72/install_folder/defaults/pref/config-prefs.js \ 12 | -o "$loc/defaults/pref/config-prefs.js" 2>/dev/null 13 | 14 | sudo curl -Ls \ 15 | https://raw.githubusercontent.com/alice0775/userChrome.js/master/72/install_folder/config.js \ 16 | -o "$loc/config.js" 2>/dev/null 17 | -------------------------------------------------------------------------------- /opt/chrome/userChrome-gay.css: -------------------------------------------------------------------------------- 1 | /* Hide tab borders */ 2 | /*#navigator-toolbox { 3 | --tabs-border: transparent !important; 4 | --tabs-border-color: transparent !important; 5 | border-bottom: 0px transparent !important; 6 | } 7 | 8 | #urlbar-background, #searchbar, 9 | .tab-background { 10 | border: 0px none transparent !important; 11 | } 12 | 13 | .tabbrowser-tab::after, .tabbrowser-tab::before { 14 | border-left: 0px transparent !important; 15 | } 16 | 17 | .tabbrowser-tabs { 18 | border:none !important; 19 | opacity: 0 !important; 20 | } 21 | 22 | /* Remove border under navbar */ 23 | /*#navigator-toolbox::after { 24 | border-bottom: 0px !important; 25 | } 26 | /* Remove border above navbar */ 27 | /*#navigator-toolbox::after { 28 | border-top: 0px !important; 29 | } 30 | 31 | /* 32 | RAINBOW 33 | RAINBOW 34 | RAINBOW 35 | RAINBOW 36 | RAINBOW 37 | RAINBOW 38 | */ 39 | 40 | :root { 41 | --red: #ffb0b0; 42 | --yellow: #fff7c6; 43 | --green: #cfffd2; 44 | --cyan: #c0ffff; 45 | --blue: #cbd4ff; 46 | --pink: #ffbfef; 47 | --accent: var(--blue); 48 | --1red: #f04141; 49 | --1yellow: #b29d21; 50 | --1green: #30ba39; 51 | --1cyan: #42b4b4; 52 | --1blue: #4665ff; 53 | --1pink: #ff31cb; 54 | } 55 | 56 | @keyframes rainbow { 57 | 0% { 58 | background-position: 0 0; 59 | } 60 | 100% { 61 | background-position: 100% 0; 62 | } 63 | } 64 | 65 | #titlebar { 66 | background: linear-gradient( 67 | to right, 68 | var(--red), 69 | var(--yellow), 70 | var(--green), 71 | var(--cyan), 72 | var(--blue), 73 | var(--pink), 74 | var(--red), 75 | var(--yellow), 76 | var(--green) 77 | ); 78 | background-size: 400% 100% !important; 79 | } 80 | */ 81 | /* -webkit-background-clip: text !important; */ 82 | /* background-clip: text !important; */ 83 | /* color: transparent !important; */ 84 | 85 | #titlebar:not(:-moz-window-inactive) { 86 | animation: rainbow 3s linear infinite !important; 87 | } 88 | -------------------------------------------------------------------------------- /opt/chrome/userContent.css: -------------------------------------------------------------------------------- 1 | @import url(colours.css); 2 | 3 | * { 4 | scrollbar-color: var(--fg1) var(--bg1); 5 | scrollbar-width: thin; 6 | } 7 | 8 | @-moz-document url(about:blank) { 9 | body:not(#ublock0-epicker) { background: var(--bg1); } 10 | } 11 | -------------------------------------------------------------------------------- /opt/comic.css: -------------------------------------------------------------------------------- 1 | * { 2 | font-family: "Comic Sans MS", "Glyphicons Halflings", FontAwesome, "Font Awesome 5 Free", "Font Awesome 5 Pro", "eg-header-icomoon", "controlIcons", MaterialCommunityIcons, 'Membership Icons', "MWF-MDL2" !important; 3 | } 4 | 5 | .DPvwYc, 6 | .material-icons, 7 | .material-icons-extended { 8 | font-family: "Material Icons", "Material Icons Extended" !important; 9 | } 10 | table.tab-size *, /* github */ 11 | code, .inline, pre, code *, pre * { 12 | font-family: "Ubuntu Mono" !important; 13 | font-weight: 500; 14 | font-size: 12px; 15 | } 16 | 17 | /* google:tm: */ 18 | span.bold { 19 | font-weight: bold !important; 20 | } 21 | -------------------------------------------------------------------------------- /opt/discord-delete-messages.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name Discord Quick Delete Messages 3 | // @description Adds functionality to delete messages faster by ctrl+right-clicking them. 4 | // @namespace Violentmonkey Scripts 5 | // @grant GM_addStyle 6 | // @require http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js 7 | // @match *://discord.com/* 8 | // ==/UserScript== 9 | 10 | $('body').on('contextmenu', 'div[class*="cozyMessage-"]', function(e) { 11 | if (e.ctrlKey) { 12 | $(this).find("div[aria-label^='More']").trigger("click"); 13 | $('#message-actions-delete').trigger("click"); 14 | function fun() { 15 | $(".layerContainer-yqaFcK").children().css("display", "none"); 16 | $("button[class*='colorRed']").trigger("click"); 17 | } 18 | setTimeout(fun, 65); 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /opt/discord-gay.css: -------------------------------------------------------------------------------- 1 | .theme-light { 2 | --text-normal: #4a4a4a !important; 3 | --text-normal: #d74be1 !important; 4 | --interactive-normal: magenta; 5 | --interactive-hover: magenta; 6 | --interactive-active: magenta; 7 | --interactive-muted: #ffcbff; 8 | --channels-default: #ae77aecf; 9 | 10 | --red: #ff6d6d; 11 | --yellow: #b29d21; 12 | --green: #30ba39; 13 | --cyan: #42b4b4; 14 | --blue: #778eff; 15 | --pink: #ff6efa; 16 | 17 | --1red: #f99; 18 | --1yellow: #ebdd8e; 19 | --1green: #7dee84; 20 | --1cyan: #52d2d2; 21 | --1blue: #aab8ff; 22 | --1pink: #f5a5e1; 23 | 24 | --accent: var(--blue); 25 | --channeltextarea-background: transparent !important; 26 | } 27 | 28 | [class*="repliedTextContent-"] { 29 | color: #cacacab8 !important; 30 | } 31 | 32 | @keyframes rainbow { 33 | 0%{ 34 | background-position: 0 0; 35 | } 36 | 100% { 37 | background-position: 100% 0; 38 | } 39 | } 40 | .searchBar-3dMhjb, 41 | #app-mount [id*="chat"] a { 42 | background: linear-gradient( 43 | to right, 44 | var(--1red), 45 | var(--1yellow), 46 | var(--1green), 47 | var(--1cyan), 48 | var(--1blue), 49 | var(--1pink), 50 | var(--1red), 51 | var(--1yellow), 52 | var(--1green), 53 | var(--1cyan) 54 | ); 55 | color: #fff; 56 | background-size: 300% 100%; 57 | } 58 | 59 | /*[class*="textArea"] [data-slate-string="true"],*/ 60 | [class*="typing-"], 61 | [class*="embed-"] [class*="embedTitle"], 62 | [class*="title-"], 63 | .messageContent-2qWWxC, 64 | blockquote { 65 | background: linear-gradient( 66 | to right, 67 | var(--red), 68 | var(--yellow), 69 | var(--green), 70 | var(--cyan), 71 | var(--blue), 72 | var(--pink), 73 | var(--red), 74 | var(--yellow), 75 | var(--green), 76 | var(--cyan) 77 | ); 78 | -webkit-background-clip: text; 79 | background-clip: text; 80 | color: transparent; 81 | background-size: 300% 100%; 82 | } 83 | 84 | .searchBar-3dMhjb:not(:-moz-window-inactive), 85 | #app-mount [id*="chat"] a:not(:-moz-window-inactive), 86 | [class*="typing-"]:not(:-moz-window-inactive), 87 | [class*="embed-"] [class*="embedTitle"]:not(:-moz-window-inactive), 88 | [class*="title-"]:not(:-moz-window-inactive), 89 | .messageContent-2qWWxC:not(:-moz-window-inactive), 90 | blockquote:not(:-moz-window-inactive) { 91 | animation: rainbow 3s linear infinite; 92 | } 93 | code.hljs, code, .hljs * { 94 | color: var(--text-normal) !important; 95 | } 96 | 97 | [class*="roleColor-rz2vM0"]:not([style]), 98 | [class*="username"]:not([style]) { 99 | color: magenta; 100 | } 101 | [class*="icon-"], 102 | .membersGroup-v9BXpm, 103 | [class*="title-"] [class*="icon-"] { 104 | color: magenta !important; 105 | } 106 | 107 | .searchBar-3dMhjb * [data-block="true"], 108 | .searchBar-3dMhjb { 109 | color: white !important; 110 | } 111 | -------------------------------------------------------------------------------- /opt/discord.css: -------------------------------------------------------------------------------- 1 | @-moz-document regexp("https://discord.com/(?!developers).*") { 2 | /** foot punch, yeah! **/ 3 | #user-context-kick > div::before { 4 | content: 'Footpunch'; 5 | background-color: inherit; 6 | z-index: 555; 7 | position: absolute; 8 | left: 40px; 9 | } 10 | #user-context-kick > div { 11 | max-width: min-content !important; 12 | white-space: nowrap; 13 | overflow: hidden; 14 | text-indent: -31px; 15 | margin-left: 72px; 16 | } 17 | 18 | .theme-light { 19 | --text-normal: #444 !important 20 | } 21 | 22 | 23 | /** change message replies **/ 24 | [class*="repliedMessage-"]::before { --spine-width: 0; } 25 | [class*="repliedMessage-"] { 26 | left: -25px !important; 27 | --background-tertiary: transparent !important; 28 | } 29 | [class*="replyBadge-"] > [class*="replyIcon-"] { 30 | transform: scaleX(-1); 31 | opacity: 0.6; 32 | margin-left: -14px; 33 | } 34 | 35 | [class*="repliedMessage-"] > [class*="repliedTextPreview-"] { 36 | opacity: 0.9; 37 | } 38 | 39 | 40 | 41 | /** hide 'blocked messages' notice **/ 42 | /* using the . selector will match items which have additional classes 43 | * this only applies if it's the only class an element has */ 44 | [class="groupStart-23k01U"] > div, 45 | [class="groupStart-23k01U"] { 46 | /* display: none; makes it jumpy when the blocked person makes 47 | * the top unread and you open the channel */ 48 | margin: 0 !important; 49 | max-height: 0 !important; 50 | opacity: 0; 51 | } 52 | 53 | 54 | /** remove junk buttons **/ 55 | [class*="unreadMentionsBar-"], /* no bloody idea */ 56 | .content-3YMskv > .wrapper-2jXpOf, /* "Active Threads" mod button */ 57 | #channels .content-3YMskv > div[style*="height:"]:nth-of-type(2), /* "Active Threads" mod button */ 58 | .channelTextArea-rNsIhG > .container-JHR0NT, /* annoying sticker popup */ 59 | .selected-3LIHYU:not(:hover) .children-3rEycc, /* cog on focused channel */ 60 | .containerDefault-3tr_sE:not(:hover) .children-L002ao > button[aria-label="Create Channel"], 61 | .toolbar-1t6TWx > div[aria-label^="Mute channel"], /* mute channel button */ 62 | .toolbar-1t6TWx > a[href*="support.discord.com"], /* help button */ 63 | .buttons-3JBrkn > *:not(:nth-child(4)) /* nitro gift, gifs, stickers */ 64 | { 65 | display: none !important; 66 | } 67 | [aria-label="Servers sidebar"] .none-2Eo-qx > .listItem-GuPuDH:nth-of-type(6), /* "download apps" button */ 68 | [aria-label="Servers sidebar"] .none-2Eo-qx > .listItem-GuPuDH:nth-of-type(7) /* "download apps" button */ 69 | { 70 | display: none !important; 71 | } 72 | /* attach file button */ 73 | [class*="attachWrapper-"] * { 74 | max-width: 0 !important; 75 | } 76 | [class*="attachWrapper-"] { 77 | width: 9px !important; 78 | position: absolute; 79 | margin-left: -17px; 80 | } 81 | 82 | /** move search to the right **/ 83 | .search-36MZv- { order: 2 !important; } 84 | 85 | 86 | /** hide ping indicator in bottom server **/ 87 | /*.wrapper-3Njo_c:last-of-type .lowerBadge-29hYVK { 88 | display: none !important; 89 | } 90 | .wrapper-3Njo_c:last-of-type svg > foreignObject[mask] { 91 | border-radius: 16px; 92 | mask: none !important; 93 | } 94 | /*mask: url(#e39d00ea-e646-4d47-a368-2bca44fd2d03) !important;*/ 95 | 96 | 97 | /** move reaction popup out of the way & make it bigger **/ 98 | [id*="popout_"] [class*="emojiPicker-"] { height: 600px !important; } 99 | [class*="layerContainer-"] > [id*="popout"] { top: 110px !important; } 100 | 101 | 102 | /** role backgrounds instead of outlines **/ 103 | /* implimented by default on 2021-08-04/05 */ 104 | [class*="roleRemoveIcon-"] { position: absolute; } 105 | [class*="role-"] { 106 | border: none; 107 | overflow: hidden; 108 | z-index: 0; 109 | background-color: transparent !important; 110 | } 111 | [class*="role-"] > [class*="roleCircle-"]::after { 112 | background-color: inherit; 113 | pointer-events: none; 114 | display: block; 115 | content: ''; 116 | opacity: 0.2; 117 | z-index: -1; 118 | right: -100px; 119 | min-width: 230px; 120 | height: 69px; 121 | position: relative; 122 | } 123 | 124 | 125 | /** code block stuff **/ 126 | /* display language in top-right of code blocks */ 127 | code.hljs:not(.inline)::before { 128 | content: attr(class); 129 | float: right; 130 | max-width: 5.3rem; 131 | margin-top: -8.6rem; 132 | line-height: 1.6rem; 133 | text-align: right; 134 | font-size: 0.8rem; 135 | opacity: 0.6; 136 | } 137 | /* slightly cleaner */ 138 | code.hljs:not(.inline) { 139 | max-width: 560px; 140 | padding: 12px; 141 | border: none; 142 | } 143 | /* remove ugly syntax highlighting */ 144 | pre > code, 145 | pre > code * { 146 | color: var(--header-secondary) !important; 147 | font-weight: normal !important; 148 | font-size: 0.77rem !important; 149 | } 150 | /* only highlight comments */ 151 | pre > code .hljs-comment { 152 | color: var(--text-muted) !important; 153 | } 154 | 155 | 156 | /** more compact **/ 157 | /* limit width of messages area to 1000px */ 158 | [class*="standardSidebarView"], 159 | [class*="jumpToPresentBar-"], 160 | [class*="typing-"], 161 | [class*="channelTextArea"], 162 | [class^="messagesWrapper-"] > * > [class*="scroller"], 163 | [class*="autocomplete-"] { 164 | width: 100%; 165 | max-width: 1000px; 166 | margin-left: auto; 167 | margin-right: auto; 168 | } 169 | /* smaller sidebar */ 170 | .sidebar-2K8pFh { width: 180px !important; } 171 | 172 | 173 | /** less contrast **/ 174 | /* default usernames & text colour */ 175 | .theme-light [class*="chatContent-"] [class*="username-"]:not([style]), 176 | .theme-light { 177 | /*color: #222 !important;*/ 178 | /*--text-normal: #4a4a4a !important;*/ 179 | /* make shadow on the top bar less harsh */ 180 | --elevation-low: 181 | 0 0px 0 rgba(6,6,7,0.1), 182 | 0 1.5px 0 rgba(6,6,7,0.025), 183 | 0 2px 0 rgba(6,6,7,0.025); 184 | } 185 | 186 | 187 | /** fix copypasting on firefox **/ 188 | [class*="systemMessage"] span /* parent element of time */, 189 | [class*="systemMessage"] i /* invisible separator around time */, 190 | [id*="chat-messages-"] [class*="header-"] i /* [time] / user: */ { 191 | font-size: 0; 192 | position: inherit; 193 | display: inline-block; 194 | } 195 | [class*="systemMessage"] [class*="content-"] /* where the text bit is - next to icon */ { 196 | position: inherit; 197 | display: inline; 198 | } 199 | 200 | /** always show time on messages **/ 201 | [class*="timestampVisibleOnHover"] { opacity: 1; } 202 | 203 | 204 | 205 | [class*="username-"][style="color: rgb(255, 255, 191);"] { 206 | color: #ff7270 !important; 207 | } 208 | 209 | 210 | 211 | /** remove a*****s emotes **/ 212 | /*img[src*="/dumpy"], 213 | img.emoji[alt*="AMOGUS"], 214 | img.emoji[alt*="Twerk"], 215 | img.emoji[alt*="amongus"], 216 | img.emoji[alt*="amogus"] { 217 | object-position: -999in -999in; 218 | background-size: 100%; 219 | background-image: url('data:image/svg+xml;base64, PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZm9udC13ZWlnaHQ9IjcwMCIgZm9udC1mYW1pbHk9IidDb21pYyBTYW5zIE1TJyIgbGV0dGVyLXNwYWNpbmc9IjAiIHdvcmQtc3BhY2luZz0iMCIgc3Ryb2tlLXdpZHRoPSIwIiBmaWxsPSIjZmYxODE4Ij48dGV4dCB5PSIyLjciIGZvbnQtc2l6ZT0iMy44OSIgdHJhbnNmb3JtPSJtYXRyaXgoMy44NjgzMiAwIDAgMy44NjgzMiAuOTggLS44OSkiPjx0c3BhbiB4PSIwIiB5PSI3LjU5IiBzdHJva2Utd2lkdGg9Ii4wMiI+ZHVtPC90c3Bhbj48L3RleHQ+PHRleHQgeD0iMi4wMiIgeT0iNC4wNiIgZm9udC1zaXplPSI0LjMxIiB0cmFuc2Zvcm09Im1hdHJpeCgzLjg2ODMyIDAgMCAzLjg2ODMyIC45OCAtLjg5KSI+PHRzcGFuIHg9IjIuMDIiIHk9IjQuMDYiIHN0cm9rZS13aWR0aD0iLjAyIj5hbTwvdHNwYW4+PC90ZXh0Pjx0ZXh0IHg9Ii4wNyIgeT0iNC4wNiIgZm9udC1zaXplPSI0LjMxIiB0cmFuc2Zvcm09Im1hdHJpeCgzLjg2ODMyIDAgMCAzLjg2ODMyIC45OCAtLjg5KSI+PHRzcGFuIHg9Ii4wNyIgeT0iNC4wNiIgc3Ryb2tlLXdpZHRoPSIuMDIiPmk8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+Cg=='); 220 | }*/ 221 | } 222 | -------------------------------------------------------------------------------- /opt/font.css: -------------------------------------------------------------------------------- 1 | * { 2 | font-family: 3 | "Sans Serif", 4 | "Batch" !important; 5 | } 6 | 7 | 8 | .Box-body.data *, /* Github */ 9 | /*[class*="code"] *, 10 | [class*="Code"] *,*/ 11 | [id*="code"] *, 12 | [id*="Code"] *, 13 | code *, 14 | code { 15 | font-family: Monospace !important; 16 | font-weight: bold !important; 17 | } 18 | -------------------------------------------------------------------------------- /opt/gaycord.css: -------------------------------------------------------------------------------- 1 | Moved to https://github.com/6gk/gkay 2 | -------------------------------------------------------------------------------- /opt/gayfox.css: -------------------------------------------------------------------------------- 1 | Moved to https://github.com/6gk/gkay 2 | -------------------------------------------------------------------------------- /opt/gmail.css: -------------------------------------------------------------------------------- 1 | * { 2 | font-family: var(--font2); 3 | font-size: var(--font2-size) !important; 4 | outline: none; 5 | } 6 | 7 | #guser a, 8 | #guser nobr a, 9 | * { 10 | color: var(--fg1) !important; 11 | text-decoration: none !important; 12 | scrollbar-width: none; 13 | } 14 | 15 | select { 16 | -moz-appearance: none; 17 | } 18 | 19 | tr, 20 | body, 21 | td { 22 | background-color: var(--bg1); 23 | } 24 | 25 | span font + font { 26 | color: var(--fg2); 27 | opacity: 0.8; 28 | } 29 | 30 | #ac-list .selected b, 31 | a:link, 32 | a:visited { 33 | color: var(--accent) !important; 34 | } 35 | 36 | .gbh, 37 | #gbar, 38 | #guser ~ table > tbody > tr > td[rowspan="3"], 39 | img[src$='star_on_sm_2.gif'] { 40 | display: none; 41 | } 42 | 43 | #guser ~ table > tbody > tr + tr td { 44 | padding-left: 14px; 45 | } 46 | 47 | #ac-list .selected b, 48 | #ac-list .selected { 49 | background-color: transparent !important; 50 | padding: 0 !important; 51 | margin: 0 !important; 52 | border: 0; 53 | } 54 | 55 | #ac-list, 56 | #ac-list *, 57 | input { 58 | background-color: var(--bg3); 59 | border: 0; 60 | padding: 5px 8px; 61 | } 62 | 63 | textarea, 64 | select, 65 | input[type=submit] { 66 | background-color: transparent; 67 | border: 2px solid transparent; 68 | padding: 0px 4px; 69 | border-radius: 2px; 70 | color: var(--fg2) !important; 71 | font-size: 12px; 72 | } 73 | 74 | body > table:last-of-type td[width="5"] ~ td td { 75 | border-bottom: none !important; 76 | } 77 | 78 | table.th > tbody > tr > td { 79 | padding: 7px 4px; 80 | } 81 | 82 | 83 | table.th > tbody > tr > td:first-of-type { 84 | position: absolute; 85 | background-color: transparent; 86 | width: calc(25% - 50px); 87 | min-width: 140px; 88 | height: 100%; 89 | max-height: 32px; 90 | margin: 0; 91 | padding: 0; 92 | } 93 | 94 | table.th > tbody > tr > td:first-of-type + td { 95 | z-index: 999 !important; 96 | position: relative !important; 97 | background: transparent; 98 | pointer-events: none; 99 | } 100 | 101 | table.th > tbody > tr > td:first-of-type input:checked { 102 | border-radius: 0 !important; 103 | background: var(--bg4) !important; 104 | z-index: 90 !important; 105 | opacity: 1; 106 | -moz-appearance: none; 107 | -webkit-appearance: none; 108 | } 109 | 110 | table.th > tbody > tr > td:first-of-type input { 111 | width: 100%; 112 | height: 10%; 113 | min-height: 100%; 114 | max-height: unset; 115 | margin: 0; 116 | opacity: 0; 117 | } 118 | 119 | #guser { 120 | display: flex; 121 | flex-wrap: wrap; 122 | float: right; 123 | } 124 | 125 | #butt::after { 126 | content: ' | '; 127 | } 128 | 129 | #butt { 130 | order: -1; 131 | font-size: 11.5px; 132 | background-color: transparent; 133 | border: 0; 134 | padding-right: 4px; 135 | } 136 | 137 | /* footers */ 138 | [value="Go"] + .searchPageLink, 139 | table.th + table, 140 | table.ft { 141 | display: none; 142 | } 143 | -------------------------------------------------------------------------------- /opt/gmail.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name select all/no gmails on the classic view 3 | // @namespace Violentmonkey Scripts 4 | // @match https://mail.google.com/* 5 | // @grant none 6 | // @version 1.0 7 | // @author - 8 | // @description 19/09/2020, 00:18:56 9 | // ==/UserScript== 10 | 11 | (function() { 12 | window.addEventListener("load", () => { 13 | addButton("select"); 14 | }); 15 | 16 | function addButton(text, onclick, cssObj) { 17 | let button = document.createElement("button"), 18 | btnStyle = button.style; 19 | button.setAttribute("id", "butt"); 20 | document.getElementById("guser").appendChild(button); 21 | button.innerHTML = text; 22 | // Settin function for button when it is clicked. 23 | button.onclick = selectReadFn; 24 | Object.keys(cssObj).forEach(key => (btnStyle[key] = cssObj[key])); 25 | return button; 26 | } 27 | 28 | function selectReadFn() { 29 | // Just to show button is pressed 30 | if (document.getElementById("butt").hasAttribute("clicked")) { 31 | document.querySelectorAll('input[name=t]').forEach(t=>t.checked = false); 32 | document.getElementById("butt").removeAttribute("clicked"); 33 | } else { 34 | document.querySelectorAll('input[name=t]').forEach(t=>t.checked = true); 35 | document.getElementById("butt").setAttribute("clicked", "true"); 36 | } 37 | } 38 | })(); 39 | -------------------------------------------------------------------------------- /opt/greenscale: -------------------------------------------------------------------------------- 1 | uniform float opacity; 2 | uniform bool invert_color; 3 | uniform sampler2D tex; 4 | 5 | void 6 | main() 7 | { 8 | vec4 c; 9 | float y; 10 | 11 | c = texture2D(tex, gl_TexCoord[0].xy); 12 | y = dot(c.rgb, vec3(0.2, 0.8, 0.2)); 13 | gl_FragColor = vec4(0, y, 0, 1.0); 14 | } 15 | -------------------------------------------------------------------------------- /opt/greyscale: -------------------------------------------------------------------------------- 1 | uniform float opacity; 2 | uniform bool invert_color; 3 | uniform sampler2D tex; 4 | 5 | void 6 | main() 7 | { 8 | vec4 c; 9 | float y; 10 | 11 | c = texture2D(tex, gl_TexCoord[0].xy); 12 | y = dot(c.rgb, vec3(0.299, 0.587, 0.114)); 13 | gl_FragColor = vec4(y, y, y, 1.0); 14 | } 15 | -------------------------------------------------------------------------------- /opt/keyboard.kbd: -------------------------------------------------------------------------------- 1 | ;; my kmonad config (github.com/david-janssen/kmonad) 2 | ;; made with a lot of help from elkowar (github.com/elkowar) 3 | (defcfg 4 | ;;; PS/2 5 | ;; input (device-file "/dev/input/by-path/platform-i8042-serio-0-event-kbd") 6 | ;;; usb (default rollover) 7 | input (device-file "/dev/input/by-id/usb-HID_Keyboard_HID_Keyboard-event-kbd") 8 | ;;; usb (nkey rollover) 9 | ;; input (device-file "/dev/input/by-id/usb-HID_Keyboard_HID_Keyboard-if01-event-kbd") 10 | 11 | output (uinput-sink "kmonad-input" "sleep 2; setxkbmap -option compose:ralt; xset r rate 200 60; xset -r 192; xset -r 127") 12 | 13 | cmp-seq ralt 14 | cmp-seq-delay 5 15 | fallthrough true 16 | allow-cmd true 17 | ) 18 | 19 | 20 | (defsrc 21 | esc 22 | grv 1 2 3 4 5 6 7 8 9 0 - = bspc 23 | tab q w e r t y u i o p [ ] \ 24 | caps a s d f g h j k l ; ' ret 25 | lsft z x c v b n m , . / rsft up 26 | lctl lmet lalt spc ralt rmet cmp rctl left down right 27 | ) 28 | 29 | 30 | 31 | (defalias 32 | ral (tap-hold-next 200 bspc (layer-toggle awesomealt)) 33 | ltc (tap-hold-next 180 bspc (layer-toggle coolcaps)) 34 | up (cmd-button "DISPLAY=:0 xdotool mousemove_relative -- 0 -305") 35 | ri (cmd-button "DISPLAY=:0 xdotool mousemove_relative -- 305 0 ") 36 | do (cmd-button "DISPLAY=:0 xdotool mousemove_relative -- 0 305") 37 | le (cmd-button "DISPLAY=:0 xdotool mousemove_relative -- -305 0 ") 38 | cl (cmd-button "DISPLAY=:0 xdotool click 1") 39 | cl2 (cmd-button "DISPLAY=:0 xdotool click 3") 40 | ) 41 | 42 | (deflayer base 43 | grv 44 | esc _ _ _ _ _ _ _ _ _ _ _ _ _ 45 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ 46 | @ltc _ _ _ _ _ _ _ _ _ _ _ _ 47 | _ _ _ _ _ _ _ _ _ _ _ _ _ 48 | _ _ _ _ @ral _ _ _ _ _ _ 49 | ) 50 | 51 | (deflayer awesomealt 52 | _ 53 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ 54 | _ _ _ pgup met alt _ esc kp8 @cl kp+ _ _ _ 55 | _ _ _ pgdn sft ctl left kp4 kp2 kp6 kp- _ _ 56 | _ _ _ _ home end ret @cl2 _ _ _ _ A-up 57 | _ _ _ ret _ _ _ _ A-left A-down A-right 58 | ) 59 | 60 | ;; bspc pause @up C-e _ C-t _ _ _ _ _ _ _ _ 61 | ;; _ @le @do @ri _ pgup home _ _ C-l _ _ _ 62 | ;;bspc pause up C-e _ C-t _ _ _ _ _ _ _ _ 63 | ;;bspc @le up @ri @cl C-t _ _ _ _ _ _ _ _ 64 | 65 | 66 | ;;bspc @le up @ri @cl C-t _ _ _ _ _ _ _ _ 67 | 68 | (deflayer coolcaps 69 | _ 70 | grv F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 _ 71 | _ pause up _ _ C-t _ _ _ _ _ _ _ _ 72 | _ left down right l pgup _ _ _ C-l _ _ C-ret 73 | _ rctl del C-c C-v pgdn end _ _ _ _ caps _ 74 | _ _ _ ret _ _ _ _ _ _ _ 75 | ) 76 | -------------------------------------------------------------------------------- /opt/kmirror.kbd: -------------------------------------------------------------------------------- 1 | ;; my kmonad config (github.com/david-janssen/kmonad) 2 | ;; made with a lot of help from elkowar (github.com/elkowar) 3 | (defcfg 4 | ;;; PS/2 5 | ;; input (device-file "/dev/input/by-path/platform-i8042-serio-0-event-kbd") 6 | ;;; usb (default rollover) 7 | input (device-file "/dev/input/by-id/usb-HID_Keyboard_HID_Keyboard-event-kbd") 8 | 9 | output (uinput-sink "kmonad-input") 10 | 11 | fallthrough true 12 | allow-cmd false 13 | ) 14 | 15 | 16 | (defsrc 17 | grv 1 2 3 4 5 6 7 8 9 0 - = bspc 18 | tab q w e r t y u i o p [ ] \ 19 | caps a s d f g h j k l ; ' ret 20 | lsft z x c v b n m , . / rsft 21 | lctl lmet lalt spc ralt rmet cmp rctl esc 22 | ) 23 | 24 | 25 | 26 | (defalias 27 | ltm (layer-toggle merrymod) 28 | ) 29 | 30 | (deflayer base 31 | esc _ _ _ _ _ _ _ _ _ _ _ _ _ 32 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ 33 | _ _ _ _ _ _ _ _ _ _ _ _ _ 34 | _ _ _ _ _ _ _ _ _ _ _ _ 35 | _ _ _ _ _ _ _ _ grv 36 | ) 37 | 38 | (deflayer superspace 39 | @bas 0 9 8 7 6 5 4 3 2 1 _ _ _ 40 | bspc p o i u y t r e w q _ _ _ 41 | ret l k j h g f d s a _ _ _ 42 | _ m n b v c x z _ _ _ _ 43 | _ @ltm bspc ret _ _ _ _ _ 44 | ) 45 | 46 | (deflayer merrymod 47 | P0 P0 - = P0 P0 P0 P0 P0 P0 P0 P0 P0 P0 48 | P0 [ ] \ up P0 P0 P0 P0 P0 P0 P0 P0 P0 49 | P0 ; ' left down right P0 P0 P0 P0 P0 P0 P0 50 | lctl , . / P0 P0 P0 P0 P0 P0 P0 P0 51 | lsft P0 lalt P0 P0 P0 P0 P0 _ 52 | ) 53 | -------------------------------------------------------------------------------- /opt/redscale: -------------------------------------------------------------------------------- 1 | uniform float opacity; 2 | uniform bool invert_color; 3 | uniform sampler2D tex; 4 | 5 | void 6 | main() 7 | { 8 | vec4 c; 9 | float y; 10 | 11 | c = texture2D(tex, gl_TexCoord[0].xy); 12 | y = dot(c.rgb, vec3(0.1, 1.0, 0.2)); 13 | gl_FragColor = vec4(y, 0, 0, 1.0); 14 | } 15 | -------------------------------------------------------------------------------- /opt/screen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | xrandr --output DVI-D-0 --off 4 | 5 | xcalib -c 6 | xcalib -v -red 1 4.3 100 -green 1 4.3 97 -blue 1 4.5 96 -alter 7 | 8 | # X is weird 9 | xrandr --output DVI-D-0 --mode 1440x900 --pos 0x0 --rotate normal --output HDMI-0 --primary --mode 1920x1080 --pos 1440x0 --rotate normal --output DP-0 --off --output DP-1 --off 10 | 11 | redshift -o -l 0:0 -m randr:crtc=1 -P -t 7000:7000 -g 0.9:1:1.0 -b 0.65 12 | -------------------------------------------------------------------------------- /opt/svg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 38 |

star kiwmi

39 | 40 |
41 |
42 |
43 | -------------------------------------------------------------------------------- /opt/termtime: -------------------------------------------------------------------------------- 1 | while :;do 2 | read -rt "0" 3 | time=$(date +'%R') 4 | printf '\033[7%b' "\033[8\033[s\033[0;9999H\033[${#time}D${time}\033[u" 5 | done & 6 | -------------------------------------------------------------------------------- /opt/twitter.css: -------------------------------------------------------------------------------- 1 | .r-pm9dpa, /* popup */ 2 | .r-1w6e6rj, /* home tweet box thing */ 3 | .r-14lw9ot, /*main tweet line */ 4 | .r-e84r5y, /* a separator */ 5 | .r-1u4rsef, /* right sidebar */ 6 | html, body 7 | { 8 | background-color: var(--bg1) !important; 9 | } 10 | 11 | * { 12 | border-color: transparent !important; 13 | } 14 | 15 | textarea, 16 | svg, 17 | span { 18 | color: var(--fg1) !important; 19 | } 20 | .r-1re7ezh, 21 | ::placeholder, 22 | input { 23 | color: var(--fg2) !important; 24 | } 25 | 26 | .r-1q3imqu { /* tweet button hover */ 27 | background-color: var(--bg4) !important; 28 | } 29 | 30 | .r-urgr8i /* tweet button */ { 31 | background-color: var(--bg3) !important; 32 | } 33 | 34 | 35 | .r-m5arl1 { /* reply line */ 36 | border-color: var(--fg1) !important; 37 | background-color: var(--fg1) !important; 38 | } 39 | 40 | .r-6t5ypu.r-vrwoeq span, 41 | .r-6t5ypu.r-vrwoeq { /* polls/video timestamp */ 42 | background-color: var(--accent) !important; 43 | color: var(--contrast) !important; 44 | } 45 | 46 | .r-rjfia .r-hkyrab span /* polls */ { 47 | color: var(--contrast) !important; 48 | text-shadow: 49 | -1px -1px 0px var(--accent), 50 | 1px -1px 0px var(--accent), 51 | -1px 1px 0px var(--accent), 52 | 1px 1px 0px var(--accent); 53 | } 54 | -------------------------------------------------------------------------------- /opt/usb-insert: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | v=$(who) 3 | user=${v%% *} 4 | uid=$(id -u "$user") 5 | 6 | out=$(printf "%s\n%s\n" "$ID_VENDOR" "$ID_MODEL" | tr '_' ' ') 7 | 8 | export DISPLAY="${display:-:0}" XDG_RUNTIME_DIR=/run/user/"$uid" \ 9 | DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/"$uid"/bus \ 10 | 11 | sudo -Eu "$user" /usr/bin/notify-send "New device detected" "$out" 12 | sudo -Eu "$user" /usr/bin/paplay /usr/local/sounds/usb-insert.wav 13 | -------------------------------------------------------------------------------- /opt/usb-insert.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/opt/usb-insert.wav -------------------------------------------------------------------------------- /opt/usb-remove: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | v=$(who) 3 | user=${v%% *} 4 | uid=$(id -u "$user") 5 | 6 | export DISPLAY="${display:-:0}" XDG_RUNTIME_DIR=/run/user/"$uid" \ 7 | DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/"$uid"/bus \ 8 | 9 | sudo -Eu "$user" /usr/bin/notify-send "Device removed" 10 | sudo -Eu "$user" /usr/bin/paplay /usr/local/sounds/usb-remove.wav 11 | -------------------------------------------------------------------------------- /opt/usb-remove.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/opt/usb-remove.wav -------------------------------------------------------------------------------- /opt/usb.rules: -------------------------------------------------------------------------------- 1 | ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", RUN+="/usr/local/bin/usb-insert" 2 | ACTION=="remove", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", RUN+="/usr/local/bin/usb-remove" 3 | 4 | -------------------------------------------------------------------------------- /opt/windows-prompt: -------------------------------------------------------------------------------- 1 | _prompt() { 2 | a=${PWD#$HOME}/ a=${a//\/\//\/} a=${a//\//\\\\} 3 | ## C:\> == home 4 | [[ "$PWD" =~ $HOME.* ]] && PS1="C:$a> " || PS1="C:\\System32$a> " 5 | 6 | ## C:\Users\user\> == home 7 | # [[ "$PWD" =~ $HOME.* ]] && PS1="C:\\\\Users\\\\$USER$a> " || PS1="C:\\System32$a> " 8 | } 9 | 10 | case $(ps -o comm= -p $$) in 11 | bash) PROMPT_COMMAND=_prompt;; 12 | zsh) setopt prompt_subst; PS1='$(_prompt; echo "$PS1")' 13 | esac 14 | -------------------------------------------------------------------------------- /opt/youtube.css: -------------------------------------------------------------------------------- 1 | * { 2 | --yt-spec-brand-background-solid: var(--bg1) !important; 3 | --yt-dark-surface-100: var(--bg1) !important; 4 | --yt-spec-brand-background-primary: var(--bg1) !important; 5 | --ytd-moderation-panel-background: var(--bg1) !important; 6 | --yt-dark-surface-300: var(--bg1) !important; 7 | --yt-spec-general-background-a: var(--bg1) !important; 8 | 9 | --yt-spec-call-to-action: var(--accent) !important; 10 | 11 | --yt-spec-icon-inactive: var(--fg2) !important; 12 | --yt-spec-icon-disabled: var(--black) !important; 13 | --iron-icon-fill-color: var(--fg2) !important; 14 | --yt-spec-text-primary: var(--fg1) !important; 15 | --yt-spec-brand-icon-active: var(--fg1) !important; 16 | --yt-spec-text-secondary: var(--fg2) !important; 17 | --ytd-metadata-line-color: var(--fg2) !important; 18 | --yt-endpoint-visited-color: var(--fg2) !important; 19 | --yt-spec-brand-icon-inactive: var(--fg2) !important; 20 | } 21 | 22 | 23 | [aria-label="Unlike"] svg, 24 | [aria-label*="like this"][aria-pressed="true"] svg path { 25 | fill: var(--accent) !important; 26 | } 27 | 28 | #youtube-paths > * { 29 | fill: var(--fg1) !important; 30 | } 31 | 32 | .ytd-topbar-logo-renderer > path { 33 | fill: var(--accent) !important; 34 | } 35 | 36 | .ytd-topbar-logo-renderer > polygon { 37 | fill: var(--contrast) 38 | } 39 | -------------------------------------------------------------------------------- /usr/applications/nvim.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.1 3 | Type=Application 4 | Name=NeoVim 5 | GenericName=nvim 6 | Comment=A small descriptive blurb about this application. 7 | Icon=nvim 8 | Exec=st -e zsh -c 'source ~/etc/zsh/.zshrc; nvim %F' 9 | Actions= 10 | MimeType=text;text/plain;text/html;text/css;text/shell;text/all; 11 | Categories=Utility; 12 | -------------------------------------------------------------------------------- /usr/applications/torrent.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=Torrent 4 | #Exec=transadd %U 5 | Exec=qbittorrent %U 6 | MimeType=application/x-bittorrent;x-scheme-handler/magnet; 7 | -------------------------------------------------------------------------------- /usr/fonts/FiraMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/fonts/FiraMono-Bold.ttf -------------------------------------------------------------------------------- /usr/fonts/FiraMono-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/fonts/FiraMono-Medium.ttf -------------------------------------------------------------------------------- /usr/fonts/README.md: -------------------------------------------------------------------------------- 1 | I have made subtle changes to the fonts in this dir, with the exception of 2 | font.bdf, which I made myself. 3 | 4 | ## Fira Mono 5 | 6 | License: Open Font License 7 | 8 | Changes: Make `+` and `*` more distinct, slightly bolder 9 | 10 | ## Roboto Mono 11 | 12 | License: Apache License, Version 2.0 13 | 14 | Changes: Slightly bolder and cleaner at 10px on a 96dpi screen 15 | -------------------------------------------------------------------------------- /usr/fonts/RobotoMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/fonts/RobotoMono-Bold.ttf -------------------------------------------------------------------------------- /usr/fonts/UbuntuMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/fonts/UbuntuMono-Bold.ttf -------------------------------------------------------------------------------- /usr/icons/cursor/index.theme: -------------------------------------------------------------------------------- 1 | [Icon Theme] 2 | Name=X11 Default Black 3 | Comment=Little bit edited default X11 cursors in black 4 | Example=hand1 5 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/X_cursor.in: -------------------------------------------------------------------------------- 1 | 32 9 9 X_cursor.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/X_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/X_cursor.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/based_arrow_down.in: -------------------------------------------------------------------------------- 1 | 32 12 9 based_arrow_down.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/based_arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/based_arrow_down.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/based_arrow_up.in: -------------------------------------------------------------------------------- 1 | 32 12 9 based_arrow_up.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/based_arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/based_arrow_up.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/beachball.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/beachball.xcf -------------------------------------------------------------------------------- /usr/icons/cursor/source/beachball1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/beachball1.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/beachball2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/beachball2.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/beachball3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/beachball3.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/beachball4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/beachball4.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/beachball5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/beachball5.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/beachball6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/beachball6.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/beachball7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/beachball7.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/beachball8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/beachball8.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/bottom_left_corner.in: -------------------------------------------------------------------------------- 1 | 32 11 11 bottom_left_corner.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/bottom_left_corner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/bottom_left_corner.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/bottom_right_corner.in: -------------------------------------------------------------------------------- 1 | 32 11 11 bottom_right_corner.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/bottom_right_corner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/bottom_right_corner.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/circle.in: -------------------------------------------------------------------------------- 1 | 32 5 5 circle.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/circle.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/copy.in: -------------------------------------------------------------------------------- 1 | 32 5 5 copy.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/copy.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/crossed_circle.in: -------------------------------------------------------------------------------- 1 | 24 10 10 crossed_circle.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/crossed_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/crossed_circle.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/fleur.in: -------------------------------------------------------------------------------- 1 | 32 11 10 fleur.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/fleur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/fleur.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/hand1.in: -------------------------------------------------------------------------------- 1 | 32 8 4 hand1.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/hand1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/hand1.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/hand1.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/hand1.xcf -------------------------------------------------------------------------------- /usr/icons/cursor/source/left_ptr.in: -------------------------------------------------------------------------------- 1 | 32 5 5 left_ptr.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/left_ptr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/left_ptr.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/loading/beachball1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/loading/beachball1.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/loading/beachball2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/loading/beachball2.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/loading/beachball3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/loading/beachball3.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/loading/beachball4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/loading/beachball4.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/loading/beachball5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/loading/beachball5.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/loading/beachball6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/loading/beachball6.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/loading/watch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/loading/watch -------------------------------------------------------------------------------- /usr/icons/cursor/source/loading/watch.in: -------------------------------------------------------------------------------- 1 | 32 11 11 beachball1.png 25 2 | 32 11 11 beachball2.png 25 3 | 32 11 11 beachball3.png 25 4 | 32 11 11 beachball4.png 25 5 | 32 11 11 beachball5.png 25 6 | 32 11 11 beachball6.png 25 7 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/make.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if ! [ -x "$(command -v xcursorgen)" ]; then 3 | echo 'xcursorgen is not installed (part of \e[4;32mx11-apps\e[0m package in Devuan)' 4 | return 5 | fi 6 | [ -d "../cursors" ] && rm -rf ../cursors ; mkdir ../cursors 7 | xcursorgen hand1.in ../cursors/hand1 8 | xcursorgen hand1.in ../cursors/hand2 9 | xcursorgen left_ptr.in ../cursors/left_ptr 10 | xcursorgen xterm.in ../cursors/xterm 11 | xcursorgen crossed_circle.in ../cursors/crossed_circle 12 | xcursorgen right_ptr.in ../cursors/right_ptr 13 | xcursorgen copy.in ../cursors/copy 14 | xcursorgen circle.in ../cursors/circle 15 | xcursorgen sb_h_double_arrow.in ../cursors/sb_h_double_arrow 16 | xcursorgen sb_v_double_arrow.in ../cursors/sb_v_double_arrow 17 | xcursorgen top_left_corner.in ../cursors/top_left_corner 18 | xcursorgen top_right_corner.in ../cursors/top_right_corner 19 | xcursorgen bottom_left_corner.in ../cursors/bottom_left_corner 20 | xcursorgen bottom_right_corner.in ../cursors/bottom_right_corner 21 | xcursorgen watch.in ../cursors/watch 22 | xcursorgen sb_left_arrow.in ../cursors/sb_left_arrow 23 | xcursorgen sb_right_arrow.in ../cursors/sb_right_arrow 24 | xcursorgen sb_up_arrow.in ../cursors/sb_up_arrow 25 | xcursorgen sb_down_arrow.in ../cursors/sb_down_arrow 26 | xcursorgen based_arrow_down.in ../cursors/based_arrow_down 27 | xcursorgen based_arrow_up.in ../cursors/based_arrow_up 28 | xcursorgen fleur.in ../cursors/fleur 29 | xcursorgen sizing.in ../cursors/sizing 30 | xcursorgen question_arrow.in ../cursors/question_arrow 31 | xcursorgen X_cursor.in ../cursors/X_cursor 32 | ln -s right_ptr ../cursors/arrow 33 | ln -s sb_v_double_arrow ../cursors/bottom_side 34 | ln -s sb_v_double_arrow ../cursors/double_arrow 35 | ln -s right_ptr ../cursors/draft_large 36 | ln -s right_ptr ../cursors/draft_small 37 | ln -s sb_h_double_arrow ../cursors/left_side 38 | ln -s sb_h_double_arrow ../cursors/right_side 39 | ln -s left_ptr ../cursors/top_left_arrow 40 | ln -s sb_v_double_arrow ../cursors/top_side 41 | ln -s X_cursor ../cursors/pirate 42 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/question_arrow.in: -------------------------------------------------------------------------------- 1 | 32 5 5 question_arrow.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/question_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/question_arrow.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/right_ptr.in: -------------------------------------------------------------------------------- 1 | 32 13 6 right_ptr.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/right_ptr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/right_ptr.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/sb_down_arrow.in: -------------------------------------------------------------------------------- 1 | 32 12 9 sb_down_arrow.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/sb_down_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/sb_down_arrow.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/sb_h_double_arrow.in: -------------------------------------------------------------------------------- 1 | 32 12 9 sb_h_double_arrow.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/sb_h_double_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/sb_h_double_arrow.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/sb_left_arrow.in: -------------------------------------------------------------------------------- 1 | 32 12 9 sb_left_arrow.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/sb_left_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/sb_left_arrow.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/sb_right_arrow.in: -------------------------------------------------------------------------------- 1 | 32 12 9 sb_right_arrow.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/sb_right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/sb_right_arrow.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/sb_up_arrow.in: -------------------------------------------------------------------------------- 1 | 32 12 9 sb_up_arrow.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/sb_up_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/sb_up_arrow.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/sb_v_double_arrow.in: -------------------------------------------------------------------------------- 1 | 32 8 11 sb_v_double_arrow.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/sb_v_double_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/sb_v_double_arrow.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/sizing.in: -------------------------------------------------------------------------------- 1 | 32 5 5 sizing.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/sizing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/sizing.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/top_left_corner.in: -------------------------------------------------------------------------------- 1 | 32 11 11 top_left_corner.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/top_left_corner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/top_left_corner.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/top_right_corner.in: -------------------------------------------------------------------------------- 1 | 32 11 11 top_right_corner.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/top_right_corner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/top_right_corner.png -------------------------------------------------------------------------------- /usr/icons/cursor/source/watch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/watch -------------------------------------------------------------------------------- /usr/icons/cursor/source/watch.in: -------------------------------------------------------------------------------- 1 | 32 5 5 beachball1.png 75 2 | 32 5 5 beachball2.png 75 3 | 32 5 5 beachball3.png 75 4 | 32 5 5 beachball4.png 75 5 | 32 5 5 beachball5.png 75 6 | 32 5 5 beachball6.png 75 7 | 32 5 5 beachball7.png 75 8 | 32 5 5 beachball8.png 75 9 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/xterm.in: -------------------------------------------------------------------------------- 1 | 32 8 12 xterm.png 1000 2 | -------------------------------------------------------------------------------- /usr/icons/cursor/source/xterm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eepykate/polka/f906c808e1158e1df620260027c9d78701977d35/usr/icons/cursor/source/xterm.png -------------------------------------------------------------------------------- /usr/themes/ob/openbox-3/close.xbm: -------------------------------------------------------------------------------- 1 | #define close_width 10 2 | #define close_height 10 3 | static unsigned char close_bits[] = { 4 | 0x00, 0x00, 0x80, 0x01, 0xc0, 0x01, 0xe0, 0x00, 0x70, 0x00, 0x38, 0x00, 5 | 0x1c, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x00 }; 6 | -------------------------------------------------------------------------------- /usr/themes/ob/openbox-3/iconify.xbm: -------------------------------------------------------------------------------- 1 | #define iconify_width 10 2 | #define iconify_height 10 3 | static unsigned char iconify_bits[] = { 4 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0xfe, 0x01, 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; 6 | -------------------------------------------------------------------------------- /usr/themes/ob/openbox-3/max.xbm: -------------------------------------------------------------------------------- 1 | #define max_width 10 2 | #define max_height 10 3 | static unsigned char max_bits[] = { 4 | 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 5 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00 }; 6 | -------------------------------------------------------------------------------- /usr/themes/ob/openbox-3/rc: -------------------------------------------------------------------------------- 1 | ### WINDOW 2 | border.width: 0 3 | 4 | window.client.padding.width: 0 5 | window.client.padding.height: 0 6 | window.handle.width: 0 7 | 8 | padding.width: 10 9 | padding.height: 10 10 | 11 | window.active.border.color: #b7cdff 12 | window.active.client.color: #1f222f 13 | window.active.title.separator.color: #1f222f 14 | window.inactive.border.color: #666666 15 | window.inactive.client.color: #1f222f 16 | window.inactive.title.separator.color: #1f222f 17 | 18 | window.active.label.text.color: #e3e3e3 19 | window.inactive.label.text.color: #8686a4 20 | 21 | window.active.title.bg: flat solid 22 | window.active.title.bg.color: #fafafa 23 | window.active.label.bg: flat solid 24 | window.active.label.bg.color: #fafafa 25 | #window.active.handle.bg: texture 26 | #window.active.grip.bg: texture 27 | window.inactive.title.bg: flat solid 28 | window.inactive.title.bg.color: #e3e3e3 29 | window.inactive.label.bg: flat solid 30 | window.inactive.label.bg.color: #e3e3e3 31 | #window.inactive.handle.bg: texture 32 | #window.inactive.grip.bg: texture 33 | 34 | window.label.text.justify: center 35 | 36 | #window.active.label.text.font: text shadow 37 | #window.inactive.label.text.font: text shadow 38 | 39 | ### MENU 40 | menu.border.width: 2 41 | menu.separator.width: 2 42 | menu.separator.padding.width: 10 43 | menu.separator.padding.height: 2 44 | 45 | menu.overlap.x: 0 46 | menu.overlap.y: 0 47 | 48 | menu.border.color: #222222 49 | menu.separator.color: #444444 50 | 51 | menu.title.text.color: #ffffff 52 | menu.items.text.color: #ffffff 53 | menu.items.disabled.text.color: #696969 54 | menu.items.active.text.color: #ffffff 55 | menu.items.active.disabled.text.color: #696969 56 | 57 | menu.items.bg: flat solid 58 | menu.items.bg.color: #222222 59 | menu.items.active.bg: flat solid 60 | menu.items.active.bg.color: #555555 61 | menu.title.bg: flat solid 62 | menu.title.bg.color: #333333 63 | 64 | menu.title.text.justify: center 65 | 66 | #menu.items.font: text shadow 67 | #menu.title.text.font: text shadow 68 | 69 | ### OSD 70 | osd.border.width: 0 71 | 72 | #osd.label.text.font: text shadow 73 | window.active.button.unpressed.bg: Flat solid 74 | window.active.button.unpressed.bg.color: #fafafa 75 | window.active.button.unpressed.bg.border.color: #fafafa 76 | window.active.button.unpressed.image.color: #767676 77 | 78 | window.active.button.pressed.bg: Flat solid 79 | window.active.button.pressed.bg.color: #fafafa 80 | window.active.button.pressed.image.color: #767676 81 | 82 | window.active.button.disabled.bg: Flat solid 83 | window.active.button.disabled.bg.color: #fafafa 84 | window.active.button.disabled.image.color: #666666 85 | 86 | 87 | window.inactive.button.unpressed.bg: Flat solid 88 | window.inactive.button.unpressed.bg.color: #e3e3e3 89 | window.inactive.button.unpressed.image.color: #e3e3e3 90 | 91 | window.inactive.button.pressed.bg: Flat solid 92 | window.inactive.button.pressed.bg.color: #e3e3e3 93 | window.inactive.button.pressed.image.color: #e3e3e3 94 | 95 | window.inactive.button.disabled.bg: Flat solid 96 | window.inactive.button.disabled.bg.color: #e3e3e3 97 | window.inactive.button.disabled.image.color: #e3e3e3 98 | -------------------------------------------------------------------------------- /usr/themes/ob/openbox-3/themerc: -------------------------------------------------------------------------------- 1 | # 2 | # ,=,e 3 | # 4 | border.width: 0 5 | 6 | window.client.padding.width: 0 7 | window.client.padding.height: 0 8 | window.handle.width: 0 9 | 10 | padding.width: 10 11 | padding.height: 10 12 | 13 | window.active.border.color: #b7cdff 14 | window.active.client.color: #1f222f 15 | window.active.title.separator.color: #1f222f 16 | window.inactive.border.color: #666666 17 | window.inactive.client.color: #1f222f 18 | window.inactive.title.separator.color: #1f222f 19 | 20 | window.active.label.text.color: #000000 21 | window.inactive.label.text.color: #000000 22 | 23 | window.active.title.bg: flat solid 24 | window.active.title.bg.color: #eaeaee 25 | window.active.label.bg: flat solid 26 | window.active.label.bg.color: #eaeaee 27 | window.inactive.title.bg: flat solid 28 | window.inactive.title.bg.color: #c6c6ca 29 | window.inactive.label.bg: flat solid 30 | window.inactive.label.bg.color: #c6c6ca 31 | 32 | window.label.text.justify: center 33 | 34 | 35 | 36 | menu.border.width: 8 37 | menu.separator.width: 4 38 | menu.separator.padding.width: 10 39 | menu.separator.padding.height: 4 40 | 41 | menu.overlap.x: 0 42 | menu.overlap.y: 0 43 | 44 | menu.border.color: #31404d 45 | menu.separator.color: #31404d 46 | 47 | menu.title.text.color: #c6c6ca 48 | menu.items.text.color: #c6c6ca 49 | menu.items.disabled.text.color: #c6c6ca 50 | menu.items.active.text.color: #c6c6ca 51 | menu.items.active.disabled.text.color: #c6c6ca 52 | 53 | menu.items.bg: flat solid 54 | menu.items.bg.color: #31404d 55 | menu.items.active.bg: flat solid 56 | menu.items.active.bg.color: #4b5863 57 | menu.title.bg: flat solid 58 | menu.title.bg.color: #31404d 59 | 60 | menu.title.text.justify: center 61 | 62 | osd.border.width: 0 63 | 64 | window.active.button.unpressed.bg: Flat solid 65 | window.active.button.unpressed.bg.color: #eaeaee 66 | window.active.button.unpressed.bg.border.color: #fafafa 67 | window.active.button.unpressed.image.color: #31404d 68 | 69 | window.active.button.pressed.bg: Flat solid 70 | window.active.button.pressed.bg.color: #eaeaee 71 | window.active.button.pressed.image.color: #31404d 72 | 73 | window.active.button.disabled.bg: Flat solid 74 | window.active.button.disabled.bg.color: #eaeaee 75 | window.active.button.disabled.image.color: #31404d 76 | 77 | window.inactive.button.unpressed.bg: Flat solid 78 | window.inactive.button.unpressed.bg.color: #c6c6ca 79 | window.inactive.button.unpressed.image.color: #c6c6ca 80 | 81 | window.inactive.button.pressed.bg: Flat solid 82 | window.inactive.button.pressed.bg.color: #c6c6ca 83 | window.inactive.button.pressed.image.color: #c6c6ca 84 | 85 | window.inactive.button.disabled.bg: Flat solid 86 | window.inactive.button.disabled.bg.color: #c6c6ca 87 | window.inactive.button.disabled.image.color: #c6c6ca 88 | --------------------------------------------------------------------------------