diff options
| -rw-r--r-- | .bash_profile | 15 | ||||
| -rw-r--r-- | .config/i3/config | 37 | ||||
| -rw-r--r-- | .config/qutebrowser/config.py | 23 | ||||
| -rw-r--r-- | .config/zathura/zathurarc | 10 | ||||
| -rw-r--r-- | .profile | 17 | ||||
| -rw-r--r-- | .scripts/SCRIPTS.md | 30 | ||||
| -rwxr-xr-x | .scripts/compiler | 4 | ||||
| -rwxr-xr-x | .scripts/kb-lights.py (renamed from .config/i3/kb-lights.py) | 0 | ||||
| -rwxr-xr-x | .scripts/linkhandler | 8 | ||||
| -rwxr-xr-x | .scripts/lmc | 8 | ||||
| -rw-r--r-- | .scripts/lock.png (renamed from .config/i3/lock.png) | bin | 7897 -> 7897 bytes | |||
| -rwxr-xr-x | .scripts/lockscreen (renamed from .config/i3/lock.sh) | 7 | ||||
| -rwxr-xr-x | .scripts/opout | 12 | ||||
| -rwxr-xr-x | .scripts/pauseallmpv | 4 | ||||
| -rwxr-xr-x | .scripts/texclear | 8 | ||||
| -rwxr-xr-x | .scripts/toggletouchpad | 4 | ||||
| -rwxr-xr-x | .scripts/unix | 25 | ||||
| -rw-r--r-- | .vimrc | 10 | ||||
| l--------- | .xprofile | 1 |
19 files changed, 165 insertions, 58 deletions
diff --git a/.bash_profile b/.bash_profile deleted file mode 100644 index 2941fb6..0000000 --- a/.bash_profile +++ /dev/null @@ -1,15 +0,0 @@ -# -# ~/.bash_profile -# - -[[ -f ~/.bashrc ]] && . ~/.bashrc - -export PATH="$PATH:$HOME/.scripts" -export EDITOR="vim" -export TERMINAL="st" -export BROWSER="firefox" - -# Uncomment lines below to autostart i3 when logged in: -#if [[ "$(tty)" = "/dev/tty1" ]]; then - #pgrep i3 || exec startx -#fi diff --git a/.config/i3/config b/.config/i3/config index e9d0f89..5724b1c 100644 --- a/.config/i3/config +++ b/.config/i3/config @@ -11,16 +11,19 @@ # YouTube: https://youtube.com/c/LukeSmithxyz # Github: https://github.com/LukeSmithxyz -# Be sure that you have your $BROWSER environmental variable set to your favorite browser. -# E.g., put `export BROWSER="firefox"` into your ~/.bash_profile +# This config file will use environmental variables such as $BROWSER and $TERMINAL. +# You can set these variables in ~/.profile or ~/.bash_profile if you have it as below: +# +# export BROWSER="firefox" +# export TERMINAL="st" # #---Basic Definitions---# # # Needed for i3-gaps for_window [class="^.*"] border pixel 1 gaps inner 15 gaps outer 15 +set $term --no-startup-id $TERMINAL set $mod Mod4 -set $term --no-startup-id st set $stoprec --no-startup-id killrecording set $shutdown sudo shutdown -h now set $reboot sudo reboot @@ -84,7 +87,7 @@ bar { background $darkblack statusline $darkwhite separator $cyan - focused_workspace $blue $darkblue $darkwhite + focused_workspace $blue $darkblue $darkblack active_workspace $blue $blue $darkwhite inactive_workspace $darkblack $darkblack $white urgent_workspace $darkblack $darkblack $white @@ -112,7 +115,7 @@ bindsym $mod+Shift+BackSpace exec --no-startup-id prompt "Are you sure you want ##bindsym $mod+asciitilde #STOP/HIDE EVERYTHING: -bindsym $mod+Shift+Delete exec --no-startup-id lmc truemute ; exec $truepause ; workspace lmao ; exec $term -e htop ; exec $term -e ranger +bindsym $mod+Shift+Delete exec --no-startup-id lmc truemute ; exec $truepause ; exec --no-startup-id pauseallmpv; workspace 0; exec $term -e htop ; exec $term -e ranger # #---Letter Key Bindings---# # bindsym $mod+q [con_id="__focused__" instance="^(?!math|dropdown).*$"] kill @@ -143,7 +146,7 @@ bindsym $mod+o sticky toggle bindsym $mod+Shift+o exec --no-startup-id "bash ~/.scripts/i3resize right" bindsym $mod+p exec --no-startup-id lmc toggle -#bindsym $mod+Shift+p +bindsym $mod+Shift+p exec --no-startup-id lmc pause bindsym $mod+a [instance="math"] scratchpad show; [instance="math"] move position center bindsym $mod+Shift+a exec $term -e pulsemixer @@ -179,7 +182,7 @@ bindsym $mod+Shift+l move right 30 bindsym $mod+z gaps outer current plus 5 bindsym $mod+Shift+z gaps outer current minus 5 -bindsym $mod+x exec --no-startup-id ~/.config/i3/lock.sh +bindsym $mod+x exec --no-startup-id lockscreen bindsym $mod+Shift+x exec --no-startup-id prompt "Are you sure you want to shutdown?" "$shutdown" bindsym $mod+c exec --no-startup-id camtoggle @@ -266,7 +269,7 @@ for_window [title="Default - Wine desktop"] floating enable for_window [instance="dropdown"] floating enable for_window [instance="dropdown"] resize set 625 400 for_window [instance="dropdown"] move scratchpad -for_window [instance="dropdown"] border pixel 5 +for_window [instance="dropdown"] border pixel 3 # Runs the tmuxinit script, which searches for an earlier tmux instance, # otherwise starts a new one (to prevent multiple dropdown sessions). exec --no-startup-id $term -n dropdown -e tmuxinit @@ -276,7 +279,7 @@ exec --no-startup-id $term -n dropdown -e tmuxinit for_window [instance="math"] floating enable for_window [instance="math"] resize set 800 300 for_window [instance="math"] move scratchpad -for_window [instance="math"] border pixel 5 +for_window [instance="math"] border pixel 2 exec --no-startup-id $term -n math -f mono:pixelsize=24 -e dropdowncalc # Bindings to make the webcam float and stick. @@ -347,14 +350,14 @@ bindsym XF86PowerOff exec --no-startup-id prompt "Are you sure you want to shut ##bindsym XF86Cut exec ##bindsym XF86MenuKB exec bindsym XF86Calculator exec $term -e R -q -bindsym XF86Sleep exec $hibernate +##bindsym XF86Sleep This binding is typically mapped by systemd automatically. ##bindsym XF86WakeUp exec bindsym XF86Explorer exec $term -e ranger ##bindsym XF86Send exec ##bindsym XF86Xfer exec bindsym XF86WWW exec --no-startup-id $BROWSER ##bindsym XF86DOS exec -bindsym XF86ScreenSaver exec exec --no-startup-id ~/.config/i3/lock.sh +bindsym XF86ScreenSaver exec exec --no-startup-id lockscreen ##bindsym XF86RotateWindows exec ##bindsym XF86TaskPane exec ##bindsym XF86Favorites exec @@ -387,10 +390,10 @@ bindsym XF86Reload restart ##bindsym XF86Launch8 exec ##bindsym XF86Launch9 exec #bindsym XF86AudioMicMute exec $micmute -##bindsym XF86TouchpadToggle exec -bindsym XF86TouchpadOn exec --no-startup-id exec synclient TouchpadOff=0 -bindsym XF86TouchpadOff exec --no-startup-id exec synclient TouchpadOff=1 -bindsym XF86Suspend exec --no-startup-id ~/.config/i3/lock.sh +bindsym XF86TouchpadToggle exec --no-startup-id toggletouchpad +bindsym XF86TouchpadOn exec --no-startup-id synclient TouchpadOff=0 +bindsym XF86TouchpadOff exec --no-startup-id synclient TouchpadOff=1 +bindsym XF86Suspend exec --no-startup-id lockscreen bindsym XF86Close kill bindsym XF86WebCam exec --no-startup-id camtoggle bindsym XF86Mail exec $term -e neomutt @@ -405,8 +408,8 @@ bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 15 bindsym XF86AudioMedia exec --no-startup-id st -e ncmpcpp bindsym XF86Display exec --no-startup-id arandr #bindsym XF86KbdLightOnOff exec -bindsym XF86KbdBrightnessDown exec --no-startup-id python3.6 ~/.i3/kb-lights.py - -bindsym XF86KbdBrightnessUp exec --no-startup-id python3.6 ~/.i3/kb-lights.py + +bindsym XF86KbdBrightnessDown exec --no-startup-id python3.6 ~/.scripts/kb-lights.py - +bindsym XF86KbdBrightnessUp exec --no-startup-id python3.6 ~/.scripts/kb-lights.py + ##bindsym XF86Reply exec ##bindsym XF86MailForward exec ##bindsym XF86Save exec diff --git a/.config/qutebrowser/config.py b/.config/qutebrowser/config.py index 6f1a1ce..2f84526 100644 --- a/.config/qutebrowser/config.py +++ b/.config/qutebrowser/config.py @@ -464,13 +464,6 @@ c.content.cookies.store = True ## Type: String c.content.default_encoding = 'iso-8859-1' -## Enable extra tools for Web developers. This needs to be enabled for -## `:inspector` to work and also adds an _Inspect_ entry to the context -## menu. For QtWebEngine, see `--enable-webengine-inspector` in -## `qutebrowser --help` instead. -## Type: Bool -c.content.developer_extras = False - ## Try to pre-fetch DNS entries to speed up browsing. ## Type: Bool c.content.dns_prefetch = True @@ -996,12 +989,6 @@ c.qt.args = [] ## Type: String c.qt.force_platform = None -## Force software rendering for QtWebEngine. This is needed for -## QtWebEngine to work with Nouveau drivers. This setting requires a -## restart. -## Type: Bool -c.qt.force_software_rendering = True - ## Show a scrollbar. ## Type: Bool c.scrolling.bar = False @@ -1099,7 +1086,7 @@ c.tabs.favicons.scale = 1.0 ## Show favicons in the tab bar. ## Type: Bool -c.tabs.favicons.show = True +#c.tabs.favicons.show = True ## Padding for tab indicators ## Type: Padding @@ -1276,7 +1263,10 @@ c.url.searchengines = { 'vw': 'https://wiki.voidlinux.eu/index.php?search={}&title=Special%3ASearch', 'thw': 'http://www.thinkwiki.org/w/index.php?search={}&title=Special%3ASearch', 'vw': 'http://vim.wikia.com/wiki/Special:Search?fulltext=Search&query={}', + 'mtp': 'http://en.metapedia.org/m/index.php?title=Special%3ASearch&search={}', 'bc': 'https://www.bitchute.com/search?q={}&sort=date_created%20desc', + 'yt': 'https://hooktube.com/results?search_query={}', + 'ytv': 'https://youtube.com/search?q={}', 'mdbg': 'https://mdbg.net/chinese/dictionary?page=worddict&wdrst=0&wdqb={}', } @@ -1291,7 +1281,7 @@ c.url.yank_ignored_parameters = ['ref', 'utm_source', 'utm_medium', 'utm_campaig ## Hide the window decoration when using wayland (requires restart) ## Type: Bool -c.window.hide_wayland_decoration = False +#c.window.hide_wayland_decoration = False ## The format to use for the window title. The following placeholders are ## defined: * `{perc}`: The percentage as a string like `[10%]`. * @@ -1578,6 +1568,9 @@ config.bind('<Tab>', 'prompt-item-focus next', mode='prompt') config.bind('<Up>', 'prompt-item-focus prev', mode='prompt') config.bind('n', 'prompt-accept no', mode='prompt') config.bind('y', 'prompt-accept yes', mode='prompt') +config.bind(';;', 'hint links download') ## Bindings for register mode config.bind('<Escape>', 'leave-mode', mode='register') + +config.source('shortcuts.py') diff --git a/.config/zathura/zathurarc b/.config/zathura/zathurarc new file mode 100644 index 0000000..39011f6 --- /dev/null +++ b/.config/zathura/zathurarc @@ -0,0 +1,10 @@ +set statusbar-h-padding 0 +set statusbar-v-padding 0 +set page-padding 1 +map u scroll half-up +map d scroll half-down +map D toggle_page_mode +map r reload +map R rotate +map K zoom in +map J zoom out diff --git a/.profile b/.profile new file mode 100644 index 0000000..093800e --- /dev/null +++ b/.profile @@ -0,0 +1,17 @@ +#!/bin/sh + +# Profile file. Runs on login. + +[[ -f ~/.bashrc ]] && . ~/.bashrc + +export PATH="$PATH:$HOME/.scripts" +export EDITOR="vim" +export TERMINAL="st" +export BROWSER="firefox" +export READER="zathura" +export BIB="$HOME/Documents/LaTeX/uni.bib" + +# Start graphical server if i3 not already running. +if [[ "$(tty)" = "/dev/tty1" ]]; then + pgrep -x i3 || exec startx +fi diff --git a/.scripts/SCRIPTS.md b/.scripts/SCRIPTS.md index 521450b..42a866e 100644 --- a/.scripts/SCRIPTS.md +++ b/.scripts/SCRIPTS.md @@ -11,6 +11,10 @@ Starts/kills /dev/video0 webcam. Placed in bottom right by default. ## `compiler` Compiles a markdown, R markdown or LaTeX document with the approriate command. +Will also run `make && sudo make install` if in a `config.h` file. +Otherwise it will create a sent presentation. +This can be thought of a general output handler. +I have it bound to `<leader>c` in vim. ## `crontog` Turns off/on all user cronjobs. @@ -69,6 +73,10 @@ i3blocks module. Shows volume percentage or mute notification. ## `i3weather` i3blocks module. Gets weather forcast from wttr.in and returns today's precipitation chance (☔), daily low (❄️) and daily high (☀️). +## `kb-lights.py` +A Python 3 script which will increase or decrease keyboard lights when given +either a `+` or `-` argument. + ## `killrecording` End a recording started by `dmenurecord` the proper way. @@ -78,12 +86,30 @@ The automatic link handler used by `newsboat` and other programs. Urls of video ## `lmc` A music controller that simplifies music/audio management and improves the interface with i3blocks. Check inside to see what it does. This is what i3 audio/music commands run by default. If you use a difference music system or ALSA, you can change this script rather than changing all the shortcuts in different places. +## `lockscreen` +The screen locker. Gives a confirm prompt and if user says yes, all audio will +be paused and the screen will be distorted and locked and screen will soon time out. User must insert password to unlock. + ## `musstuff` Some old notes and commands on deleted music shortcuts. +## `opout` +"Open output", opens the corresponding `.pdf` file if run on a `.md`, `.tex` or +`.rmd` file, or if given an `.html` file, will open it in the browser. +Bound to `<leader>p` in my vim config to reveal typical output. + +## `pauseallmpv` +Pauses all mpv instances by sending the `,` key to each. Used by several +scripts, but can be used alone as well. + ## `polybar_launch` For `polybar` users. Launches `polybar` on every screen. Should be run in the i3 config. +## `popweather` +The script called by clicking on the i3 weather module. Brings up the forecast +from `http://wttr.in` and waits for input to prevent immediate closing of +spawned window. + ## `prompt` Gives a Yes/No prompt to a question given as an argument. Used by numerous bindings like `mod+shift+x`, `mod+shift+backspace` and `mod+shift+escape`. @@ -102,6 +128,10 @@ Remove all `.tex` related build files. This is run by my vim when I stop editing ## `tmuxinit` The startup script for the dropdown terminal (toggleable with `mod+u`). Either attaches to an existing tmux session or begins a new one. +## `toggletouchpad` +As the name suggests, turns off TouchPad if on, and turns it on if off. +Requires `xf86-input-synaptics`. + ## `tpb` Search Pirate Bay for the certain search terms given as arguments. diff --git a/.scripts/compiler b/.scripts/compiler index 73ce5bc..919b428 100755 --- a/.scripts/compiler +++ b/.scripts/compiler @@ -9,9 +9,12 @@ # config.h files: (For suckless utils) recompiles and installs program. # all others: run `sent` to show a presentation +oridir=$(pwd) + file=$(readlink -f "$1") dir=$(dirname "$file") base="${file%.*}" +cd $dir textype() { \ command="pdflatex" @@ -30,3 +33,4 @@ case "$file" in *config.h) make && sudo make install ;; *) sent "$file" 2>/dev/null & ;; esac +cd $oridir diff --git a/.config/i3/kb-lights.py b/.scripts/kb-lights.py index f492de0..f492de0 100755 --- a/.config/i3/kb-lights.py +++ b/.scripts/kb-lights.py diff --git a/.scripts/linkhandler b/.scripts/linkhandler index 20b1bd3..94fdd83 100755 --- a/.scripts/linkhandler +++ b/.scripts/linkhandler @@ -6,11 +6,17 @@ # if a music file or pdf, it will download, # otherwise it opens link in browser. +scihub="http://sci-hub.tw/" + # List of sites that will be opened in mpv. vidsites="youtube.com \|hooktube.com \|bitchute.com " + +# List of academic sites whose pdfs can be dled via sci-hub. +academic="springer.com" + ext="${1##*.}" mpvFiles="mkv mp4 gif webm" fehFiles="png jpg jpeg jpe" @@ -24,6 +30,8 @@ elif echo $wgetFiles | grep -w $ext > /dev/null; then wget "$1" >/dev/null & disown elif echo "$@" | grep "$vidsites">/dev/null; then setsid nohup mpv -quiet "$1" > /dev/null & disown +elif echo "$@" | grep "$academic">/dev/null; then + curl -sO $(curl -s "$scihub""$@" | grep location.href | grep -o http.*pdf) & disown else setsid nohup $BROWSER "$1" 2>/dev/null & disown fi diff --git a/.scripts/lmc b/.scripts/lmc index 83a08db..37bd958 100755 --- a/.scripts/lmc +++ b/.scripts/lmc @@ -1,7 +1,10 @@ #!/bin/bash +# A general audio interface for LARBS. + newvol="pkill -RTMIN+10 i3blocks" -newmpd="pkill -RTMIN+11 i3blocks" +# Uncomment if i3mpdupdate isn't running: +#newmpd="pkill -RTMIN+11 i3blocks" case "$1" in "up") pamixer --allow-boost -i "$2" ; $newvol ;; @@ -9,11 +12,10 @@ case "$1" in "mute") pamixer --allow-boost -t ; $newvol ;; "truemute") pamixer --allow-boost -m ; $newvol ;; "toggle") mpc toggle ; $newmpd ;; - "pause") mpc pause ; $newmpd ;; + "pause") mpc pause ; $newmpd ; pauseallmpv ;; "forward") mpc seek +"$2" ; $newmpd ;; "back") mpc seek -"$2" ; $newmpd ;; "next") mpc next ; $newmpd ;; "prev") mpc prev ; $newmpd ;; "replay") mpc seek 0% ; $newmpd ;; esac -exit diff --git a/.config/i3/lock.png b/.scripts/lock.png Binary files differindex b09875d..b09875d 100644 --- a/.config/i3/lock.png +++ b/.scripts/lock.png diff --git a/.config/i3/lock.sh b/.scripts/lockscreen index f154487..eba33d3 100755 --- a/.config/i3/lock.sh +++ b/.scripts/lockscreen @@ -13,16 +13,19 @@ xdpyinfo -ext XINERAMA | sed '/^ head #/!d;s///' | cmd+=" -region ${w}x$h+$x+$y -paint 1 -swirl 360" xc=$((x+(w/2)-79)) yc=$((y+(h/2)-79)) - cmdend+=" ~/.config/i3/lock.png -geometry +${xc}+${yc} -composite -matte" + cmdend+=" ~/.scripts/lock.png -geometry +${xc}+${yc} -composite -matte" done cmd+="${cmdend} /tmp/screen.png" eval $cmd -} +} & + +prompt "Are you sure you want to lock the computer?" "" || exit # Pause music (mocp and mpd): mocp -P mpc pause +pauseallmpv # Lock it up! i3lock -e -f -c 000000 -i /tmp/screen.png diff --git a/.scripts/opout b/.scripts/opout new file mode 100755 index 0000000..28dcafd --- /dev/null +++ b/.scripts/opout @@ -0,0 +1,12 @@ +#!/bin/bash +# opout: "open output": A general handler for opening a file's intended output. +# I find this useful especially running from vim. + +filename=$(readlink -f "$1") +ext="${filename##*.}" +filename="${filename%.*}" + +case "$ext" in + tex|md|rmd) zathura $filename.pdf & ;; + html) $BROWSER --new-window $filename.html & ;; +esac diff --git a/.scripts/pauseallmpv b/.scripts/pauseallmpv new file mode 100755 index 0000000..b24f448 --- /dev/null +++ b/.scripts/pauseallmpv @@ -0,0 +1,4 @@ +#!/bin/bash +# Sends a , key to all mpv instances, pausing them at the last frame. + +xdotool search --class mpv | xargs -I % xdotool key --window % comma diff --git a/.scripts/texclear b/.scripts/texclear index 9951e27..4f53fc6 100755 --- a/.scripts/texclear +++ b/.scripts/texclear @@ -3,4 +3,10 @@ # Clears the build files of a LaTeX/XeLaTeX build. # I have vim run this file whenever I exit a .tex file. -find . -maxdepth 1 -regextype gnu-awk -regex "^.*\.(4tc|xref|tmp|pyc|pyo|fls|vrb|fdb_latexmk|bak|swp|aux|log|synctex\(busy\)|lof|nav|out|snm|toc|bcf|run\.xml|synctex\.gz|blg|bbl)" -delete +[[ "$1" == *.tex ]] || exit + +file=$(readlink -f "$1") +dir=$(dirname "$file") +base="${file%.*}" + +find $dir -maxdepth 1 -type f -regextype gnu-awk -regex "^$base\.(4tc|xref|tmp|pyc|pyo|fls|vrb|fdb_latexmk|bak|swp|aux|log|synctex\(busy\)|lof|nav|out|snm|toc|bcf|run\.xml|synctex\.gz|blg|bbl)" -delete diff --git a/.scripts/toggletouchpad b/.scripts/toggletouchpad new file mode 100755 index 0000000..bbb4110 --- /dev/null +++ b/.scripts/toggletouchpad @@ -0,0 +1,4 @@ +#!/bin/bash +# Toggle touchpad. Requires xf86-input-synaptics. +(synclient | grep TouchpadOff.*1 && synclient TouchpadOff=0)>/dev/null && echo "TouchPad reactivated." && exit +synclient TouchpadOff=1 && echo "TouchPad deactivated." diff --git a/.scripts/unix b/.scripts/unix new file mode 100755 index 0000000..14d7ef0 --- /dev/null +++ b/.scripts/unix @@ -0,0 +1,25 @@ +#!/bin/sh +#original artwork by http://www.sanderfocus.nl/#/portfolio/tech-heroes +#converted to shell by #nixers @ irc.unix.chat + +cat << 'eof' + [38;5;255m,_ ,_==▄▂[0m + [38;5;255m, ▂▃▄▄▅▅[48;5;240m▅[48;5;20m▂[48;5;240m▅¾[0m. [38;5;199m/ [38;5;20m/[0m + [38;5;255m[48;5;20m▄[0m[38;5;255m[48;5;199m▆[38;5;16m[48;5;255m<´ [38;5;32m"[38;5;34m»[38;5;255m▓▓[48;5;32m▓[48;5;240m%[0m\ [38;5;199m/ [38;5;20m/ [38;5;45m/ [38;5;118m/[0m + [38;5;255m,[38;5;255m[48;5;240m▅[38;5;16m[48;5;255m7" [38;5;160m´[38;5;34m>[38;5;255m[48;5;39m▓▓[38;5;199m[48;5;255m▓[0m[38;5;255m% [38;5;20m/ [38;5;118m/ [38;5;199m> [38;5;118m/ [38;5;199m>[38;5;255m/[38;5;45m%[0m + [38;5;255m▐[48;5;240m[38;5;255m¶[48;5;240m[38;5;255m▓[48;5;255m [38;5;196m,[38;5;34m»[48;5;201m[38;5;255m▓▓[0m[38;5;255m¾´[0m [38;5;199m/[38;5;255m> %[38;5;199m/[38;5;118m%[38;5;255m/[38;5;199m/ [38;5;45m/ [38;5;199m/[0m + [38;5;255m[48;5;240m▓[48;5;255m[38;5;16m▃[48;5;16m[38;5;255m▅▅[38;5;16m[48;5;255m▅▃,,[38;5;32m▄[38;5;16m▅[38;5;255m[48;5;16m▅▅[38;5;255m[48;5;20mÆ[0m[38;5;255m\[0m[38;5;20m/[38;5;118m/[38;5;255m /[38;5;118m/[38;5;199m/[38;5;255m>[38;5;45m// [38;5;255m/[38;5;118m>[38;5;199m/ [38;5;20m/[0m + [48;5;20m[38;5;255mV[48;5;255m[38;5;16m║[48;5;20m[38;5;255m«[0m[38;5;255m¼.;[48;5;240m[38;5;255m→[48;5;255m[38;5;16m ║[0m[38;5;255m<«.,[48;5;25m[38;5;255m`[48;5;240m=[0m[38;5;20m/[38;5;199m/ [38;5;255m/>[38;5;45m/[38;5;118m/[38;5;255m%/[38;5;199m% / [38;5;20m/[0m + [38;5;20m//[48;5;255m[38;5;16m╠<´ -²,)[48;5;16m[38;5;255m(▓[48;5;255m[38;5;16m~"-[38;5;199m╝/[0m[38;5;255m¾[0m[38;5;199m/ [38;5;118m%[38;5;255m/[38;5;118m>[38;5;45m/ [38;5;118m/[38;5;199m>[0m + [38;5;20m/ / [38;5;118m/ [48;5;20m[38;5;255m▐[48;5;240m[38;5;16m%[48;5;255m -./▄▃▄[48;5;16m[38;5;255m▅[48;5;255m[38;5;16m▐[48;5;255m[38;5;16m, [38;5;199m/[48;5;199m[38;5;255m7[0m[38;5;20m/[38;5;199m/[38;5;255m;/[38;5;199m/[38;5;118m% [38;5;20m/ /[0m + [38;5;20m/ [38;5;199m/[38;5;255m/[38;5;45m/[38;5;118m/[38;5;255m[48;5;240m`[48;5;20m[38;5;255m▌[48;5;20m[38;5;255m▐[48;5;255m[38;5;16m %z[0m[38;5;255mWv xX[48;5;20m[38;5;255m▓[48;5;34m[38;5;255m▇[48;5;199m[38;255m▌[0m[38;5;20m/[38;5;199m/[38;5;255m&;[38;5;20m% [38;5;199m/ [38;5;20m/[0m + [38;5;20m/ / [38;5;255m/ [38;5;118m%[38;5;199m/[38;5;255m/%/[48;5;240m[38;5;255m¾[48;5;255m[38;5;16m½´[38;5;255m[48;5;16m▌[0m[38;5;246m▃▄[38;5;255m▄▄[38;5;246m▄▃▃[0m[48;5;16m[38;5;255m▐[38;5;255m[48;5;199m¶[48;5;20m[38;5;255m\[0m[38;5;20m/[0m[48;5;255m[38;5;240m&[0m [38;5;20m/[0m + [38;5;199m<[38;5;118m/ [38;5;45m/[38;5;255m</[38;5;118m%[38;5;255m/[38;5;45m/[38;5;255m`[48;5;16m▓[48;5;255m[38;5;16m