--- /dev/null
+*.font: Source Code Pro:size=12
+
+#define nord0 #2E3440
+#define nord1 #3B4252
+#define nord2 #434C5E
+#define nord3 #4C566A
+#define nord4 #D8DEE9
+#define nord5 #E5E9F0
+#define nord6 #ECEFF4
+#define nord7 #8FBCBB
+#define nord8 #88C0D0
+#define nord9 #81A1C1
+#define nord10 #5E81AC
+#define nord11 #BF616A
+#define nord12 #D08770
+#define nord13 #EBCB8B
+#define nord14 #A3BE8C
+#define nord15 #B48EAD
+
+*.foreground: nord4
+*.background: nord0
+*.cursorColor: nord4
+*.termname: st-256color
+
+*.borderpx: 5
+*.normbordercolor: nord0
+*.selbordercolor: nord6
+
+*.normbgcolor: nord0
+*.selbgcolor: nord8
+
+*.selfgcolor: nord0
+
+*.color0: nord1
+*.color1: nord11
+*.color2: nord14
+*.color3: nord13
+*.color4: nord9
+*.color5: nord15
+*.color6: nord8
+*.color7: nord5
+*.color8: nord3
+*.color9: nord11
+*.color10: nord14
+*.color11: nord13
+*.color12: nord9
+*.color13: nord15
+*.color14: nord7
+*.color15: nord6
+
+# dmenu
+dmenu.selbackground: nord8
+
+# herbe
+herbe.background_color: nord0
+herbe.font_pattern: Source Code Pro:size=10
+herbe.width: 300
+herbe.pos_x: 20
+herbe.pos_y: 50
+
--- /dev/null
+# _ _
+# | |__ __ _ ___| |__ _ __ ___
+# | '_ \ / _` / __| '_ \| '__/ __|
+# _| |_) | (_| \__ \ | | | | | (__
+# (_)_.__/ \__,_|___/_| |_|_| \___|
+#
+
+# If not running interactively, don't do anything
+[[ $- != *i* ]] && return
+
+# prompt lmao
+PS1=' λ_ \W > '
+
+#set vi mode
+set -o vi
+
+# ibus
+export GTK_IM_MODULE=ibus
+export XMODIFIERS=@im=ibus
+export QT_IM_MODULE=ibus
+#ibus-daemon -drx
+
+# Enivormentals
+export PATH=$HOME/Scripts:$HOME/Scripts/dmenu:$HOME/Scripts/statusbar:$PATH
+
+export XDG_CONFIG_HOME=$HOME/.config
+export EDITOR="vim"
+export READER="zathura"
+export TERMINAL="st"
+export BROWSER="brave"
+export WM="dwm"
+
+# aliaseseses
+alias ls='ls --color=auto'
+alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
+alias suckless-clean='make clean && rm -rf config.h && git reset --hard home/master'
+alias musicdl="youtube-dl -f bestaudio -o ~/Music/%(title)s.%(ext)s"
+alias mpv="mpv --no-input-default-bindings"
+alias slock='slock -m "$(figlet locked xd | cowsay -f cheese -n)"'
+
+source fzfutil
+
+export LF_ICONS="\
+di=:\
+fi=:\
+ln=:\
+or=:\
+ex=:\
+*.c=:\
+*.cc=:\
+*.cpp=:\
+*.go=:\
+*.hs=:\
+*.java=:\
+*.html=:\
+*.css=:\
+*.js=:\
+*.ts=:\
+*.json=:\
+*.jsx=:\
+*.tsx=:\
+*.vue=﵂:\
+*.php=:\
+*.py=:\
+*.rkt=λ:\
+*.tex=:\
+*.md=:\
+*.vim=:\
+*.vimrc=:\
+*.viminfo=:\
+*.gitignore=:\
+*.cmd=:\
+*.sh=:\
+*.bash=:\
+*.zsh=:\
+*.fish=:\
+*.diff=繁:\
+*.bashrc=
+*.tar=:\
+*.zip=:\
+*.jar=:\
+*.rar=:\
+*.7z=:\
+*.gz=:\
+*.zst=:\
+*.jpg=:\
+*.jpeg=:\
+*.gif=:\
+*.bmp=:\
+*.png=:\
+*.svg=:\
+*.mov=:\
+*.webm=:\
+*.mp4=:\
+*.mid=:\
+*.midi=:\
+*.mp3=:\
+*.ogg=:\
+*.wav=:\
+*.pdf=:\
+"
--- /dev/null
+
+# unmap some stuff
+map d
+
+
+
+set icons true
+set hidden true
+map . set hidden!
+
+set shell sh
+set shellopts '-eu'
+set ifs "\n"
+
+# leave some space at the top and the bottom of the screen
+set scrolloff 10
+
+# use enter for shell commands
+map <enter> shell
+
+map dd delete
+
+# =-=-=-=-= custom 'go to' commands
+
+# school
+map gs. cd ~/School
+map gsc cd ~/School/cs145
+map gsm5 cd ~/School/math135
+map gsm7 cd ~/School/math137
+map gsp cd ~/School/phys121
+map gss cd ~/School/spcom223
+
+# config
+map gc. cd ~/.config
+
+# music
+map gm. cd ~/Music
+map gd. cd ~/Downloads
+
+# install
+map gi. cd ~/installs
+
+# repos
+map gr. cd ~/Repos
+
+# define a custom 'open' command
+# This command is called when current file is not a directory. You may want to
+# use either file extensions and/or mime types here. Below uses an editor for
+# text files and a file opener for the rest.
+cmd open ${{
+ case $(file --mime-type $f -b) in
+ text/*) $EDITOR $fx;;
+ *) for f in $fx; do setsid $OPENER $f > /dev/null 2> /dev/null & done;;
+ esac
+}}
+
+cmd mkdir % echo "New directory name:"; read dirname; mkdir $dirname
+
+cmd touch %echo "New file name:"; read filename; touch $filename
+
--- /dev/null
+music_directory "~/Music"
+playlist_directory "~/.config/mpd/playlists"
+
+db_file "~/.config/mpd/database"
+log_file "~/.config/mpd/log"
+pid_file "~/.config/mpd/pid"
+state_file "~/.config/mpd/state"
+sticker_file "~/.config/mpd/sticker.sql"
+
+bind_to_address "127.0.0.1"
+
+log_level "default"
+restore_paused "yes"
+save_absolute_paths_in_playlists "no"
+metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
+auto_update "yes"
+
+audio_output {
+ type "alsa"
+ name "ALSA sound card"
+}
+
+audio_output {
+ type "fifo"
+ name "togge_visualizer"
+ path "/tmp/mpd.fifo"
+ format "44100:16:2"
+}
+
--- /dev/null
+# mpv keybindings
+#
+# Location of user-defined bindings: ~/.config/mpv/input.conf
+#
+# Lines starting with # are comments. Use SHARP to assign the # key.
+# Copy this file and uncomment and edit the bindings you want to change.
+#
+# List of commands and further details: DOCS/man/input.rst
+# List of special keys: --input-keylist
+# Keybindings testing mode: mpv --input-test --force-window --idle
+#
+# Use 'ignore' to unbind a key fully (e.g. 'ctrl+a ignore').
+#
+# Strings need to be quoted and escaped:
+# KEY show-text "This is a single backslash: \\ and a quote: \" !"
+#
+# You can use modifier-key combinations like Shift+Left or Ctrl+Alt+x with
+# the modifiers Shift, Ctrl, Alt and Meta (may not work on the terminal).
+#
+# The default keybindings are hardcoded into the mpv binary.
+# You can disable them completely with: --no-input-default-bindings
+
+# Developer note:
+# On compilation, this file is baked into the mpv binary, and all lines are
+# uncommented (unless '#' is followed by a space) - thus this file defines the
+# default key bindings.
+
+# If this is enabled, treat all the following bindings as default.
+#default-bindings start
+
+#MBTN_LEFT ignore # don't do anything
+#MBTN_LEFT_DBL cycle fullscreen # toggle fullscreen on/off
+#MBTN_RIGHT cycle pause # toggle pause on/off
+#MBTN_BACK playlist-prev
+#MBTN_FORWARD playlist-next
+
+# Mouse wheels, touchpad or other input devices that have axes
+# if the input devices supports precise scrolling it will also scale the
+# numeric value accordingly
+#WHEEL_UP seek 10
+#WHEEL_DOWN seek -10
+#WHEEL_LEFT add volume -2
+#WHEEL_RIGHT add volume 2
+
+## Seek units are in seconds, but note that these are limited by keyframes
+l seek 5 exact
+h seek -5 exact
+#UP seek 60
+#DOWN seek -60
+# Do smaller, always exact (non-keyframe-limited), seeks with shift.
+# Don't show them on the OSD (no-osd).
+#Shift+RIGHT no-osd seek 1 exact
+#Shift+LEFT no-osd seek -1 exact
+#Shift+UP no-osd seek 5 exact
+#Shift+DOWN no-osd seek -5 exact
+# Skip to previous/next subtitle (subject to some restrictions; see manpage)
+#Ctrl+LEFT no-osd sub-seek -1
+#Ctrl+RIGHT no-osd sub-seek 1
+# Adjust timing to previous/next subtitle
+#Ctrl+Shift+LEFT sub-step -1
+#Ctrl+Shift+RIGHT sub-step 1
+# Move video rectangle
+#Alt+left add video-pan-x 0.1
+#Alt+right add video-pan-x -0.1
+#Alt+up add video-pan-y 0.1
+#Alt+down add video-pan-y -0.1
+# Zoom/unzoom video
+Alt+= add video-zoom 0.1
+Alt+- add video-zoom -0.1
+# Reset video zoom/pan settings
+#Alt+BS set video-zoom 0 ; set video-pan-x 0 ; set video-pan-y 0
+#PGUP add chapter 1 # skip to next chapter
+#PGDWN add chapter -1 # skip to previous chapter
+#Shift+PGUP seek 600
+#Shift+PGDWN seek -600
+[ multiply speed 1/1.1 # scale playback speed
+] multiply speed 1.1
+{ multiply speed 0.5
+} multiply speed 2.0
+#BS set speed 1.0 # reset speed to normal
+#Shift+BS revert-seek # undo previous (or marked) seek
+#Shift+Ctrl+BS revert-seek mark # mark position for revert-seek
+q quit
+Q quit-watch-later
+#q {encode} quit 4
+#ESC set fullscreen no
+#ESC {encode} quit 4
+p cycle pause # toggle pause/playback mode
+. frame-step # advance one frame and pause
+, frame-back-step # go back by one frame and pause
+SPACE cycle pause
+#> playlist-next # skip to next file
+#ENTER playlist-next # skip to next file
+#< playlist-prev # skip to previous file
+#O no-osd cycle-values osd-level 3 1 # cycle through OSD mode
+o show-progress
+#P show-progress
+#i script-binding stats/display-stats
+#I script-binding stats/display-stats-toggle
+#` script-binding console/enable
+#z add sub-delay -0.1 # subtract 100 ms delay from subs
+#Z add sub-delay +0.1 # add
+#x add sub-delay +0.1 # same as previous binding (discouraged)
+#ctrl++ add audio-delay 0.100 # this changes audio/video sync
+#ctrl+- add audio-delay -0.100
+#9 add volume -2
+#/ add volume -2
+#0 add volume 2
+#* add volume 2
+#m cycle mute
+#1 add contrast -1
+#2 add contrast 1
+#3 add brightness -1
+#4 add brightness 1
+#5 add gamma -1
+#6 add gamma 1
+#7 add saturation -1
+#8 add saturation 1
+#Alt+0 set window-scale 0.5
+#Alt+1 set window-scale 1.0
+#Alt+2 set window-scale 2.0
+# toggle deinterlacer (automatically inserts or removes required filter)
+#d cycle deinterlace
+#r add sub-pos -1 # move subtitles up
+#R add sub-pos +1 # down
+#t add sub-pos +1 # same as previous binding (discouraged)
+#v cycle sub-visibility
+# stretch SSA/ASS subtitles with anamorphic videos to match historical
+#V cycle sub-ass-vsfilter-aspect-compat
+# switch between applying no style overrides to SSA/ASS subtitles, and
+# overriding them almost completely with the normal subtitle style
+#u cycle-values sub-ass-override "force" "no"
+#j cycle sub # cycle through subtitles
+#J cycle sub down # ...backwards
+#SHARP cycle audio # switch audio streams
+#_ cycle video
+#T cycle ontop # toggle video window ontop of other windows
+#f cycle fullscreen # toggle fullscreen
+#s screenshot # take a screenshot
+#S screenshot video # ...without subtitles
+#Ctrl+s screenshot window # ...with subtitles and OSD, and scaled
+#Alt+s screenshot each-frame # automatically screenshot every frame
+#w add panscan -0.1 # zoom out with -panscan 0 -fs
+#W add panscan +0.1 # in
+#e add panscan +0.1 # same as previous binding (discouraged)
+# cycle video aspect ratios; "-1" is the container aspect
+#A cycle-values video-aspect-override "16:9" "4:3" "2.35:1" "-1"
+#POWER quit
+#PLAY cycle pause
+#PAUSE cycle pause
+#PLAYPAUSE cycle pause
+#PLAYONLY set pause no
+#PAUSEONLY set pause yes
+#STOP quit
+#FORWARD seek 60
+#REWIND seek -60
+#NEXT playlist-next
+#PREV playlist-prev
+#VOLUME_UP add volume 2
+#VOLUME_DOWN add volume -2
+#MUTE cycle mute
+#CLOSE_WIN quit
+#CLOSE_WIN {encode} quit 4
+#E cycle edition # next edition
+#l ab-loop # Set/clear A-B loop points
+#L cycle-values loop-file "inf" "no" # toggle infinite looping
+ctrl+c quit 4
+#DEL script-binding osc/visibility # cycle OSC display
+#ctrl+h cycle-values hwdec "auto" "no" # cycle hardware decoding
+#F8 show_text ${playlist} # show playlist
+#F9 show_text ${track-list} # show list of audio/sub streams
+
+#
+# Legacy bindings (may or may not be removed in the future)
+#
+#! add chapter -1 # skip to previous chapter
+#@ add chapter 1 # next
+
+#
+# Not assigned by default
+# (not an exhaustive list of unbound commands)
+#
+
+# ? add sub-scale +0.1 # increase subtitle font size
+# ? add sub-scale -0.1 # decrease subtitle font size
+# ? cycle angle # switch DVD/Bluray angle
+# ? cycle sub-forced-only # toggle DVD forced subs
+# ? cycle program # cycle transport stream programs
+# ? stop # stop playback (quit or enter idle mode)
--- /dev/null
+##############################################################
+## This is the example bindings file. Copy it to ##
+## ~/.ncmpcpp/bindings or $XDG_CONFIG_HOME/ncmpcpp/bindings ##
+## and set up your preferences ##
+##############################################################
+##
+##### General rules #####
+##
+## 1) Because each action has runtime checks whether it's
+## ok to run it, a few actions can be bound to one key.
+## Actions will be bound in order given in configuration
+## file. When a key is pressed, first action in order
+## will test itself whether it's possible to run it. If
+## test succeeds, action is executed and other actions
+## bound to this key are ignored. If it doesn't, next
+## action in order tests itself etc.
+##
+## 2) It's possible to bind more that one action at once
+## to a key. It can be done using the following syntax:
+##
+## def_key "key"
+## action1
+## action2
+## ...
+##
+## This creates a chain of actions. When such chain is
+## executed, each action in chain is run until the end of
+## chain is reached or one of its actions fails to execute
+## due to its requirements not being met. If multiple actions
+## and/or chains are bound to the same key, they will be
+## consecutively run until one of them gets fully executed.
+##
+## 3) When ncmpcpp starts, bindings configuration file is
+## parsed and then ncmpcpp provides "missing pieces"
+## of default keybindings. If you want to disable some
+## bindings, there is a special action called 'dummy'
+## for that purpose. Eg. if you want to disable ability
+## to crop playlists, you need to put the following
+## into configuration file:
+##
+## def_key "C"
+## dummy
+##
+## After that ncmpcpp will not bind any default action
+## to this key.
+##
+## 4) To let you write simple macros, the following special
+## actions are provided:
+##
+## - push_character "character" - pushes given special
+## character into input queue, so it will be immediately
+## picked by ncmpcpp upon next call to readKey function.
+## Accepted values: mouse, up, down, page_up, page_down,
+## home, end, space, enter, insert, delete, left, right,
+## tab, ctrl-a, ctrl-b, ..., ctrl-z, ctrl-[, ctrl-\\,
+## ctrl-], ctrl-^, ctrl-_, f1, f2, ..., f12, backspace.
+## In addition, most of these names can be prefixed with
+## alt-/ctrl-/shift- to be recognized with the appropriate
+## modifier key(s).
+##
+## - push_characters "string" - pushes given string into
+## input queue.
+##
+## - require_runnable "action" - checks whether given action
+## is runnable and fails if it isn't. This is especially
+## useful when mixed with previous two functions. Consider
+## the following macro definition:
+##
+## def_key "key"
+## push_characters "custom_filter"
+## apply_filter
+##
+## If apply_filter can't be currently run, we end up with
+## sequence of characters in input queue which will be
+## treated just as we typed them. This may lead to unexpected
+## results (in this case 'c' will most likely clear current
+## playlist, 'u' will trigger database update, 's' will stop
+## playback etc.). To prevent such thing from happening, we
+## need to change above definition to this one:
+##
+## def_key "key"
+## require_runnable "apply_filter"
+## push_characters "custom_filter"
+## apply_filter
+##
+## Here, first we test whether apply_filter can be actually run
+## before we stuff characters into input queue, so if condition
+## is not met, whole chain is aborted and we're fine.
+##
+## - require_screen "screen" - checks whether given screen is
+## currently active. accepted values: browser, clock, help,
+## media_library, outputs, playlist, playlist_editor,
+## search_engine, tag_editor, visualizer, last_fm, lyrics,
+## selected_items_adder, server_info, song_info,
+## sort_playlist_dialog, tiny_tag_editor.
+##
+## - run_external_command "command" - runs given command using
+## system() function.
+##
+## 5) In addition to binding to a key, you can also bind actions
+## or chains of actions to a command. If it comes to commands,
+## syntax is very similar to defining keys. Here goes example
+## definition of a command:
+##
+## def_command "quit" [deferred]
+## stop
+## quit
+##
+## If you execute the above command (which can be done by
+## invoking action execute_command, typing 'quit' and pressing
+## enter), ncmpcpp will stop the player and then quit. Note the
+## presence of word 'deferred' enclosed in square brackets. It
+## tells ncmpcpp to wait for confirmation (ie. pressing enter)
+## after you typed quit. Instead of 'deferred', 'immediate'
+## could be used. Then ncmpcpp will not wait for confirmation
+## (enter) and will execute the command the moment it sees it.
+##
+## Note: while command chains are executed, internal environment
+## update (which includes current window refresh and mpd status
+## update) is not performed for performance reasons. However, it
+## may be desirable to do so in some situration. Therefore it's
+## possible to invoke by hand by performing 'update enviroment'
+## action.
+##
+## Note: There is a difference between:
+##
+## def_key "key"
+## action1
+##
+## def_key "key"
+## action2
+##
+## and
+##
+## def_key "key"
+## action1
+## action2
+##
+## First one binds two single actions to the same key whilst
+## second one defines a chain of actions. The behavior of
+## these two is different and is described in (1) and (2).
+##
+## Note: Function def_key accepts non-ascii characters.
+##
+##### List of unbound actions #####
+##
+## The following actions are not bound to any key/command:
+##
+## - set_volume
+##
+
+
+#def_key "mouse"
+# mouse_event
+#
+def_key "k"
+ scroll_up
+#
+#def_key "shift-up"
+# select_item
+# scroll_up
+#
+def_key "j"
+ scroll_down
+#
+#def_key "shift-down"
+# select_item
+# scroll_down
+#
+#def_key "["
+# scroll_up_album
+#
+#def_key "]"
+# scroll_down_album
+#
+#def_key "{"
+# scroll_up_artist
+#
+#def_key "}"
+# scroll_down_artist
+#
+def_key "ctrl-u"
+ page_up
+#
+def_key "ctrl-d"
+ page_down
+#
+#def_key "home"
+# move_home
+#
+#def_key "end"
+# move_end
+#
+#def_key "insert"
+# select_item
+#
+#def_key "enter"
+# enter_directory
+#
+#def_key "enter"
+# toggle_output
+#
+#def_key "enter"
+# run_action
+#
+#def_key "enter"
+# play_item
+#
+#def_key "space"
+# add_item_to_playlist
+#
+#def_key "space"
+# toggle_lyrics_update_on_song_change
+#
+#def_key "space"
+# toggle_visualization_type
+#
+def_key "d"
+ delete_playlist_items
+
+def_key "d"
+ delete_browser_items
+
+def_key "d"
+ delete_stored_playlist
+
+def_key "l"
+ next_column
+#
+#def_key "right"
+# slave_screen
+#
+#def_key "right"
+# volume_up
+#
+#def_key "+"
+# volume_up
+#
+def_key "h"
+ previous_column
+#
+#def_key "left"
+# master_screen
+#
+#def_key "left"
+# volume_down
+#
+#def_key "-"
+# volume_down
+#
+#def_key ":"
+# execute_command
+#
+#def_key "tab"
+# next_screen
+#
+#def_key "shift-tab"
+# previous_screen
+#
+#def_key "f1"
+# show_help
+#
+#def_key "1"
+# show_playlist
+#
+#def_key "2"
+# show_browser
+#
+#def_key "2"
+# change_browse_mode
+#
+#def_key "3"
+# show_search_engine
+#
+#def_key "3"
+# reset_search_engine
+#
+#def_key "4"
+# show_media_library
+#
+#def_key "4"
+# toggle_media_library_columns_mode
+#
+#def_key "5"
+# show_playlist_editor
+#
+#def_key "6"
+# show_tag_editor
+#
+#def_key "7"
+# show_outputs
+#
+#def_key "8"
+# show_visualizer
+#
+#def_key "="
+# show_clock
+#
+#def_key "@"
+# show_server_info
+#
+#def_key "s"
+# stop
+#
+#def_key "p"
+# pause
+#
+#def_key ">"
+# next
+#
+#def_key "<"
+# previous
+#
+#def_key "ctrl-h"
+# jump_to_parent_directory
+#
+#def_key "ctrl-h"
+# replay_song
+#
+#def_key "backspace"
+# jump_to_parent_directory
+#
+#def_key "backspace"
+# replay_song
+#
+#def_key "f"
+# seek_forward
+#
+#def_key "b"
+# seek_backward
+#
+#def_key "r"
+# toggle_repeat
+#
+#def_key "z"
+# toggle_random
+#
+#def_key "y"
+# save_tag_changes
+#
+#def_key "y"
+# start_searching
+#
+#def_key "y"
+# toggle_single
+#
+#def_key "R"
+# toggle_consume
+#
+#def_key "Y"
+# toggle_replay_gain_mode
+#
+#def_key "T"
+# toggle_add_mode
+#
+#def_key "|"
+# toggle_mouse
+#
+#def_key "#"
+# toggle_bitrate_visibility
+#
+#def_key "Z"
+# shuffle
+#
+#def_key "x"
+# toggle_crossfade
+#
+#def_key "X"
+# set_crossfade
+#
+#def_key "u"
+# update_database
+#
+#def_key "ctrl-s"
+# sort_playlist
+#
+#def_key "ctrl-s"
+# toggle_browser_sort_mode
+#
+#def_key "ctrl-s"
+# toggle_media_library_sort_mode
+#
+#def_key "ctrl-r"
+# reverse_playlist
+#
+#def_key "ctrl-f"
+# apply_filter
+#
+#def_key "ctrl-_"
+# select_found_items
+#
+#def_key "/"
+# find
+#
+#def_key "/"
+# find_item_forward
+#
+#def_key "?"
+# find
+#
+#def_key "?"
+# find_item_backward
+#
+#def_key "."
+# next_found_item
+#
+#def_key ","
+# previous_found_item
+#
+#def_key "w"
+# toggle_find_mode
+#
+#def_key "e"
+# edit_song
+#
+#def_key "e"
+# edit_library_tag
+#
+#def_key "e"
+# edit_library_album
+#
+#def_key "e"
+# edit_directory_name
+#
+#def_key "e"
+# edit_playlist_name
+#
+#def_key "e"
+# edit_lyrics
+#
+#def_key "i"
+# show_song_info
+#
+#def_key "I"
+# show_artist_info
+#
+#def_key "g"
+# jump_to_position_in_song
+#
+#def_key "l"
+# show_lyrics
+#
+#def_key "ctrl-v"
+# select_range
+#
+#def_key "v"
+# reverse_selection
+#
+#def_key "V"
+# remove_selection
+#
+#def_key "B"
+# select_album
+#
+#def_key "a"
+# add_selected_items
+#
+#def_key "c"
+# clear_playlist
+#
+#def_key "c"
+# clear_main_playlist
+#
+#def_key "C"
+# crop_playlist
+#
+#def_key "C"
+# crop_main_playlist
+#
+#def_key "m"
+# move_sort_order_up
+#
+#def_key "m"
+# move_selected_items_up
+#
+#def_key "n"
+# move_sort_order_down
+#
+#def_key "n"
+# move_selected_items_down
+#
+#def_key "M"
+# move_selected_items_to
+#
+#def_key "A"
+# add
+#
+#def_key "S"
+# save_playlist
+#
+#def_key "o"
+# jump_to_playing_song
+#
+#def_key "G"
+# jump_to_browser
+#
+#def_key "G"
+# jump_to_playlist_editor
+#
+#def_key "~"
+# jump_to_media_library
+#
+#def_key "E"
+# jump_to_tag_editor
+#
+#def_key "U"
+# toggle_playing_song_centering
+#
+#def_key "P"
+# toggle_display_mode
+#
+#def_key "\\"
+# toggle_interface
+#
+#def_key "!"
+# toggle_separators_between_albums
+#
+#def_key "L"
+# toggle_lyrics_fetcher
+#
+#def_key "F"
+# fetch_lyrics_in_background
+#
+#def_key "alt-l"
+# toggle_fetching_lyrics_in_background
+#
+#def_key "ctrl-l"
+# toggle_screen_lock
+#
+#def_key "`"
+# toggle_library_tag_type
+#
+#def_key "`"
+# refetch_lyrics
+#
+#def_key "`"
+# add_random_items
+#
+#def_key "ctrl-p"
+# set_selected_items_priority
+#
+#def_key "q"
+# quit
+#
--- /dev/null
+
+execute_on_song_change = notify-send "Now Playing" "$(mpc current)"
+
+visualizer_fifo_path = "/tmp/mpd.fifo"
+visualizer_output_name = "toggle_visualizer"
+visualizer_sync_interval = "30"
+visualizer_in_stereo = "yes"
+visualizer_type = "spectrum"
+visualizer_look = "+|"
--- /dev/null
+auto-reload yes
+reload-time 30
+reload-threads 32
+
+bind-key j down
+bind-key k up
+bind-key l open
+bind-key h quit
+bind-key J next-feed articlelist
+bind-key K prev-feed articlelist
+bind-key a toggle-article-read
--- /dev/null
+#################################
+# Shadows #
+#################################
+
+
+# Enabled client-side shadows on windows. Note desktop windows
+# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
+# unless explicitly requested using the wintypes option.
+#
+shadow = false
+
+# The blur radius for shadows, in pixels. (defaults to 12)
+# shadow-radius = 12
+shadow-radius = 7;
+
+# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
+# shadow-opacity = .75
+
+# The left offset for shadows, in pixels. (defaults to -15)
+# shadow-offset-x = -15
+shadow-offset-x = -7;
+
+# The top offset for shadows, in pixels. (defaults to -15)
+# shadow-offset-y = -15
+shadow-offset-y = -7;
+
+# Avoid drawing shadows on dock/panel windows. This option is deprecated,
+# you should use the *wintypes* option in your config file instead.
+#
+# no-dock-shadow = false
+
+# Don't draw shadows on drag-and-drop windows. This option is deprecated,
+# you should use the *wintypes* option in your config file instead.
+#
+# no-dnd-shadow = false
+
+# Red color value of shadow (0.0 - 1.0, defaults to 0).
+# shadow-red = 0
+
+# Green color value of shadow (0.0 - 1.0, defaults to 0).
+# shadow-green = 0
+
+# Blue color value of shadow (0.0 - 1.0, defaults to 0).
+# shadow-blue = 0
+
+# Do not paint shadows on shaped windows. Note shaped windows
+# here means windows setting its shape through X Shape extension.
+# Those using ARGB background is beyond our control.
+# Deprecated, use
+# shadow-exclude = 'bounding_shaped'
+# or
+# shadow-exclude = 'bounding_shaped && !rounded_corners'
+# instead.
+#
+# shadow-ignore-shaped = ''
+
+# Specify a list of conditions of windows that should have no shadow.
+#
+# examples:
+# shadow-exclude = "n:e:Notification";
+#
+# shadow-exclude = []
+shadow-exclude = [
+ "name = 'Notification'",
+ "class_g = 'Conky'",
+ "class_g ?= 'Notify-osd'",
+ "class_g = 'Cairo-clock'",
+ "_GTK_FRAME_EXTENTS@:c"
+];
+
+# Specify a X geometry that describes the region in which shadow should not
+# be painted in, such as a dock window region. Use
+# shadow-exclude-reg = "x10+0+0"
+# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
+#
+# shadow-exclude-reg = ""
+
+# Crop shadow of a window fully on a particular Xinerama screen to the screen.
+# xinerama-shadow-crop = false
+
+
+#################################
+# Fading #
+#################################
+
+
+# Fade windows in/out when opening/closing and when opacity changes,
+# unless no-fading-openclose is used.
+# fading = false
+fading = false
+
+# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
+# fade-in-step = 0.028
+fade-in-step = 0.03;
+
+# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
+# fade-out-step = 0.03
+fade-out-step = 0.03;
+
+# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
+# fade-delta = 10
+
+# Specify a list of conditions of windows that should not be faded.
+# fade-exclude = []
+
+# Do not fade on window open/close.
+no-fading-openclose = true
+
+# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
+# no-fading-destroyed-argb = false
+
+
+#################################
+# Transparency / Opacity #
+#################################
+
+
+# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
+# inactive-opacity = 1
+inactive-opacity = 0.8;
+
+# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
+# frame-opacity = 1.0
+frame-opacity = 0.7;
+
+# Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0)
+# menu-opacity = 1.0
+
+# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
+# inactive-opacity-override = true
+inactive-opacity-override = false;
+
+# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
+# active-opacity = 1.0
+
+# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
+# inactive-dim = 0.0
+
+# Specify a list of conditions of windows that should always be considered focused.
+# focus-exclude = []
+focus-exclude = [ "class_g = 'Cairo-clock'" ];
+
+# Use fixed inactive dim value, instead of adjusting according to window opacity.
+# inactive-dim-fixed = 1.0
+
+# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
+# like `50:name *= "Firefox"`. picom-trans is recommended over this.
+# Note we don't make any guarantee about possible conflicts with other
+# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
+# example:
+opacity-rule = [
+ "97:class_g = 'St'",
+ "97:class_g = 'Zathura'"
+];
+
+
+#################################
+# Background-Blurring #
+#################################
+
+
+# Parameters for background blurring, see the *BLUR* section for more information.
+# blur-method =
+# blur-size = 12
+#
+# blur-deviation = false
+
+# Blur background of semi-transparent / ARGB windows.
+# Bad in performance, with driver-dependent behavior.
+# The name of the switch may change without prior notifications.
+#
+# blur-background = false
+
+# Blur background of windows when the window frame is not opaque.
+# Implies:
+# blur-background
+# Bad in performance, with driver-dependent behavior. The name may change.
+#
+# blur-background-frame = false
+
+
+# Use fixed blur strength rather than adjusting according to window opacity.
+# blur-background-fixed = false
+
+
+# Specify the blur convolution kernel, with the following format:
+# example:
+# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
+#
+# blur-kern = ''
+blur-kern = "3x3box";
+
+
+# Exclude conditions for background blur.
+# blur-background-exclude = []
+blur-background-exclude = [
+ "window_type = 'dock'",
+ "window_type = 'desktop'",
+ "_GTK_FRAME_EXTENTS@:c"
+];
+
+#################################
+# General Settings #
+#################################
+
+# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
+# daemon = false
+
+# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
+# `xrender` is the default one.
+#
+# backend = 'glx'
+backend = "xrender";
+
+# Enable/disable VSync.
+# vsync = false
+vsync = true
+
+# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
+# dbus = false
+
+# Try to detect WM windows (a non-override-redirect window with no
+# child that has 'WM_STATE') and mark them as active.
+#
+# mark-wmwin-focused = false
+mark-wmwin-focused = true;
+
+# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
+# mark-ovredir-focused = false
+mark-ovredir-focused = true;
+
+# Try to detect windows with rounded corners and don't consider them
+# shaped windows. The accuracy is not very high, unfortunately.
+#
+# detect-rounded-corners = false
+detect-rounded-corners = true;
+
+# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
+# not passing '_NET_WM_OPACITY' of client windows to frame windows.
+#
+# detect-client-opacity = false
+detect-client-opacity = true;
+
+# Specify refresh rate of the screen. If not specified or 0, picom will
+# try detecting this with X RandR extension.
+#
+# refresh-rate = 60
+refresh-rate = 0
+
+# Limit picom to repaint at most once every 1 / 'refresh_rate' second to
+# boost performance. This should not be used with
+# vsync drm/opengl/opengl-oml
+# as they essentially does sw-opti's job already,
+# unless you wish to specify a lower refresh rate than the actual value.
+#
+# sw-opti =
+
+# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
+# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
+# provided that the WM supports it.
+#
+# use-ewmh-active-win = false
+
+# Unredirect all windows if a full-screen opaque window is detected,
+# to maximize performance for full-screen windows. Known to cause flickering
+# when redirecting/unredirecting windows.
+#
+# unredir-if-possible = false
+
+# Delay before unredirecting the window, in milliseconds. Defaults to 0.
+# unredir-if-possible-delay = 0
+
+# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
+# unredir-if-possible-exclude = []
+
+# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
+# in the same group focused at the same time.
+#
+# detect-transient = false
+detect-transient = true
+
+# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
+# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
+# detect-transient is enabled, too.
+#
+# detect-client-leader = false
+detect-client-leader = true
+
+# Resize damaged region by a specific number of pixels.
+# A positive value enlarges it while a negative one shrinks it.
+# If the value is positive, those additional pixels will not be actually painted
+# to screen, only used in blur calculation, and such. (Due to technical limitations,
+# with use-damage, those pixels will still be incorrectly painted to screen.)
+# Primarily used to fix the line corruption issues of blur,
+# in which case you should use the blur radius value here
+# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
+# with a 5x5 one you use `--resize-damage 2`, and so on).
+# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
+#
+# resize-damage = 1
+
+# Specify a list of conditions of windows that should be painted with inverted color.
+# Resource-hogging, and is not well tested.
+#
+# invert-color-include = []
+
+# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
+# Might cause incorrect opacity when rendering transparent content (but never
+# practically happened) and may not work with blur-background.
+# My tests show a 15% performance boost. Recommended.
+#
+# glx-no-stencil = false
+
+# GLX backend: Avoid rebinding pixmap on window damage.
+# Probably could improve performance on rapid window content changes,
+# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
+# Recommended if it works.
+#
+# glx-no-rebind-pixmap = false
+
+# Disable the use of damage information.
+# This cause the whole screen to be redrawn everytime, instead of the part of the screen
+# has actually changed. Potentially degrades the performance, but might fix some artifacts.
+# The opposing option is use-damage
+#
+# no-use-damage = false
+use-damage = true
+
+# Use X Sync fence to sync clients' draw calls, to make sure all draw
+# calls are finished before picom starts drawing. Needed on nvidia-drivers
+# with GLX backend for some users.
+#
+# xrender-sync-fence = false
+
+# GLX backend: Use specified GLSL fragment shader for rendering window contents.
+# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
+# in the source tree for examples.
+#
+# glx-fshader-win = ''
+
+# Force all windows to be painted with blending. Useful if you
+# have a glx-fshader-win that could turn opaque pixels transparent.
+#
+# force-win-blend = false
+
+# Do not use EWMH to detect fullscreen windows.
+# Reverts to checking if a window is fullscreen based only on its size and coordinates.
+#
+# no-ewmh-fullscreen = false
+
+# Dimming bright windows so their brightness doesn't exceed this set value.
+# Brightness of a window is estimated by averaging all pixels in the window,
+# so this could comes with a performance hit.
+# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
+#
+# max-brightness = 1.0
+
+# Make transparent windows clip other windows like non-transparent windows do,
+# instead of blending on top of them.
+#
+# transparent-clipping = false
+
+# Set the log level. Possible values are:
+# "trace", "debug", "info", "warn", "error"
+# in increasing level of importance. Case doesn't matter.
+# If using the "TRACE" log level, it's better to log into a file
+# using *--log-file*, since it can generate a huge stream of logs.
+#
+# log-level = "debug"
+log-level = "warn";
+
+# Set the log file.
+# If *--log-file* is never specified, logs will be written to stderr.
+# Otherwise, logs will to written to the given file, though some of the early
+# logs might still be written to the stderr.
+# When setting this option from the config file, it is recommended to use an absolute path.
+#
+# log-file = '/path/to/your/log/file'
+
+# Show all X errors (for debugging)
+# show-all-xerrors = false
+
+# Write process ID to a file.
+# write-pid-path = '/path/to/your/log/file'
+
+# Window type settings
+#
+# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
+# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
+# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
+# "tooltip", "notification", "combo", and "dnd".
+#
+# Following per window-type options are available: ::
+#
+# fade, shadow:::
+# Controls window-type-specific shadow and fade settings.
+#
+# opacity:::
+# Controls default opacity of the window type.
+#
+# focus:::
+# Controls whether the window of this type is to be always considered focused.
+# (By default, all window types except "normal" and "dialog" has this on.)
+#
+# full-shadow:::
+# Controls whether shadow is drawn under the parts of the window that you
+# normally won't be able to see. Useful when the window has parts of it
+# transparent, and you want shadows in those areas.
+#
+# redir-ignore:::
+# Controls whether this type of windows should cause screen to become
+# redirected again after been unredirected. If you have unredir-if-possible
+# set, and doesn't want certain window to cause unnecessary screen redirection,
+# you can set this to `true`.
+#
+wintypes:
+{
+ tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
+ dock = { shadow = false; }
+ dnd = { shadow = false; }
+ popup_menu = { opacity = 0.8; }
+ dropdown_menu = { opacity = 0.8; }
+};
--- /dev/null
+XF86Audio{Mute,LowerVolume,RaiseVolume}
+ amixer sset Master {0,5-,5+} &\
+ refresh_blocks 10
+
+super + b
+ brave
+
+super + shift + b
+ pbm -o
+
+super + t
+ Staskell
+
+super + f
+ st lf
+
+super + n
+ st newsboat
+
+super + m
+ st ncmpcpp
+
+super + {Down,Left,Right}
+ mpc {toggle,prev,next}
+
+alt + s
+ scrot ~/Downloads/screenshots/ &&\
+ notify-send "Fullscreen screenshot taken" -i ""
+
+alt + shift + s
+ scrot -u ~/Downloads/screenshots/ &&\
+ notify-send "Windowed screenshot taken" -i ""
+
+{Home,End}
+ mod_brightness {0.1,-0.1}
--- /dev/null
+# general
+quit = q
+undo = u
+redo = r
+search = /
+help = ?
+due = !
+
+# navigation
+previous = k
+next = j
+left = h
+right = l
+bottom = G
+top = g
+
+# new tasks
+new = a
+newAbove = O
+newBelow = o
+duplicate = +
+
+# editing tasks
+edit = e, A, i
+clear = C
+delete = D
+detail = <Enter>
+dueDate = @
+clearDate = <Backspace>
+
+# moving tasks
+moveUp = K
+moveDown = J
+# move to top of previous list
+moveLeftTop = ˙
+# move to top of next list
+moveRightTop = ¬
+# move to bottom of previous list
+moveLeftBottom = H
+# move to bottom of next list
+moveRightBottom = L
+# move to bottom of last list
+complete = <Space>
+# select a list to move to
+moveMenu = m
+
+# lists
+listNew = N
+listEdit = E
+listDelete = X
+listRight = >
+listLeft = <
--- /dev/null
+[general]
+filename = taskell.md
+
+[layout]
+padding = 1
+column_width = 30
+column_padding = 3
+description_indicator = "≡"
+statusbar = true
+
+[markdown]
+title = "##"
+task = "###"
+summary = ">"
+due = "@"
+subtask = "-"
+localTimes = false
--- /dev/null
+## To Do
+
+
+## Doing
+
+
+## Done
+
--- /dev/null
+[other]
+
+; list title
+title.fg = green
+
+; status bar
+statusBar.bg = blue
+statusBar.fg = black
+
+; current list title
+titleCurrent.fg = blue
+
+; current task
+taskCurrent.fg = magenta
+
+; subtasks
+; selected
+subtaskCurrent.fg = magenta
+; incomplete
+subtaskIncomplete.fg = blue
+; complete
+subtaskComplete.fg = yellow
+
+; disabled
+disabled.fg = yellow
--- /dev/null
+#!/bin/sh
+
+get_option() {
+ xrdb -query | grep $1 | awk '{print $2}'
+}
+
+config_file=$XDG_CONFIG_HOME/zathura/zathurarc
+
+cat > $config_file <<- CONF
+set recolor
+set recolor-darkcolor "$(get_option foreground)"
+set recolor-lightcolor "$(get_option *.color0:)"
+set default-bg "$(get_option *.color0:)"
+map i recolor
+
+set font Source Code Pro:size=12
+set statusbar-fg "$(get_option *.color0:)"
+set statusbar-bg "$(get_option *.color2:)"
+set statusbar-v-padding 2
+set statusbar-h-padding 8
+
+CONF
--- /dev/null
+" _
+" __ _(_)_ __ ___ _ __ ___
+" \ \ / / | '_ ` _ \| '__/ __|
+" \ V /| | | | | | | | | (__
+" (_)_/ |_|_| |_| |_|_| \___|
+"
+
+syntax on
+set number
+set relativenumber
+set hlsearch
+set encoding=utf-8
+set tabstop=4
+set shiftwidth=4
+set expandtab
+set formatoptions-=cro "disables auto comments
+
+setlocal spell
+set spelllang=en_us
+set spellcapcheck=
+
+set conceallevel=2
+
+" colors
+hi Conceal ctermbg=Black
+hi SpellBad ctermfg=Red ctermbg=Black cterm=underline
+
+" Some macros
+
+" vim plug
+" this blob auto installs vim plug if it isnt already
+if empty(glob('~/.vim/autoload/plug.vim'))
+ silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
+ \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
+ autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
+ endif
+
+call plug#begin('~/.vim/plugged')
+
+Plug 'sirver/ultisnips'
+Plug 'lervag/vimtex'
+Plug 'jiangmiao/auto-pairs'
+Plug 'PietroPate/vim-tex-conceal'
+Plug 'vim-airline/vim-airline'
+Plug 'habamax/vim-godot'
+Plug 'tpope/vim-commentary'
+
+call plug#end()
+
+" Ultisnips
+let g:UltiSnipsExpandTrigger = '<tab>'
+let g:UltiSnipsJumpForwardTrigger = '<tab>'
+let g:UltiSnipsJumpBackwardTrigger = '<s-tab>'
+let g:UltiSnipsSnippetDirectories=["UltiSnips", "mysnippets"]
+
+" Vimtex
+let g:tex_flavor='latex'
+let g:vimtex_view_method='zathura'
+let g:vimtex_quickfix_mode=0
+let g:tex_conceal='abdmgs'
+
+let g:vimtex_compiler_latexmk = {
+ \'build_dir': '/home/pinosaur/.cache/latexaux/',
+\}
+
+" VimAirline
+"let g:airline#extensions#tabline#enabled = 1
+let g:airline_powerline_fonts=1
+
--- /dev/null
+#!/bin/sh
+
+# This is a simple launcher script for Taskell
+
+boards_path="$HOME/.config/taskell/boards/"
+
+#also look into autocomplete and pressing esc to quit this script
+# todo: check to see if name is taken, also append .md
+
+(
+ cd "$boards_path"
+ board="new_board"
+ mode=$(echo -e "o\nn" | dmenu -i -p "Open board (O) or create new board (N)?")
+
+ [ $mode = "n" ] && board=$(dmenu -p "Choose a name for the board") || \
+ [ $mode = "o" ] && board=$(ls -1 | dmenu -i -p "Choose board to open")
+
+ [ -z "$board" ] && exit 1
+
+ st -e taskell "$board"
+)
--- /dev/null
+#!/bin/sh
+
+fuzzy_dirs="$HOME/Scripts/* $HOME/School/* $HOME/.vim/mysnippets/* $HOME/.bashrc $HOME/.xinitrc $HOME/.Xresources $HOME/.Xmodmap $HOME/.config/*"
+
+fzs() {
+ fname="$(find $fuzzy_dirs -type f | fzf)"
+ [ -z $fname ] || $EDITOR $fname # make sure a file was selected
+}
+
+fcd() {
+ dname="$(find $fuzzy_dirs -type d | fzf)"
+ [ -z $dname ] || cd $dname
+}
--- /dev/null
+#!/bin/sh
+
+bright="$(xrandr --verbose | grep Brightness)" &&\
+xrandr --output LVDS1 --brightness "$(echo ${bright#* } ${1} | awk '{print $1 + $2}')"
--- /dev/null
+#!/bin/sh
+
+get_json() {
+ cat - | python3 -c "import sys, json; print(json.load(sys.stdin)['$1'])"
+}
+
+while read line; do
+ icon="$(echo $line | get_json app_icon)"
+ msg="$(echo $line | get_json summary)"
+ herbe "$icon $msg" &
+done
--- /dev/null
+#!/bin/sh
+# Pinosaur's BookMarking or pbm
+#
+# The bookmark file should have one url on each line
+# Empty lines and lines with a # symbol will be ignored
+#
+# You can also add an alias for each url
+# Just add the alias as a second column on the same line
+#
+# example:
+# https://suckless.org/ ~suckless
+#
+# Requires dmenu with the 'reject no match' patch,
+# available at https://tools.suckless.org/dmenu/patches/reject-no-match/dmenu-rejectnomatch-4.7.diff
+#
+# this script is horrible, ill try to improve it once im better at shell scripting
+
+BOOKMARKS_FILE="$HOME/Data/bookmarks"
+
+open() {
+ # Some error checking
+ [ -z $BROWSER ] &&\
+ echo "No browser set, try setting your $BROWSER environmental variable" &&\
+ exit 1
+
+ selection="$(cat "$BOOKMARKS_FILE" | egrep -v '^$' | grep -v '#' \
+ | awk '{ print $2 }'\
+ | dmenu -r \
+ )"
+
+ # Make sure that user actually selects a url
+ [ -z "$selection" ] &&\
+ echo "No url selected" && exit 1
+
+ url="$(cat "$BOOKMARKS_FILE" | egrep "\s$selection" | awk '{ print $1 }')"
+ $BROWSER "${url}"
+}
+
+add() {
+ echo "Not implemented yet lolz"
+}
+
+[ "$1" = "-o" ] &&\
+ open &&\
+ exit 0
+[ "$1" = "-a" ] &&\
+ add &&\
+ exit 0
+echo "Invalid flags" && exit 1
+
+
--- /dev/null
+#!/bin/bash
+
+# https://unix.stackexchange.com/questions/37258/refresh-reload-active-browser-tab-from-command-line
+
+BROWSER=$1
+RELOAD_KEY="CTRL+R"
+
+CURWINDOW=$(xdotool getactivewindow)
+
+xdotool search --name ${BROWSER} windowactivate --sync
+xdotool search --name ${BROWSER} key --clearmodifiers ${RELOAD_KEY}
--- /dev/null
+#!/bin/sh
+
+bat="$(cat /sys/class/power_supply/BAT0/capacity)"
+
+icon=""
+[ $bat -gt "13" ] && icon=""
+[ $bat -gt "38" ] && icon=""
+[ $bat -gt "63" ] && icon=""
+[ $bat -gt "88" ] && icon=""
+
+echo -e "$icon $bat%"
--- /dev/null
+#!/bin/sh
+
+dte="$(date +"%a, %b %d %H:%M")"
+echo -e "$dte"
--- /dev/null
+#!/bin/sh
+
+# alternate to display total mem too
+#mem="$(df -h | grep /dev/sda5 | awk '{printf "%s:%s", $3, $2}')"
+mem="$(df -h | grep /dev/sda5 | awk '{print $3}')"
+echo -e "$mem"
--- /dev/null
+#!/bin/sh
+
+# alternate script to display total ram too
+#ram="$(free -t -m | grep Mem | awk '{printf "%sM:%sM", $3, $2}')"
+ram="$(free -t -m | grep Mem | awk '{printf "%sM", $3}')"
+echo -e "$ram"
+
--- /dev/null
+#!/bin/sh
+
+volume="$(amixer sget Master | grep 'Mono:' | awk -F'[][]' '{ print $2 }')"
+
+icon=""
+[ ${volume%\%} -gt "0" ] && icon=""
+[ ${volume%\%} -gt "50" ] && icon=""
+[ ${volume%\%} -gt "75" ] && icon=""
+echo -e "$icon $volume"
+
--- /dev/null
+#!/bin/sh
+
+wifi="$(nmcli device wifi | grep -F '*')"
+
+#not exactly sure why, but u nede || instead of &&
+output=""
+[ -z "$wifi" ] || output="$(echo "$wifi" | awk '{printf "%s %s", $3, $6}')"
+
+echo "$output"
--- /dev/null
+#!/bin/sh
+
+pkill "-RTMIN+$1" dwmblocks