diff --git a/.config/Xresources b/.config/Xresources
new file mode 100644
index 00000000..611f39ab
--- /dev/null
+++ b/.config/Xresources
@@ -0,0 +1,156 @@
+!! Transparency (0-1):
+*.alpha: 0.8
+
+!! Set a default font and font size as below:
+*.font: monospace:size=10
+
+/* name dark light */
+/* black 0 8 */
+/* red 1 9 */
+/* green 2 10 */
+/* yellow 3 11 */
+/* blue 4 12 */
+/* purple 5 13 */
+/* cyan 6 14 */
+/* white 7 15 */
+
+/* !! gruvbox: */
+/* *.color0: #1d2021 */
+/* *.color1: #cc241d */
+/* *.color2: #98971a */
+/* *.color3: #d79921 */
+/* *.color4: #458588 */
+/* *.color5: #b16286 */
+/* *.color6: #689d6a */
+/* *.color7: #a89984 */
+/* *.color8: #928374 */
+/* *.color9: #fb4934 */
+/* *.color10: #b8bb26 */
+/* *.color11: #fabd2f */
+/* *.color12: #83a598 */
+/* *.color13: #d3869b */
+/* *.color14: #8ec07c */
+/* *.color15: #ebdbb2 */
+/* *.color256: #1d2021 */
+/* *.color257: #ebdbb2 */
+
+/* !! gruvbox light: */
+/* *.color0: #fbf1c7 */
+/* *.color1: #cc241d */
+/* *.color2: #98971a */
+/* *.color3: #d79921 */
+/* *.color4: #458588 */
+/* *.color5: #b16286 */
+/* *.color6: #689d6a */
+/* *.color7: #7c6f64 */
+/* *.color8: #928374 */
+/* *.color9: #9d0006 */
+/* *.color10: #79740e */
+/* *.color11: #b57614 */
+/* *.color12: #076678 */
+/* *.color13: #8f3f71 */
+/* *.color14: #427b58 */
+/* *.color15: #3c3836 */
+/* *.background: #fbf1c7 */
+/* *.foreground: #282828 */
+/* st.alpha: 0.9 */
+
+/* !! brogrammer: */
+/* *.foreground: #d6dbe5 */
+/* *.background: #131313 */
+/* *.color0: #1f1f1f */
+/* *.color8: #d6dbe5 */
+/* *.color1: #f81118 */
+/* *.color9: #de352e */
+/* *.color2: #2dc55e */
+/* *.color10: #1dd361 */
+/* *.color3: #ecba0f */
+/* *.color11: #f3bd09 */
+/* *.color4: #2a84d2 */
+/* *.color12: #1081d6 */
+/* *.color5: #4e5ab7 */
+/* *.color13: #5350b9 */
+/* *.color6: #1081d6 */
+/* *.color14: #0f7ddb */
+/* *.color7: #d6dbe5 */
+/* *.color15: #ffffff */
+/* *.colorBD: #d6dbe5 */
+
+/* ! base16 */
+/* *.color0: #181818 */
+/* *.color1: #ab4642 */
+/* *.color2: #a1b56c */
+/* *.color3: #f7ca88 */
+/* *.color4: #7cafc2 */
+/* *.color5: #ba8baf */
+/* *.color6: #86c1b9 */
+/* *.color7: #d8d8d8 */
+/* *.color8: #585858 */
+/* *.color9: #ab4642 */
+/* *.color10: #a1b56c */
+/* *.color11: #f7ca88 */
+/* *.color12: #7cafc2 */
+/* *.color13: #ba8baf */
+/* *.color14: #86c1b9 */
+/* *.color15: #f8f8f8 */
+
+/* !! solarized */
+/* *.color0: #073642 */
+/* *.color1: #dc322f */
+/* *.color2: #859900 */
+/* *.color3: #b58900 */
+/* *.color4: #268bd2 */
+/* *.color5: #d33682 */
+/* *.color6: #2aa198 */
+/* *.color7: #eee8d5 */
+/* *.color9: #cb4b16 */
+/* *.color8: #fdf6e3 */
+/* *.color10: #586e75 */
+/* *.color11: #657b83 */
+/* *.color12: #839496 */
+/* *.color13: #6c71c4 */
+/* *.color14: #93a1a1 */
+/* *.color15: #fdf6e3 */
+
+/* !! xterm */
+/* *.color0: #000000 */
+/* *.color1: #cd0000 */
+/* *.color2: #00cd00 */
+/* *.color3: #cdcd00 */
+/* *.color4: #0000cd */
+/* *.color5: #cd00cd */
+/* *.color6: #00cdcd */
+/* *.color7: #e5e5e5 */
+/* *.color8: #4d4d4d */
+/* *.color9: #ff0000 */
+/* *.color10: #00ff00 */
+/* *.color11: #ffff00 */
+/* *.color12: #0000ff */
+/* *.color13: #ff00ff */
+/* *.color14: #00ffff */
+/* *.color15: #aabac8 */
+/* *.background: #000000 */
+
+/* ! Dracula Xresources palette */
+/* *.foreground: #F8F8F2 */
+/* *.background: #282A36 */
+/* *.color0: #000000 */
+/* *.color8: #4D4D4D */
+/* *.color1: #FF5555 */
+/* *.color9: #FF6E67 */
+/* *.color2: #50FA7B */
+/* *.color10: #5AF78E */
+/* *.color3: #F1FA8C */
+/* *.color11: #F4F99D */
+/* *.color4: #BD93F9 */
+/* *.color12: #CAA9FA */
+/* *.color5: #FF79C6 */
+/* *.color13: #FF92D0 */
+/* *.color6: #8BE9FD */
+/* *.color14: #9AEDFE */
+/* *.color7: #BFBFBF */
+/* *.color15: #E6E6E6 */
+
+/* *.background: .color0 */
+/* *.color256: 0#1d2021 */
+/* *.color257: 15#ebdbb2 */
diff --git a/.config/bspwm/bspwm/bspwmrc b/.config/bspwm/bspwm/bspwmrc
new file mode 100755
index 00000000..c0f45d15
--- /dev/null
+++ b/.config/bspwm/bspwm/bspwmrc
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+# If refreshing bspwm, remove all previous rules to prevent doubling up.
+bspc rule -r "*"
+
+xsetroot -cursor_name left_ptr
+
+# We look for a non-laptop monitor to use for default, but use the laptop
+# screen (LVDS) if there's nothing else. This is because I assume that if you
+# have an extra screen attached to a laptop, you want to use that.
+mainmonitor="$(bspc query --monitors --names | grep -v LVDS | head -n 1)"
+
+# if ! echo "$mainmonitor" | grep LVDS >/dev/null 2>&1; then
+# xrandr --output "$mainmonitor" --auto --output LVDS1 --off
+# else
+# mainmonitor="LVDS1"
+# xrandr --output LVDS1 --auto
+# fi
+
+# Start workspaces on the main monitor.
+bspc monitor $mainmonitor -d 1 2 3 4 5 6 7 8 9 10
+bspc desktop -f 1
+
+# If you want a multi-monitor display or something else, I leave that to you to
+# arrange. I have this sensible default for most people's use cases.
+
+bspc config border_width 3
+bspc config window_gap 15
+bspc config top_padding 24 # top_padding I set equal to polybar's height
+bspc config focus_follows_pointer true
+
+bspc rule -a Zathura state=tiled
+
+dropdownname="dropdown"
+bspc query -N -n .hidden >/dev/null || setsid $TERMINAL -n "$dropdownname" -e dropdown >/dev/null 2>&1 &
+bspc rule -a St:$dropdownname hidden=on
+bspc rule -a St:$dropdownname sticky=on
+bspc rule -a St:$dropdownname state=floating
+
+bspc config external_rules_command "$(which floaters)"
diff --git a/.config/fontconfig/fonts.conf b/.config/fontconfig/fonts.conf
index a541b2bb..cc435d5e 100755
--- a/.config/fontconfig/fonts.conf
+++ b/.config/fontconfig/fonts.conf
@@ -1,30 +1,37 @@
-
-
- serif
- Source Code Pro
-
-
- sans-serif
- Source Code Pro
-
-
- sans
- Source Code Pro
-
-
- monospace
- Source Code Pro
-
-
-
-
- monospace
- Symbola
-
-
+
+ serif
+
+ Linux Libertine
+ Joy Pixels
+ Noto Color Emoji
+
+
+
+ sans-serif
+
+ Linux Biolinum
+ Joy Pixels
+ Noto Color Emoji
+
+
+
+ sans
+
+ Linux Biolinum
+ Joy Pixels
+ Noto Color Emoji
+
+
+
+ monospace
+
+ Liberation Mono
+ Inconsolata
+ Joy Pixels
+ Noto Color Emoji
+
+
-
-
diff --git a/.config/gtk-2.0/gtkrc-2.0 b/.config/gtk-2.0/gtkrc-2.0
index 9aa6a6e4..da4d02e6 100644
--- a/.config/gtk-2.0/gtkrc-2.0
+++ b/.config/gtk-2.0/gtkrc-2.0
@@ -1,7 +1,7 @@
# DO NOT EDIT! This file will be overwritten by LXAppearance.
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
-include "/home/luke/.gtkrc-2.0.mine"
+include "~/.gtkrc-2.0.mine"
gtk-theme-name="Arc-Gruvbox"
gtk-icon-theme-name="Adwaita"
gtk-font-name="Sans 10"
diff --git a/.config/i3/config b/.config/i3/config
index ef183e38..ff8e8aed 100644
--- a/.config/i3/config
+++ b/.config/i3/config
@@ -18,6 +18,11 @@ set $mod Mod4
set $netrefresh --no-startup-id sudo -A systemctl restart NetworkManager
set $stoprec --no-startup-id dmenurecord kill
+# #---Gaps---# #
+for_window [class="^.*"] border pixel 2
+gaps inner $inner_gaps
+gaps outer $outer_gaps
+
# #---Dropdown Windows---# #
# General dropdown window traits. The order can matter.
for_window [instance="dropdown_*"] floating enable
diff --git a/.config/lf/lfrc b/.config/lf/lfrc
index 11ab3d39..8f892363 100644
--- a/.config/lf/lfrc
+++ b/.config/lf/lfrc
@@ -70,5 +70,5 @@ map reload
map shell
map x $$f
map X !$f
-map o &mimeopen $f
-map O $mimeopen --ask $f
+map o &mimeopen "$f"
+map O $mimeopen --ask "$f"
diff --git a/.config/mimeapps.list b/.config/mimeapps.list
index f707dec2..fb42cd50 100644
--- a/.config/mimeapps.list
+++ b/.config/mimeapps.list
@@ -1,15 +1,22 @@
[Default Applications]
+
+# xdg-open will use these settings to determine how to open filetypes.
+# These .desktop entries can also be seen and changed in ~/.local/share/applications/
+
+text/x-shellscript=text.desktop;
x-scheme-handler/magnet=torrent.desktop;
application/x-bittorrent=torrent.desktop;
x-scheme-handler/mailto=mail.desktop;
text/plain=text.desktop;
-text/x-shellscript=text.desktop;
application/postscript=pdf.desktop;
application/pdf=pdf.desktop;
image/png=img.desktop;
image/jpeg=img.desktop;
image/gif=img.desktop;
application/rss+xml=rss.desktop
+video/x-matroska=video.desktop
+x-scheme-handler/lbry=lbry.desktop
+inode/directory=file.desktop
[Added Associations]
text/plain=code-oss.desktop;
diff --git a/.config/wal/postrun b/.config/wal/postrun
new file mode 100755
index 00000000..e2ee73cb
--- /dev/null
+++ b/.config/wal/postrun
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+source "${HOME}/.cache/wal/colors.sh"
+
+mkdir -p "${HOME}/.config/dunst"
+mkdir -p "${HOME}/.config/zathura"
+ln -sf "${HOME}/.cache/wal/dunstrc" "${HOME}/.config/dunst/dunstrc"
+ln -sf "${HOME}/.cache/wal/zathurarc" "${HOME}/.config/zathura/zathurarc"
+
+fix_sequences() {
+ e=$'\e'
+ sequences=$(cat)
+ foreground_color="$(echo -e "${sequences}\c" | grep --color=never -Eo "${e}]10[^${e}\\\\]*?${e}\\\\" | grep --color=never -Eo "#[0-9A-Fa-f]{6}")"
+ background_color="$(echo -e "${sequences}\c" | grep --color=never -Eo "${e}]11[^${e}\\\\]*?${e}\\\\" | grep --color=never -Eo "#[0-9A-Fa-f]{6}")"
+ cursor_color="$(echo -e "${sequences}\c" | grep --color=never -Eo "${e}]12[^${e}\\\\]*?${e}\\\\" | grep --color=never -Eo "#[0-9A-Fa-f]{6}")"
+
+for term in /dev/pts/{0..9}*
+do
+echo -e "\e]4;256;${cursor_color}\a\c" > "${term}" 2>/dev/null
+echo -e "\e]4;258;${background_color}\a\c" > "${term}" 2>/dev/null
+echo -e "\e]4;259;${foreground_color}\a\c" > "${term}" 2>/dev/null
+done
+}
+
+fix_sequences <"${HOME}/.cache/wal/sequences"
+
+pkill dunst
+dunst &
diff --git a/.config/wal/templates/dunstrc b/.config/wal/templates/dunstrc
new file mode 100644
index 00000000..9a625006
--- /dev/null
+++ b/.config/wal/templates/dunstrc
@@ -0,0 +1,152 @@
+[global]
+ monitor = 0
+ follow = keyboard
+ geometry = "350x5-0+24"
+ indicate_hidden = yes
+ shrink = yes
+ transparency = 20
+ notification_height = 0
+ separator_height = 2
+ padding = 0
+ horizontal_padding = 8
+ frame_width = 3
+ frame_color = "{color4}"
+
+ # Define a color for the separator.
+ # possible values are:
+ # * auto: dunst tries to find a color fitting to the background;
+ # * foreground: use the same color as the foreground;
+ # * frame: use the same color as the frame;
+ # * anything else will be interpreted as a X color.
+ separator_color = frame
+
+ # Sort messages by urgency.
+ sort = yes
+
+ idle_threshold = 120
+ font = Monospace 14
+ line_height = 0
+ markup = full
+
+ # The format of the message. Possible variables are:
+ # %a appname
+ # %s summary
+ # %b body
+ # %i iconname (including its path)
+ # %I iconname (without its path)
+ # %p progress value if set ([ 0%] to [100%]) or nothing
+ # %n progress value if set without any extra characters
+ # %% Literal %
+ # Markup is allowed
+ format = "%s\n%b"
+
+ alignment = left
+ show_age_threshold = 60
+ word_wrap = yes
+ ellipsize = middle
+ ignore_newline = no
+ stack_duplicates = true
+ hide_duplicate_count = true
+ show_indicators = yes
+ icon_position = left
+ max_icon_size = 40
+ #icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/:/usr/share/icons/Adwaita/256x256/status/
+ sticky_history = yes
+ history_length = 20
+ dmenu = /usr/bin/dmenu -p dunst:
+ browser = /usr/bin/firefox -new-tab
+
+ # Always run rule-defined scripts, even if the notification is suppressed
+ always_run_script = true
+
+ title = Dunst
+ class = Dunst
+ startup_notification = false
+ force_xinerama = false
+[experimental]
+ per_monitor_dpi = false
+
+[shortcuts]
+ close = ctrl+space
+ close_all = ctrl+shift+space
+ history = ctrl+grave
+ context = ctrl+shift+period
+
+[urgency_low]
+ # IMPORTANT: colors have to be defined in quotation marks.
+ # Otherwise the "#" and following would be interpreted as a comment.
+ background = "{background}"
+ foreground = "{foreground}"
+ timeout = 5
+ # Icon for notifications with low urgency, uncomment to enable
+ #icon = /path/to/icon
+
+[urgency_normal]
+ background = "{background}"
+ foreground = "{foreground}"
+ timeout = 5
+
+[urgency_critical]
+ background = "{background}"
+ foreground = "{foreground}"
+ frame_color = "#fabd2f"
+ timeout = 0
+
+# Every section that isn't one of the above is interpreted as a rules to
+# override settings for certain messages.
+# Messages can be matched by "appname", "summary", "body", "icon", "category",
+# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
+# "background", "new_icon" and "format".
+# Shell-like globbing will get expanded.
+#
+# SCRIPTING
+# You can specify a script that gets run when the rule matches by
+# setting the "script" option.
+# The script will be called as follows:
+# script appname summary body icon urgency
+# where urgency can be "LOW", "NORMAL" or "CRITICAL".
+#
+# NOTE: if you don't want a notification to be displayed, set the format
+# to "".
+# NOTE: It might be helpful to run dunst -print in a terminal in order
+# to find fitting options for rules.
+
+#[espeak]
+# summary = "*"
+# script = dunst_espeak.sh
+
+#[script-test]
+# summary = "*script*"
+# script = dunst_test.sh
+
+#[ignore]
+# # This notification will not be displayed
+# summary = "foobar"
+# format = ""
+
+#[history-ignore]
+# # This notification will not be saved in history
+# summary = "foobar"
+# history_ignore = yes
+
+#[signed_on]
+# appname = Pidgin
+# summary = "*signed on*"
+# urgency = low
+#
+#[signed_off]
+# appname = Pidgin
+# summary = *signed off*
+# urgency = low
+#
+#[says]
+# appname = Pidgin
+# summary = *says*
+# urgency = critical
+#
+#[twitter]
+# appname = Pidgin
+# summary = *twitter.com*
+# urgency = normal
+#
+# vim: ft=cfg
diff --git a/.config/wal/templates/zathurarc b/.config/wal/templates/zathurarc
new file mode 100644
index 00000000..53737238
--- /dev/null
+++ b/.config/wal/templates/zathurarc
@@ -0,0 +1,33 @@
+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
+map i recolor
+map p print
+
+set default-bg "{background}"
+set default-fg "{foreground}"
+set statusbar-bg "{background}"
+set statusbar-fg "{foreground}"
+set inputbar-bg "{background}"
+set inputbar-fg "{foreground}"
+set notification-bg "{background}"
+set notification-fg "{foreground}"
+set notification-error-bg "{background}"
+set notification-error-fg "{foreground}"
+set notification-warning-bg "{background}"
+set notification-warning-fg "{foreground}"
+set highlight-color "{color3}"
+set highlight-active-color "{color4}"
+set completion-bg "{color3}"
+set completion-fg "{color4}"
+set completion-highlight-bg "{color3}"
+set completion-highlight-fg "{color4}"
+set recolor-lightcolor "{background}"
+set recolor-darkcolor "{foreground}"
diff --git a/.local/bin/compiler b/.local/bin/compiler
index a124d5f0..2fefdf5a 100755
--- a/.local/bin/compiler
+++ b/.local/bin/compiler
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# This script will compile or run another finishing operation on a document. I
# have this script run via vim.
diff --git a/.local/bin/cron/IMPORTANT_NOTE.md b/.local/bin/cron/IMPORTANT_NOTE.md
index 9eece420..f5a130b9 100644
--- a/.local/bin/cron/IMPORTANT_NOTE.md
+++ b/.local/bin/cron/IMPORTANT_NOTE.md
@@ -8,4 +8,4 @@ When you add them as cronjobs, I recommend you precede the command with commands
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus; export DISPLAY=:0; . $HOME/.zprofile; then_command_goes_here
```
-This ensures that notifications will display, xdotool commands will function and environmental varialbes will work as well.
+This ensures that notifications will display, xdotool commands will function and environmental variables will work as well.
diff --git a/.local/bin/cron/checkup b/.local/bin/cron/checkup
index ebcdd2ac..57bb6d45 100755
--- a/.local/bin/cron/checkup
+++ b/.local/bin/cron/checkup
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
# Syncs repositories and downloads updates, meant to be run as a cronjob.
ping -q -c 1 1.1.1.1 > /dev/null || exit
diff --git a/.local/bin/cron/cronbat b/.local/bin/cron/cronbat
index ee21a17b..2dc0950f 100755
--- a/.local/bin/cron/cronbat
+++ b/.local/bin/cron/cronbat
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
# Notify me with notify-send if my battery is below 25%.
# You can set this to run via cron.
diff --git a/.local/bin/cron/crontog b/.local/bin/cron/crontog
index 237eb9cc..67f620b9 100755
--- a/.local/bin/cron/crontog
+++ b/.local/bin/cron/crontog
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
# Toggles all cronjobs off/on.
# Stores disabled crontabs in ~/.consaved until restored.
diff --git a/.local/bin/cron/newsup b/.local/bin/cron/newsup
index 1238754b..dd270921 100755
--- a/.local/bin/cron/newsup
+++ b/.local/bin/cron/newsup
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
# Set as a cron job to check for new RSS entries for newsboat.
# If newsboat is open, sends it an "R" key to refresh.
diff --git a/.local/bin/displayselect b/.local/bin/displayselect
index 57005716..c0e34795 100755
--- a/.local/bin/displayselect
+++ b/.local/bin/displayselect
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# A UI for detecting and selecting all displays. Probes xrandr for connected
# displays and lets user select one to use. User may also select "manual
diff --git a/.local/bin/dmenuhandler b/.local/bin/dmenuhandler
index c4eecc3c..c7e27400 100755
--- a/.local/bin/dmenuhandler
+++ b/.local/bin/dmenuhandler
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
# Feed this script a link and it will give dmenu
# some choice programs to use to open it.
diff --git a/.local/bin/dmenumount b/.local/bin/dmenumount
index e01c7eb3..c192873a 100755
--- a/.local/bin/dmenumount
+++ b/.local/bin/dmenumount
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# Gives a dmenu prompt to mount unmounted drives and Android phones. If
# they're in /etc/fstab, they'll be mounted automatically. Otherwise, you'll
diff --git a/.local/bin/dmenupass b/.local/bin/dmenupass
index 461a5511..8631a134 100755
--- a/.local/bin/dmenupass
+++ b/.local/bin/dmenupass
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# This script is the SUDO_ASKPASS variable, meaning that it will be used as a
# password prompt if needed.
diff --git a/.local/bin/dmenurecord b/.local/bin/dmenurecord
index 7e80f3c8..a0339e45 100755
--- a/.local/bin/dmenurecord
+++ b/.local/bin/dmenurecord
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# Usage:
# `$0`: Ask for recording type via dmenu
diff --git a/.local/bin/dmenuumount b/.local/bin/dmenuumount
index 25717a9e..da0f4016 100755
--- a/.local/bin/dmenuumount
+++ b/.local/bin/dmenuumount
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
# A dmenu prompt to unmount drives.
# Provides you with mounted partitions, select one to unmount.
# Drives mounted at /, /boot and /home will not be options to unmount.
diff --git a/.local/bin/dmenuunicode b/.local/bin/dmenuunicode
index bb576297..12240e74 100755
--- a/.local/bin/dmenuunicode
+++ b/.local/bin/dmenuunicode
@@ -1,18 +1,18 @@
-#!/usr/bin/env sh
+#!/bin/sh
# The famous "get a menu of emojis to copy" script.
# Must have xclip installed to even show menu.
-xclip -h >/dev/null || exit
+xclip -h 2>/dev/null || exit 1
-chosen=$(grep -v "#" ~/.local/share/larbs/emoji | dmenu -i -l 20 -fn Monospace-18)
+chosen=$(cut -d ';' -f1 ~/.local/share/larbs/emoji | dmenu -i -l 20 | sed "s/ .*//")
[ "$chosen" != "" ] || exit
-c=$(echo "$chosen" | sed "s/ .*//")
-echo "$c" | tr -d '\n' | xclip -selection clipboard
-notify-send "'$c' copied to clipboard." &
-
-s=$(echo "$chosen" | sed "s/.*; //" | awk '{print $1}')
-echo "$s" | tr -d '\n' | xclip
-notify-send "'$s' copied to primary." &
+# If you run this command with an argument, it will automatically insert the character.
+if [ -n "$1" ]; then
+ xdotool key Shift+Insert
+else
+ echo "$chosen" | tr -d '\n' | xclip -selection clipboard
+ notify-send "'$chosen' copied to clipboard." &
+fi
diff --git a/.local/bin/ext b/.local/bin/ext
index 6fa15ca2..c5f89c5d 100755
--- a/.local/bin/ext
+++ b/.local/bin/ext
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# A general, all-purpose extraction script. Not all extraction programs here
# are installed by LARBS automatically.
@@ -24,7 +24,8 @@ fi
if [ -f "$archive" ] ; then
case "$archive" in
- *.tar.bz2|*.tar.xz|*.tbz2) tar xvjf "$archive" ;;
+ *.tar.bz2|*.tbz2) tar xvjf "$archive" ;;
+ *.tar.xz) tar -xf "$archive" ;;
*.tar.gz|*.tgz) tar xvzf "$archive" ;;
*.lzma) unlzma "$archive" ;;
*.bz2) bunzip2 "$archive" ;;
diff --git a/.local/bin/getkeys b/.local/bin/getkeys
index f4c9eb54..8871d414 100755
--- a/.local/bin/getkeys
+++ b/.local/bin/getkeys
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
cat ~/.local/share/larbs/getkeys/"$1" 2>/dev/null && exit
echo "Run command with one of the following arguments for info about that program:"
ls ~/.local/share/larbs/getkeys
diff --git a/.local/bin/i3cmds/ddspawn b/.local/bin/i3cmds/ddspawn
index 1c4af36b..d4a40342 100755
--- a/.local/bin/i3cmds/ddspawn
+++ b/.local/bin/i3cmds/ddspawn
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# Toggle floating dropdown terminal in i3, or start if non-existing.
# $1 is the script run in the terminal.
diff --git a/.local/bin/i3cmds/dropdowncalc b/.local/bin/i3cmds/dropdowncalc
index 132d8e19..f0615fd1 100755
--- a/.local/bin/i3cmds/dropdowncalc
+++ b/.local/bin/i3cmds/dropdowncalc
@@ -1,2 +1,3 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
ifinstalled bc && echo "Welcome to the Calculator." && bc -lq
diff --git a/.local/bin/i3cmds/hover b/.local/bin/i3cmds/hover
index d02bbbcf..a8a3e19e 100755
--- a/.local/bin/i3cmds/hover
+++ b/.local/bin/i3cmds/hover
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
[ -z "$1" ] && exit # If $1 is left, hovers in the bottom left, if right, the bottom right
current=$(xdotool getwindowfocus)
newwidth=$(($(xdotool getdisplaygeometry | awk '{print $2}') / 3))
diff --git a/.local/bin/i3cmds/i3resize b/.local/bin/i3cmds/i3resize
index f89bdb5c..0bfb5eab 100755
--- a/.local/bin/i3cmds/i3resize
+++ b/.local/bin/i3cmds/i3resize
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
# This script was made by `goferito` on Github.
# Some cleanup by Luke.
diff --git a/.local/bin/i3cmds/tmuxdd b/.local/bin/i3cmds/tmuxdd
index c8eccbb0..39972401 100755
--- a/.local/bin/i3cmds/tmuxdd
+++ b/.local/bin/i3cmds/tmuxdd
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
# This is the script that i3 runs to either start tmux in
# the dropdown terminal or log into a previous session.
tmux a || tmux
diff --git a/.local/bin/i3cmds/toggle-welcome b/.local/bin/i3cmds/toggle-welcome
new file mode 100755
index 00000000..715db09e
--- /dev/null
+++ b/.local/bin/i3cmds/toggle-welcome
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# Toggles the LARBS welcome message.
+
+PIC="$HOME/.local/share/larbs/larbs.png"
+
+grep LARBSWELCOME "$HOME/.xprofile" &&
+ ( sed -i "/LARBSWELCOME/d" ~/.xprofile && notify-send -i "$PIC" "LARBS welcome message" "Welcome message disabled. Press Super+Shift+F1 again to reverse." ) ||
+ ( echo "notify-send -i \"$PIC\" \"Welcome to LARBS\" \"Press super+F1 for the help menu.\" # LARBSWELCOME" >> ~/.xprofile &&
+ notify-send -i "$PIC" "LARBS welcome message" "Welcome message re-enabled." )
diff --git a/.local/bin/ifinstalled b/.local/bin/ifinstalled
index baa7cda4..c8e1c2ec 100755
--- a/.local/bin/ifinstalled
+++ b/.local/bin/ifinstalled
@@ -1,3 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
# If $1 command is not available, error code and notify.
command -v "$1" >/dev/null || { notify-send "📦 $1" "must be installed for this function." && exit 1 ;}
diff --git a/.local/bin/launch_polybar b/.local/bin/launch_polybar
index 77b9b211..f67b4e01 100755
--- a/.local/bin/launch_polybar
+++ b/.local/bin/launch_polybar
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# Terminate already running bar instances
killall -q polybar
diff --git a/.local/bin/linkhandler b/.local/bin/linkhandler
index 8a18280e..2c64dcbc 100755
--- a/.local/bin/linkhandler
+++ b/.local/bin/linkhandler
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# Feed script a url or file location.
# If an image, it will view in sxiv,
diff --git a/.local/bin/lmc b/.local/bin/lmc
new file mode 100755
index 00000000..bbe99a56
--- /dev/null
+++ b/.local/bin/lmc
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+NUM="${2:-5}"
+
+# Uncomment the following line to use Pulseaudio.
+# PULSE=true
+
+if [ "$PULSE" ]; then
+ toggle() { pulsemixer --toggle-mute ;}
+ mute() { pulsemixer --mute ;}
+ up() { pulsemixer --change-volume +"$NUM" ;}
+ down() { pulsemixer --change-volume -"$NUM" ;}
+else
+ toggle() { amixer sset Master toggle ;}
+ mute() { amixer sset Master mute ;}
+ up() { amixer sset Master "$NUM"%+ ;}
+ down() { amixer sset Master "$NUM"%- ;}
+fi
+
+case "$1" in
+ toggle) toggle ;;
+ mute) mute ;;
+ up) up ;;
+ down) down ;;
+esac >/dev/null
+
+pkill -RTMIN+10 "${STATUSBAR:?}" &
diff --git a/.local/bin/maimpick b/.local/bin/maimpick
index 0b621072..7125e615 100755
--- a/.local/bin/maimpick
+++ b/.local/bin/maimpick
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# This is bound to Shift+PrintScreen by default, requires maim. It lets you
# choose the kind of screenshot to take, including copying the image or even
diff --git a/.local/bin/mpd-module-update b/.local/bin/mpd-module-update
index 85eb0023..da8d9fc8 100755
--- a/.local/bin/mpd-module-update
+++ b/.local/bin/mpd-module-update
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# This loop will update the mpd statusbar module whenever a command changes the
# music player's status. mpd must be running on X's start for this to work.
diff --git a/.local/bin/opout b/.local/bin/opout
index 258f7214..28af763a 100755
--- a/.local/bin/opout
+++ b/.local/bin/opout
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# opout: "open output": A general handler for opening a file's intended output,
# usually the pdf of a compiled document. I find this useful especially
@@ -7,8 +7,7 @@
basename="$(echo "$1" | sed 's/\.[^\/.]*$//')"
case "$1" in
- *.tex|*.md|*.[rR]md|*.ms|*.me|*.mom) setsid "$READER" "$basename".pdf >/dev/null 2>&1 & ;;
- *.[0-9]) setsid "$READER" "$basename".pdf >/dev/null 2>&1 & ;;
- *.html) setsid $BROWSER "$basename".html >/dev/null 2>&1 & ;;
+ *.tex|*.m[dse]|*.[rR]md|*.mom|*.[0-9]) setsid xdg-open "$basename".pdf >/dev/null 2>&1 & ;;
+ *.html) setsid "$BROWSER" "$basename".html >/dev/null 2>&1 & ;;
*.sent) setsid sent "$1" >/dev/null 2>&1 & ;;
esac
diff --git a/.local/bin/pauseallmpv b/.local/bin/pauseallmpv
index d1d35756..85a7032c 100755
--- a/.local/bin/pauseallmpv
+++ b/.local/bin/pauseallmpv
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# You might notice all mpv commands are aliased to have this input-ipc-server
# thing. That's just for this particular command, which allows us to pause
diff --git a/.local/bin/podentr b/.local/bin/podentr
index bf1eeb8a..e765c584 100755
--- a/.local/bin/podentr
+++ b/.local/bin/podentr
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
# entr command to run `queueandnotify` when newsboat queue is changed
[ "$(pgrep -x $(basename $0) | wc -l)" -gt 2 ] && exit
diff --git a/.local/bin/prompt b/.local/bin/prompt
index c12a47b5..666434fb 100755
--- a/.local/bin/prompt
+++ b/.local/bin/prompt
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
# A dmenu binary prompt script.
# Gives a dmenu prompt labeled with $1 to perform command $2.
# For example:
diff --git a/.local/bin/qndl b/.local/bin/qndl
index 32ad03db..f5bd14f2 100755
--- a/.local/bin/qndl
+++ b/.local/bin/qndl
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
# $1 is a url; $2 is a command
[ -z "$1" ] && exit
base="$(basename "$1")"
diff --git a/.local/bin/queueandnotify b/.local/bin/queueandnotify
index 38c4a539..867b15e6 100755
--- a/.local/bin/queueandnotify
+++ b/.local/bin/queueandnotify
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
# Podboat sucks. This script replaces it.
# It reads the newsboat queue, queuing downloads with taskspooler.
# It also removes the junk from extentions.
diff --git a/.local/bin/refbar b/.local/bin/refbar
index b346cf04..78b50188 100755
--- a/.local/bin/refbar
+++ b/.local/bin/refbar
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# Refresh the dwmbar.
# Send SIGTRAP signal to dwmbar script, which will handle it with a trap.
diff --git a/.local/bin/remaps b/.local/bin/remaps
index 89250447..ed6ae435 100755
--- a/.local/bin/remaps
+++ b/.local/bin/remaps
@@ -1,5 +1,6 @@
-#!/usr/bin/env sh
-# This script is called by i3 on startup to remap keys.
+#!/bin/sh
+
+# This script is called on startup to remap keys.
# Increase key speed via a rate change
xset r rate 300 50
# Map the caps lock key to super...
diff --git a/.local/bin/rotdir b/.local/bin/rotdir
index 7c81b94e..7313a424 100755
--- a/.local/bin/rotdir
+++ b/.local/bin/rotdir
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# When I open an image from the file manager in sxiv (the image viewer), I want
# to be able to press the next/previous keys to key through the rest of the
diff --git a/.local/bin/rssadd b/.local/bin/rssadd
index 4bf87a32..4ef31a4c 100755
--- a/.local/bin/rssadd
+++ b/.local/bin/rssadd
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
! echo "$1" | grep "https*://\S\+\.[A-Za-z]\+\S*" >/dev/null &&
notify-send "That doesn't look like a full URL." && exit
RSSFILE="$HOME/.config/newsboat/urls"
diff --git a/.local/bin/samedir b/.local/bin/samedir
index f2ac87fe..73facfd4 100755
--- a/.local/bin/samedir
+++ b/.local/bin/samedir
@@ -1,5 +1,8 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
+# Open a terminal window in the same directory as the currently active window.
+
PID=$(xprop -id "$(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}')" | grep -m 1 PID | cut -d " " -f 3)
-PID=$(echo "$(pstree -lpA "$PID" | tail -n 1)" | awk -F'---' '{print $NF}' | sed -re 's/[^0-9]//g')
-cd "$(readlink /proc/"$PID"/cwd)"
+PID="$(pstree -lpA "$PID" | tail -n 1 | awk -F'---' '{print $NF}' | sed -re 's/[^0-9]//g')"
+cd "$(readlink /proc/"$PID"/cwd)" || return 1
"$TERMINAL"
diff --git a/.local/bin/setbg b/.local/bin/setbg
index 33d5c558..1fca01cb 100755
--- a/.local/bin/setbg
+++ b/.local/bin/setbg
@@ -1,9 +1,12 @@
-#!/usr/bin/env sh
+#!/bin/sh
# In LARBS, ~/.config/wall.png is the location of the system wallpaper. This
# script, if given an argument, moves it there. This script without an
# argument sets ~/.config/wall.png as the wallpaper, which is required on login
-# if you don't want a blakc screen.
+# if you don't want a black screen.
+#
+# You may also give a directory name to select a random image from that
+# directory as a wallpaper. Be careful that the directory only has images.
[ ! -z "$1" ] && cp "$1" ~/.config/assets/wallpaper.png && notify-send -i "$HOME/.config/assets/wallpaper.png" "Wallpaper changed."
xwallpaper --focus ~/.config/assets/wallpaper.png
diff --git a/.local/bin/shortcuts b/.local/bin/shortcuts
index 56fd81a9..3cc83ca0 100755
--- a/.local/bin/shortcuts
+++ b/.local/bin/shortcuts
@@ -1,4 +1,5 @@
#!/usr/bin/env bash
+
# Output locations. Unactivated progs should go to /dev/null.
shell_shortcuts="$HOME/.config/shortcutrc"
diff --git a/.local/bin/showclip b/.local/bin/showclip
index 5896de63..d2faff8b 100755
--- a/.local/bin/showclip
+++ b/.local/bin/showclip
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# Display contents of selection via dunst if running.
# Separate script for i3.
diff --git a/.local/bin/statusbar/moonphase b/.local/bin/statusbar/moonphase
new file mode 100755
index 00000000..d2bbad61
--- /dev/null
+++ b/.local/bin/statusbar/moonphase
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+mnphs=$(pom $1 | grep -o 'New\|Waxing Crescent\|First Quarter\|Waxing Gibbous\|Full\|Waning Gibbous\|Last Quarter\|Waning Crescent' | grep -m1 '.')
+prcnt=$(pom $1 | grep -o '[[:digit:]]*%')
+case "$mnphs" in
+ "New") icon="🌑" prcnt="0%" ;;
+ "Waxing Crescent") icon="🌒" ;;
+ "First Quarter") icon="🌓" prcnt="50%" ;;
+ "Waxing Gibbous") icon="🌔" ;;
+ "Full") icon="🌕" prcnt="100%" ;;
+ "Waning Gibbous") icon="🌖" ;;
+ "Last Quarter") icon="🌗" prcnt="50%" ;;
+ "Waning Crescent") icon="🌘" ;;
+ *) echo errorrrr ;;
+esac
+
+printf "%s %s\\n" "$icon" "$prcnt"
diff --git a/.local/bin/td-toggle b/.local/bin/td-toggle
index 4178eed9..dfac906f 100755
--- a/.local/bin/td-toggle
+++ b/.local/bin/td-toggle
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
# If transmission-daemon is running, will ask to kill, else will ask to start.
if pgrep -x transmission-da >/dev/null ;
then
diff --git a/.local/bin/texclear b/.local/bin/texclear
index 83fd586a..f6a5062c 100755
--- a/.local/bin/texclear
+++ b/.local/bin/texclear
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# Clears the build files of a LaTeX/XeLaTeX build.
# I have vim run this file whenever I exit a .tex file.
diff --git a/.local/bin/torwrap b/.local/bin/torwrap
index becd2176..0fbb3a80 100755
--- a/.local/bin/torwrap
+++ b/.local/bin/torwrap
@@ -1,6 +1,7 @@
-#!/usr/bin/env sh
-ifinstalled transmission-remote-cli transmission-cli || exit
+#!/bin/sh
+
+ifinstalled tremc transmission-cli || exit
! pgrep -x transmission-da >/dev/null && transmission-daemon && notify-send "Starting torrent daemon..." && sleep 3 && pkill -RTMIN+7 "${STATUSBAR:?}"
-$TERMINAL -e transmission-remote-cli
+$TERMINAL -e tremc
diff --git a/.local/bin/transadd b/.local/bin/transadd
index cd9f8aa4..5d8f510d 100755
--- a/.local/bin/transadd
+++ b/.local/bin/transadd
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# Mimeapp script for adding torrent to transmission-daemon, but will also start the daemon first if not running.
diff --git a/.local/bin/unix b/.local/bin/unix
index 74aa5809..a9fb96eb 100755
--- a/.local/bin/unix
+++ b/.local/bin/unix
@@ -1,4 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
#original artwork by http://www.sanderfocus.nl/#/portfolio/tech-heroes
#converted to shell by #nixers @ irc.unix.chat
@@ -22,4 +23,4 @@ cat << 'eof'
[38;5;118m/ [38;5;20m/ [38;5;240m%[38;5;20m%%%%[38;5;240m%;, [38;5;255m\[38;5;240m%[38;5;20m%[38;5;255ml[38;5;240m%%;// _/[38;5;20m%;,[0m [38;5;234mdmr[0m
[38;5;20m/ [38;5;240m%[38;5;20m%%;,[0m [38;5;255m<[38;5;20m;[38;5;240m\-=-/ /[0m
[38;5;20m;,[0m [38;5;240ml[0m
-eof
\ No newline at end of file
+eof
diff --git a/.local/share/applications/file.desktop b/.local/share/applications/file.desktop
new file mode 100644
index 00000000..369bdc0f
--- /dev/null
+++ b/.local/share/applications/file.desktop
@@ -0,0 +1,4 @@
+[Desktop Entry]
+Type=Application
+Name=File Manager
+Exec=/usr/local/bin/st -e lf %u
diff --git a/.local/share/larbs/readme.mom b/.local/share/larbs/readme.mom
index 2a6f6ca8..c46b1a82 100644
--- a/.local/share/larbs/readme.mom
+++ b/.local/share/larbs/readme.mom
@@ -8,7 +8,7 @@
.DOCTYPE DEFAULT
.COPYSTYLE FINAL
.PRINTSTYLE TYPESET
-.PT_SIZE 10
+.PT_SIZE 12
.START
Use vim keys (\f(CWh/j/k/l\fP) to navigate this document.
Pressing \f(CWs\fP will fit it to window width (\f(CWa\fP to revert).
@@ -16,7 +16,7 @@ Pressing \f(CWs\fP will fit it to window width (\f(CWa\fP to revert).
\f(CWSuper+f\fP to toggle fullscreen.
\f(CWf\fP will highlight links to follow which are selectable by typing the number that appears plus \f(CWEnter\fP.
\f(CWq\fP to quit.
-(These are general shortcuts of \f(CWzathura\fP, the pdf reader.)
+(These are general binds set for \fBzathura\fP, the pdf reader.)
.LI
.ITEM
\f(CWMod+F1\fP will show this document at any time.
@@ -24,20 +24,6 @@ Pressing \f(CWs\fP will fit it to window width (\f(CWa\fP to revert).
By \f(CWMod\fP I mean the Super Key, usually known as "the Windows Key."
.LIST OFF
.PP
-Questions or suggestions? Email me at
-.PDF_WWW_LINK "mailto:luke@lukesmith.xyz" "luke@lukesmith.xyz"
-.LI
-.ITEM
-LARBS website:
-.PDF_WWW_LINK "https://larbs.xyz"
-.ITEM
-My website:
-.PDF_WWW_LINK "https://lukesmith.xyz"
-.ITEM
-Donate:
-.PDF_WWW_LINK "https://lukesmith.xyz/donate" "https://lukesmith.xyz/donate"
-(It makes a difference!)
-.LIST OFF
FAQs are at the end of this document.
.HEADING 1 "Welcome!"
.HEADING 2 "Basic goals and principles of this system:"
@@ -71,7 +57,8 @@ but you can also hold it down and it will act as another Windows/super/mod key.
The menu button (usually between the right Alt and Ctrl) is an alternative Super/Mod button.
This is to make one-handing on laptops easier.
.LIST OFF
-If you'd like to change any of these keyboard changes, you need only open and change \f(CW~/.xprofile\fP.
+If you'd like to change any of these keyboard changes, you need only open and change the \f(CWremaps\fP script.
+All custom scripts in LARBS are located in \f(CW~/.local/bin/\fP.
Actually, this should go without saying, but \fIeverything\fP here can easily be changed.
Below in this document, there is information about where to change programs/components.
.PP
@@ -80,23 +67,18 @@ If you want to learn more of this, run \f(CWMod+Shift+E\fP and type and select t
This setting can be changed if you don't like it by deleting or commenting out the contents of \f(CW~/.config/inputrc\fP.
.HEADING 2 "The Status Bar"
.PP
-If you're new to dwm, notice the status bar on the top of the screen.
-To the left side, you'll see the numbers of your current workspace/tag(s).
-On the right side, you'll see various system status notifiers, the date, volume, even music and local weather if possible, etc.
+To the left, you'll see the numbers of your current workspace/tag(s).
+On the right, you'll see various system status notifiers, the date, volume, even music and local weather if possible, etc.
+Each module on the right of the status bar is a script located in \f(CW~/.local/bin/statusbar/\fP.
+You can see what they do and modify them from there.
I'm sure you can figure it out.
-The script that sets the bar is \f(CW~/.local/bin/dwmbar\fP.
-You can read the specifics there or change it if you want.
-If you edit and save changes to that file in vim, vim will automatically kill and update it.
+.PP
+In i3, the program i3blocks controls what modules appear in the statusbar; its config file is in \f(CW~/.config/i3blocks/config\fP.
.HEADING 2 "Deeper Tutorials"
.PP
Press \f(CWmod+shift+e\fP at any time to get a menu of programs to watch videos about streaming directly from YouTube.
You can also check the config files for programs which detail a lot of the specific bindings.
.HEADING 1 "Key Bindings"
-.PP
-First, the key bindings.
-Key bindings are stored in two places.
-The file \f(CW~/.config/sxhkd/sxhkdrc\fP contains most of them, which you can see and edit there if you like.
-dwm-specific binds are compiled into dwm itself, but can be found in \f(CW~/repos/dwm/config.h\fP. You'll have to recompile dwm to change them.
.HEADING 2 "Window basics"
.PP
Notice the case sensitivity of the shortcuts\c
@@ -108,9 +90,7 @@ To type capital letters, hold down the \f(CWShift\fP key\(emthat might sound lik
.ITEM
\f(CWMod+Enter\fP \(en Spawn terminal (the default terminal is \f(CWst\fP; run \f(CWman st\fP for more.)
.ITEM
-\f(CWMod+q\fP \(en Close window
-.ITEM
-\f(CWMod+Q\fP \(en Force close window
+\f(CWMod+q\fP \(en Close window (Hold down shift to force kill.)
.ITEM
\f(CWMod+d\fP \(en dmenu (For running commands or programs without shortcuts)
.ITEM
@@ -139,19 +119,6 @@ To type capital letters, hold down the \f(CWShift\fP key\(emthat might sound lik
.ITEM
\f(CWMod+N\fP \(en Same as above, but for the bottom right corner.
.LIST OFF
-.HEADING 2 "Window layouts"
-.LI
-.ITEM
-\f(CWMod+t\fP \(en Tiling mode (active by default)
-.ITEM
-\f(CWMod+f\fP \(en Monocle mode (cycle through windows fullscreen)
-.ITEM
-\f(CWMod+y\fP \(en Fibbonacci mode (similar to tiling mode)
-.ITEM
-\f(CWMod+u\fP \(en Center the master window
-.ITEM
-\f(CWMod+o\fP \(en Center and float the master window
-.LIST OFF
.HEADING 2 "Basic Programs"
.PP
\fINote:\fP LARBS will install nearly all of these programs by default, but some only come if you chose an extra option.
@@ -160,23 +127,23 @@ Naturally, you can use \f(CWyay\fP to look for and install any you want to add.
.ITEM
\f(CWMod+r\fP \(en lf (file browser/manager)
.ITEM
-\f(CWMod+e\fP \(en mutt (email; not installed by default, see below)
+\f(CWMod+e\fP \(en neomutt (email) \(en Must be first configured by running \f(CWmw add\fP.
.ITEM
\f(CWMod+m\fP \(en ncmpcpp (music player)
.ITEM
-\f(CWMod+w\fP \(en nmtui (for connecting to wireless internet)
-.ITEM
\f(CWMod+a\fP \(en Dropdown calculator (hide with \f(CWmod+a\fP)
.ITEM
-\f(CWMod+a\fP \(en htop (system info)
+\f(CWMod+i\fP \(en htop (system info)
.ITEM
\f(CWMod+n\fP \(en newsboat (RSS feed reader)
.ITEM
\f(CWMod+A\fP \(en alsa (audio system control)
.ITEM
-\f(CWMod+W\fP \(en Web Browser (Brave)
+\f(CWMod+w\fP \(en Web Browser (Brave)
.ITEM
-\f(CWMod+G\fP \(en GIMP (for general image manipulation)
+\f(CWMod+W\fP \(en nmtui (for connecting to wireless internet)
+.ITEM
+\f(CWMod+G\fP \(en GIMP (for general image manipulation) \(en Not installed by default.
.LIST OFF
.HEADING 2 "System"
.LI
@@ -187,13 +154,13 @@ Naturally, you can use \f(CWyay\fP to look for and install any you want to add.
.ITEM
\f(CWMod+Shift+Backspace\fP \(en reboot (will ask to confirm)
.ITEM
-\f(CWMod+Shift+Escape\fP \(en exit the graphical environment (will ask to confirm)
+\f(CWMod+Shift+Escape\fP \(en log out of the graphical environment (will ask to confirm)
.ITEM
\f(CWMod+F1\fP \(en Shows this document
.ITEM
\f(CWMod+Shift+F1\fP \(en Toggle the LARBS welcome message
.ITEM
-\f(CWMod+F2\fP \(en Refresh dwm
+\f(CWMod+F2\fP \(en Refresh/reload i3
.ITEM
\f(CWMod+F3\fP \(en Select screen/display to use
.ITEM
@@ -244,16 +211,16 @@ I use ncmpcpp as a music player, which is a front end for mpd.
.ITEM
\f(CWMod+A\fP \(en alsamixer (general volume sink/source control)
.LIST OFF
-.HEADING 2 "Tags/Workspaces"
+.HEADING 2 "Workspaces"
.PP
-There are nine tags, active tags are highlighted in the top left.
+There are ten workspaces, active workspaces are highlighted in the top left.
.LI
.ITEM
-\f(CWMod+(Number)\fP \(en Go to that number tag
+\f(CWMod+(Number)\fP \(en Go to that number workspace
.ITEM
-\f(CWMod+Shift+(Number)\fP \(en Send window to that tag
+\f(CWMod+Shift+(Number)\fP \(en Send window to that workspace
.ITEM
-\f(CWMod+Tab\fP \(en Go to previous tag
+\f(CWMod+Tab\fP \(en Go to previous workspace (may also use \f(CW\\\fP for Tab)
.ITEM
\f(CWMod+g\fP \(en Go to left workspace
.ITEM
@@ -274,9 +241,9 @@ previous recordings as their names are based on their exact times.
.ITEM
\f(CWMod+Delete\fP \(en Kills any recording started in the above way.
.ITEM
-\f(CWMod+ScrollLock\fP \(en Turn on and off screenkey (if installed) for visual typing display
-.ITEM
\f(CWMod+Shift+c\fP \(en Toggles a webcam in the bottom right for screencasting.
+.ITEM
+\f(CWMod+ScrollLock\fP \(en Toggle screenkey (if installed) to show keypresses
.LIST OFF
.HEADING 2 "Other buttons"
.PP
@@ -285,17 +252,11 @@ buttons, screen brightness, email, web browsing buttons, etc.) to what you
would expect.
.HEADING 1 "Configuration"
.PP
-Here's a brief reference as to what program does what and where you can modify them.
-Some of the programs marked as "suckless" programs must be recompiled after being reconfigured.
-That means you should go to their directory in \f(CW~/repos/\fP and run \f(CWmake && sudo make install\fP after making changes.
-.LI
-.ITEM
-dwm: the window manager itself \(en \f(CW~/repos/dwm/\fP (suckless)
-.ITEM
-sxhkd: key bindings \(en \f(CW~/.config/sxhkd/sxhkdrc\fP, while some dwm-related commands are configured in dwm, the rest, most of them, are set by sxhkd.
-.ITEM
-lf: the file manager, \f(CW~/.config/lfrc\fP for the main config, \f(CW~/.config/scope\fP for file previews.
-.LIST OFF
+Dotfiles/settings files are located in \f(CW~/.config/\fP, note that dotfiles to programs not included in LARBS are there as well by requests of users. I do not necessarily maintain all these dotfiles, but they remain as legacy.
+.PP
+Suckless programs, st (the terminal) and dmenu among others do not have traditional config files, but have their source code location in \f(CW~/.local/src/\fP.
+There you can modify their \f(CWconfig.h\fP files, then \f(CWsudo make install\fP to reinstall.
+(You'll have to restart the program to see its effects obviously.)
.HEADING 1 "Frequently Asked Questions (FAQs)"
.HEADING 2 "My keyboard isn't working as expected!"
.PP
@@ -305,7 +266,7 @@ These settings may override your preferred settings, so you should open this fil
.PP
On fresh install, the Linux audio system (ALSA) often mutes outputs.
You may want to unbind
-You may also need to set your preferred default output sink which you can do by the command line, or by selecting one with \f(CWpulsemixer\fP (\f(CWmod+A\fP).
+You may also need to set your preferred default output sink which you can do by the command line, or by selecting one with \f(CWalsamixer\fP (\f(CWmod+A\fP).
If you have a more complex audio setup and can't be bothered to figure out ALSA, you might want to install and enable PulseAudio, which general "just werks".
.HEADING 2 "How do I copy and paste?"
@@ -314,7 +275,7 @@ Copying and pasting is always program-specific on any system.
In most graphical programs, copy and paste will be the same as they are on Windows: \f(CWctrl-c\fP and \f(CWctrl-v\fP.
In the Linux terminal, those binds have other more important purposes, so you can run \f(CWman st\fP to see how to copy and paste in my terminal build.
.PP
-Additionally, I've set vim to use the clipboard as the default buffer, which means when you copy or delete something in vim, it will be in your system clipboard as well, so you can \f(CWctrl-v\fP it into your Firefox instance, etc. You can also paste material copied from other programs into vim with the typical vim bindings.
+Additionally, I've set vim to use the clipboard as the default buffer, which means when you copy or delete something in vim, it will be in your system clipboard as well, so you can \f(CWctrl-v\fP it into your browser instance, etc. You can also paste material copied from other programs into vim with the typical vim bindings.
.HEADING 2 "How do I change the background/wallpaper?"
.PP
The system will always read the file \f(CW~/.config/wall.png\fP as the wallpaper.
diff --git a/.tmux.conf b/.tmux.conf
index b43e0bff..06c509cb 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -37,6 +37,7 @@ bind-key -n C-left prev
bind-key -n C-right next
bind-key -n C-down next
set-window-option -g window-status-current-style bg=red
+bind C-c new-window
bind C-j previous-window
bind C-k next-window
#bind-key C-a last-window # C-a C-a for last active window
diff --git a/.xinitrc b/.xinitrc
index 0138c080..a4ab8776 100644
--- a/.xinitrc
+++ b/.xinitrc
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# xinitrc runs automatically when you run startx.
diff --git a/.xprofile b/.xprofile
index 97c13b18..05d922f9 100644
--- a/.xprofile
+++ b/.xprofile
@@ -1,4 +1,4 @@
-#!/usr/bin/env sh
+#!/bin/sh
# This file runs when a DM logs you into a graphical session.
# If you use startx/xinit like a Chad, this file will also be sourced.