diff --git a/.cache/bg b/.cache/bg new file mode 120000 index 00000000..787af6fd --- /dev/null +++ b/.cache/bg @@ -0,0 +1 @@ +../.config/wall.png \ No newline at end of file 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 6a78c257..cc435d5e 100755 --- a/.config/fontconfig/fonts.conf +++ b/.config/fontconfig/fonts.conf @@ -1,30 +1,37 @@ - - - serif - Linux Libertine - - - sans-serif - Linux Biolinum - - - sans - Linux Biolinum - - - monospace - Inconsolata - - - - - 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 8fd19cf2..a22fe8ec 100644 --- a/.config/i3/config +++ b/.config/i3/config @@ -4,15 +4,23 @@ # 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 FILE="ranger" # export TERMINAL="st" # #---Basic Definitions---# # -for_window [class="^.*"] border pixel 2 -gaps inner 15 -gaps outer 15 +set $inner_gaps 15 +set $outer_gaps 15 set $term --no-startup-id $TERMINAL set $mod Mod4 +set $stoprec --no-startup-id dmenurecord kill +set $shutdown sudo -A shutdown -h now +set $reboot sudo -A reboot +set $netrefresh --no-startup-id sudo -A systemctl restart NetworkManager +set $hibernate sudo -A systemctl suspend + +# #---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. @@ -35,39 +43,66 @@ bar { } # #---Basic Bindings---# # +bindsym $mod+Return exec $term +bindsym $mod+Shift+Return exec --no-startup-id samedir + bindsym $mod+Shift+space floating toggle bindsym $mod+space focus mode_toggle bindsym $mod+Escape workspace prev -bindsym $mod+Shift+Escape exec --no-startup-id prompt "Exit i3?" "i3-msg exit" +bindsym $mod+Shift+Escape exec --no-startup-id prompt "Exit i3?" "i3 exit" + +# bindsym $mod+BackSpace +bindsym $mod+Shift+BackSpace exec --no-startup-id prompt "Reboot computer?" "$reboot" + +bindsym $mod+grave exec --no-startup-id dmenuunicode +##bindsym $mod+asciitilde #STOP/HIDE EVERYTHING: -bindsym $mod+Shift+Delete exec --no-startup-id lmc truemute ; exec --no-startup-id lmc pause ; exec --no-startup-id pauseallmpv; workspace 0; exec $term -e htop ; exec $term -e $FILE +bindsym $mod+Shift+Delete exec --no-startup-id lmc mute ; exec --no-startup-id mpc pause && pkill -RTMIN+10 i3blocks ; exec --no-startup-id pauseallmpv; workspace 0; exec $term -e htop ; exec $term -e lf + +# Show selection: +bindsym $mod+Insert exec --no-startup-id showclip +##bindsym $mod+Pause # #---Letter Key Bindings---# # bindsym $mod+q [con_id="__focused__" instance="^(?!dropdown_).*$"] kill bindsym $mod+Shift+q [con_id="__focused__" instance="^(?!dropdown_).*$"] exec --no-startup-id kill -9 `xdotool getwindowfocus getwindowpid` +bindsym $mod+w exec --no-startup-id $BROWSER +bindsym $mod+Shift+w exec $term -e nmtui + +bindsym $mod+e exec $term -e neomutt && pkill -RTMIN+12 i3blocks +bindsym $mod+Shift+e exec --no-startup-id tutorialvids + +bindsym $mod+r exec $term -e lf bindsym $mod+Shift+r exec --no-startup-id winresize bindsym $mod+t split toggle -bindsym $mod+Shift+t gaps inner current set 15; gaps outer current set 15 +bindsym $mod+Shift+t gaps inner current set $inner_gaps; gaps outer current set $outer_gaps +bindsym $mod+y exec $term -e calcurse bindsym $mod+Shift+y exec --no-startup-id i3resize left bindsym $mod+u exec --no-startup-id ddspawn tmuxdd bindsym $mod+Shift+u exec --no-startup-id i3resize down +bindsym $mod+i exec $term -e htop bindsym $mod+Shift+i exec --no-startup-id i3resize up bindsym $mod+o sticky toggle bindsym $mod+Shift+o exec --no-startup-id i3resize right +bindsym $mod+p exec --no-startup-id mpc toggle +bindsym $mod+Shift+p exec --no-startup-id mpc pause + bindsym $mod+a exec --no-startup-id ddspawn dropdowncalc -f mono:pixelsize=24 +bindsym $mod+Shift+a exec $term -e alsamixer bindsym $mod+s gaps inner current plus 5 bindsym $mod+Shift+s gaps inner current minus 5 +bindsym $mod+d exec --no-startup-id dmenu_run bindsym $mod+Shift+d gaps inner current set 0; gaps outer current set 0 set $freeze Distraction-free mode (super+shift+f to reactivate bindings) @@ -78,6 +113,7 @@ bindsym $mod+f fullscreen toggle bindsym $mod+Shift+f mode "$freeze" ;; exec --no-startup-id notify-send "Distraction-free mode activated." "Press Super+Shift+f to return." bindsym $mod+g workspace prev +bindsym $mod+Shift+g exec --no-startup-id gimp; workspace $ws5 bindsym $mod+h focus left bindsym $mod+Shift+h move left 30 @@ -98,11 +134,24 @@ bindsym $mod+Ctrl+l move workspace to output right bindsym $mod+z gaps outer current plus 5 bindsym $mod+Shift+z gaps outer current minus 5 +bindsym $mod+x exec --no-startup-id mpc pause; exec --no-startup-id pauseallmpv ; exec --no-startup-id i3lock -e -f -c 1d2021 ; exec --no-startup-id xset dpms force off +bindsym $mod+Shift+x exec --no-startup-id prompt "Shutdown computer?" "$shutdown" + +bindsym $mod+c exec --no-startup-id cabl +bindsym $mod+Shift+c exec --no-startup-id camtoggle + +bindsym $mod+v exec --no-startup-id $term -e $EDITOR -c "VimwikiIndex" +#bindsym $mod+Shift+v + bindsym $mod+b bar mode toggle bindsym $mod+Shift+b floating toggle; sticky toggle; exec --no-startup-id hover left +bindsym $mod+n exec $term -e newsboat && pkill -RTMIN+6 i3blocks bindsym $mod+Shift+n floating toggle; sticky toggle; exec --no-startup-id hover right +bindsym $mod+m exec --no-startup-id $term -e ncmpcpp +bindsym $mod+Shift+m exec --no-startup-id lmc toggle + # #---Workspace Bindings---# # bindsym $mod+Home workspace $ws1 bindsym $mod+Shift+Home move container to workspace $ws1 @@ -173,18 +222,138 @@ for_window [title="mpvfloat"] border pixel 0 no_focus [title="mpvfloat"] # #---Function Buttons---# # +bindsym $mod+F1 exec --no-startup-id groff -mom ~/.local/share/larbs/readme.mom -Tpdf | zathura - bindsym $mod+F2 restart +bindsym $mod+F3 exec --no-startup-id displayselect +bindsym $mod+F4 exec --no-startup-id prompt "Hibernate computer?" "$hibernate" +bindsym $mod+F5 exec --no-startup-id $netrefresh +bindsym $mod+F6 exec --no-startup-id torwrap +bindsym $mod+F7 exec --no-startup-id td-toggle +bindsym $mod+F8 exec --no-startup-id mailsync +bindsym $mod+F9 exec --no-startup-id dmenumount +bindsym $mod+F10 exec --no-startup-id dmenuumount +bindsym $mod+F11 exec --no-startup-id ducksearch +bindsym $mod+F12 exec $term -e nmtui +bindsym $mod+Shift+F1 exec --no-startup-id toggle-welcome # #---Arrow Keys---# # bindsym $mod+Left focus left +bindsym $mod+Shift+Left move left bindsym $mod+Ctrl+Left move workspace to output left bindsym $mod+Down focus down +bindsym $mod+Shift+Down move down bindsym $mod+Ctrl+Down move workspace to output down bindsym $mod+Up focus up +bindsym $mod+Shift+Up move up bindsym $mod+Ctrl+Up move workspace to output up bindsym $mod+Right focus right -bindsym $mod+Ctrl+Right move workspace to output right -bindsym $mod+Shift+Left move left -bindsym $mod+Shift+Down move down -bindsym $mod+Shift+Up move up bindsym $mod+Shift+Right move right +bindsym $mod+Ctrl+Right move workspace to output right + +# #---Media Keys---# # +# Volume keys +bindsym $mod+plus exec --no-startup-id lmc up +bindsym $mod+Shift+plus exec --no-startup-id lmc up 15 +bindsym $mod+minus exec --no-startup-id lmc down +bindsym $mod+Shift+minus exec --no-startup-id lmc down 15 +bindsym $mod+less exec --no-startup-id mpc prev +bindsym $mod+Shift+less exec --no-startup-id mpc seek 0% +bindsym $mod+greater exec --no-startup-id mpc next +bindsym $mod+Shift+greater exec --no-startup-id mpc next + +# For advancing forward/backward in an mpd song +bindsym $mod+bracketleft exec --no-startup-id mpc seek -10 +bindsym $mod+Shift+bracketleft exec --no-startup-id mpc seek -120 +bindsym $mod+bracketright exec --no-startup-id mpc seek +10 +bindsym $mod+Shift+bracketright exec --no-startup-id mpc seek +120 + +# For screenshots and recording +bindsym Print exec --no-startup-id maim pic-full-"$(date '+%y%m%d-%H%M-%S').png" +bindsym Shift+Print exec --no-startup-id maimpick +bindsym $mod+Print exec --no-startup-id dmenurecord +bindsym $mod+Scroll_Lock exec --no-startup-id "killall screenkey || screenkey" +bindsym $mod+Delete exec $stoprec +bindsym XF86Launch1 exec --no-startup-id xset dpms force off + +# #---Extra XF86 Keys---# # +bindsym XF86AudioMute exec --no-startup-id lmc toggle +bindsym XF86AudioLowerVolume exec --no-startup-id lmc down +bindsym Shift+XF86AudioLowerVolume exec --no-startup-id lmc down 10 +bindsym Control+XF86AudioLowerVolume exec --no-startup-id lmc down 1 +bindsym XF86AudioRaiseVolume exec --no-startup-id lmc up +bindsym Shift+XF86AudioRaiseVolume exec --no-startup-id lmc up 10 +bindsym Control+XF86AudioRaiseVolume exec --no-startup-id lmc up 1 +bindsym XF86PowerOff exec --no-startup-id prompt "Shutdown computer?" "$shutdown" +##bindsym XF86Copy exec +##bindsym XF86Open exec +##bindsym XF86Paste exec +##bindsym XF86Cut exec +##bindsym XF86MenuKB exec +bindsym XF86Calculator exec --no-startup-id ddspawn dropdowncalc -f mono:pixelsize=24 +##bindsym XF86Sleep This binding is typically mapped by systemd automatically. +##bindsym XF86WakeUp exec +bindsym XF86Explorer exec $term -e lf +##bindsym XF86Send exec +##bindsym XF86Xfer exec +bindsym XF86WWW exec --no-startup-id $BROWSER +##bindsym XF86DOS exec +bindsym XF86ScreenSaver exec exec --no-startup-id lockscreen +##bindsym XF86RotateWindows exec +##bindsym XF86TaskPane exec +##bindsym XF86Favorites exec +bindsym XF86MyComputer exec $term -e lf +##bindsym XF86Back exec +##bindsym XF86Forward exec +bindsym XF86Eject exec --no-startup-id dmenuumount +bindsym XF86AudioNext exec --no-startup-id mpc next +bindsym XF86AudioPlay exec --no-startup-id mpc toggle +bindsym XF86AudioPrev exec --no-startup-id mpc prev +bindsym XF86AudioStop exec --no-startup-id mpc toggle +##bindsym XF86AudioRecord +bindsym XF86AudioRewind exec --no-startup-id mpc seek -10 +bindsym XF86AudioForward exec --no-startup-id mpc seek +10 +##bindsym XF86Phone exec +##bindsym XF86Tools exec +bindsym XF86HomePage exec $BROWSER https://lukesmith.xyz +bindsym XF86Reload restart +##bindsym XF86ScrollUp exec +##bindsym XF86ScrollDown exec +##bindsym XF86New exec +##bindsym XF86LaunchA exec +##bindsym XF86LaunchB exec +##bindsym XF86Launch2 exec +##bindsym XF86Launch3 exec +##bindsym XF86Launch4 exec +##bindsym XF86Launch5 exec +##bindsym XF86Launch6 exec +##bindsym XF86Launch7 exec +##bindsym XF86Launch8 exec +##bindsym XF86Launch9 exec +#bindsym XF86AudioMicMute exec $micmute +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 && pkill -RTMIN+12 i3blocks +bindsym XF86Messenger exec $term -e weechat +bindsym XF86Search exec $BROWSER https://duckduckgo.com +##bindsym XF86Go exec +##bindsym XF86Finance exec +##bindsym XF86Game exec +bindsym XF86Shop exec $BROWSER https://ebay.com +bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 15 +bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 15 +bindsym XF86AudioMedia exec --no-startup-id $term -e ncmpcpp +bindsym XF86Display exec --no-startup-id displayselect +#bindsym XF86KbdLightOnOff exec +#bindsym XF86KbdBrightnessDown exec +#bindsym XF86KbdBrightnessUp exec +##bindsym XF86Reply exec +##bindsym XF86MailForward exec +##bindsym XF86Save exec +bindsym XF86Documents exec $term -e lf ~/Documents +##bindsym XF86Battery exec +##bindsym XF86Bluetooth exec +bindsym XF86WLAN exec $netrefresh diff --git a/.config/i3blocks/config b/.config/i3blocks/config index 393ea862..457a9a2a 100644 --- a/.config/i3blocks/config +++ b/.config/i3blocks/config @@ -13,7 +13,6 @@ interval=once signal=11 [news] -label=📰 interval=once signal=6 @@ -21,7 +20,6 @@ signal=6 #interval=30 [pacpackages] -label=📦 interval=once signal=8 @@ -34,17 +32,14 @@ interval=18000 signal=5 [mailbox] -label=📬 interval=180 signal=12 #[memory] #interval=30 -#label=🧠 #[cpu] #interval=15 -#label=💻 [volume] interval=once @@ -56,7 +51,7 @@ signal=10 #[disk] #interval=60 -#command=disk /home 🏠 +#command=disk /home [battery] command=battery BAT0 diff --git a/.config/lf/lfrc b/.config/lf/lfrc index 18a7e53a..27900a1d 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 63ff1eec..30988ccf 100644 --- a/.config/mimeapps.list +++ b/.config/mimeapps.list @@ -1,12 +1,19 @@ [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 diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index 2bdca65c..d8b0ba20 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -64,6 +64,9 @@ set clipboard+=unnamedplus map k map l +" Replace ex mode with gq + map Q gq + " Check file in shellcheck: map s :!clear && shellcheck % diff --git a/.config/sxhkd/sxhkdrc b/.config/sxhkd/sxhkdrc index bb652591..0b05a3df 100644 --- a/.config/sxhkd/sxhkdrc +++ b/.config/sxhkd/sxhkdrc @@ -10,10 +10,6 @@ # Basic binds super + Return $TERMINAL -super + shift + Return - samedir -super + shift + q - kill -9 `xdotool getwindowfocus getwindowpid` super + d dmenu_run super + r @@ -25,7 +21,7 @@ super + m super + n $TERMINAL -e newsboat super + c - $TERMINAL -e calcurse -D ~/.config/calcurse + $TERMINAL -e calcurse super + v $TERMINAL -e nvim -c VimwikiIndex super + shift + a @@ -96,7 +92,7 @@ super + {_,shift +} bracketright super + {_,shift +} bracketleft mpc seek -{10,120} # Increase volume -super {_,shift +} + plus +super + {equal,plus} amixer sset Master {5,15}%+; pkill -RTMIN+10 $STATUSBAR # Decrease volume super {_,shift +} + minus @@ -165,3 +161,110 @@ super + F8 # Mount a USB drive or Android device super + {F9,F10} {dmenumount,dmenuumount} + + + +# close and kill +super + {_,shift + }q + bspc node -{c,k} + +# alternate between the tiled and monocle layout +super + {_,shift + }f + bspc {desktop -l next,node -t ~fullscreen} + +# rotate current node 90 degrees +super + y + bspc node @focused:/ -R 90 + +# swap the current node and the biggest local node +super + space + bspc node -s biggest.local || bspc node -s next.local + +# +# state/flags +# + +# set the window state +#super + {t,shift + t,s} +#bspc node -t {tiled,pseudo_tiled,floating} + +super + shift + space + bspc node focused -t \~floating + +# focus/swap + +# focus the node in the given direction +super + {_,shift + }{h,j,k,l} + bspc node -{f,s} {west,south,north,east} + +# focus the node for the given path jump +super + {p,b,comma,period} + bspc node -f @{parent,brother,first,second} + +super + {g,semicolon} + bspc desktop {prev,next}.occupied --focus +super + {Prior,Next} + bspc desktop {prev,next}.occupied --focus +super + {Tab,backslash} + bspc desktop last --focus + +# focus or swap the next node +super + {_,shift + }c + bspc node -{f,s} next.local + +# focus the older or newer node in the focus history + +# focus or send to the given desktop +super + {_,shift + }{1-9,0} + bspc {desktop -f,node -d} ^{1-9,10} + +# preselect the direction +#super + {u,o} +#bspc node -p {south,east} + +# preselect the ratio +super + ctrl + {1-9} + bspc node -o 0.{1-9} + +# cancel the preselection for the focused node +super + ctrl + space + bspc node -p cancel + +# cancel the preselection for the focused desktop +#super + space +#bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel + +# expand a window by moving one of its side outward +super + shift + {y,u,i,o} + bspc node -z {right -20 0,bottom 0 20,bottom 0 -20,right 20 0} + +# contract a window by moving one of its side inward + +# move a floating window +super + {Left,Down,Up,Right} + bspc node -v {-20 0,0 20,0 -20,20 0} + +# Toggle gaps +super + shift + d + bspc config window_gap {0,15} +# Increase/descrease gap size +super { ,+ shift }+ z + bspc config window_gap $(($(bspc config window_gap) {+,-} 3)) + +super + u + cat /tmp/dropdown | xargs -I win bspc node win --flag hidden;bspc node -f win + +# Make a windoww sticky/non-sticky +super + o + bspc node -g sticky={on,off} + +# remove and restore polybar +#super + b +#\{ pgrep polybar && \{ killall polybar ; bspc config top_padding 0 \} \} || \{ launch_polybar ; bspc config top_padding 24 \} + +super + {i,o} + bspc node -f {prev,next}.local +super + shift + n + bspc node focused -t \~floating ; hover right +super + shift + b + bspc node focused -t \~floating ; hover left diff --git a/.config/user-dirs.dirs b/.config/user-dirs.dirs index 5a28707c..f25c63a2 100644 --- a/.config/user-dirs.dirs +++ b/.config/user-dirs.dirs @@ -1 +1,3 @@ XDG_DESKTOP_DIR="$HOME/" +XDG_CONFIG_HOME="$HOME/.config" +XDG_DATA_HOME="$HOME/.local/share" diff --git a/.config/vifm/vifmrc b/.config/vifm/vifmrc index d646f860..b327786c 100644 --- a/.config/vifm/vifmrc +++ b/.config/vifm/vifmrc @@ -55,18 +55,21 @@ filetype *.csv,*.xlsx sc-im %c fileviewer *.csv sed "s/,,,,/,,-,,/g;s/,,/ /g" %c | column -t | sed "s/ - / /g" | cut -c -%pw filetype *.wav,*.mp3,*.flac,*.m4a,*.wma,*.ape,*.ac3,*.og[agx],*.spx,*.opus mpv --no-audio-display --input-ipc-server=/tmp/mpvsoc$(date +%%s) %c -filextype *.pdf,*.ps,*.eps,*.ps.gz,*.djvu,*.epub zathura %f 2>/dev/null &, +filextype *.pdf,*.ps,*.eps,*.ps.gz,*.djvu,*.epub,*.cbz,*.cbr,*.cb7 zathura %f 2>/dev/null &, fileviewer *.pdf pdftotext -l 1 -nopgbrk %c - fileviewer *.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob,*.fl[icv],*.m2v,*.mov,*.webm,*.ts,*.mts,*.m4v,*.qt,*.divx,*.as[fx],*mp3,*.flac file filextype *.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob,*.fl[icv],*.m2v,*.mov,*.webm,*.ts,*.mts,*.m4v,*.r[am],*.qt,*.divx,*.as[fx] mpv --input-ipc-server=/tmp/mpvsoc$(date +%%s) %f 2>/dev/null &, -fileview *.zip,*.rar,*.tar.gz atool -l %f -filetype *.zip,*.rar,*.tar.gz ext %f +fileview *.tar.gz atool -l --format=tar %f 2>/dev/null | awk '{$1=$2=$3=$4=$5=""; print $0}' +fileview *.zip,*.cbz atool -l --format=zip %f 2>/dev/null | tail +4 | awk '{$1=$2=$3=""; print $0}' +fileview *.rar,*.cbr atool -l --format=rar %f 2>/dev/null | tail +9 | awk '{$1=$2=$3=$4=""; print $0}' +fileview *.7z,*.cb7 atool -l --format=7z %f 2>/dev/null | tail +20 | awk '{$1=$2=$3=$4=$5=""; print $0}' +filetype *.zip,*.7z,*.rar,*.tar.gz,*.tar.xz ext %f fileviewer *.[1-8] man ./%c | col -b filetype *.[1-8] man ./%c -fileviewer *.jpg,*.jpeg,*.png,*.ico vifmimg draw %px %py %pw %ph %c %pc vifmimg clear +fileviewer *.jpg,*.jpeg,*.png,*.ico,*.gif vifmimg draw %px %py %pw %ph %c %pc vifmimg clear filextype *.bmp,*.jpg,*.jpeg,*.png,*.ico,*.gif,*.xpm rotdir %f 2>/dev/null | sxiv -ia 2>/dev/null & filextype *.svg inkscape %f 2>/dev/null & diff --git a/.config/wal/postrun b/.config/wal/postrun new file mode 100755 index 00000000..ae28d832 --- /dev/null +++ b/.config/wal/postrun @@ -0,0 +1,29 @@ +#!/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" + +xsetroot -name "fsignal:xrdb" +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/.config/wget/wgetrc b/.config/wget/wgetrc new file mode 100644 index 00000000..4fd7999f --- /dev/null +++ b/.config/wget/wgetrc @@ -0,0 +1 @@ +hsts-file=~/.cache/wget-hsts diff --git a/.local/bin/compiler b/.local/bin/compiler index 4b5432f1..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. @@ -26,7 +26,7 @@ case "$file" in *\.ms) refer -PS -e "$file" | groff -me -ms -kept -T pdf > "$base".pdf ;; *\.mom) refer -PS -e "$file" | groff -mom -kept -T pdf > "$base".pdf ;; *\.[0-9]) refer -PS -e "$file" | groff -mandoc -T pdf > "$base".pdf ;; - *\.rmd) echo "require(rmarkdown); rmarkdown::render('$file', quiet=TRUE)" | R -q --vanilla ;; + *\.[rR]md) Rscript -e "require(rmarkdown); rmarkdown::render('$file', quiet=TRUE)" ;; *\.tex) textype "$file" ;; *\.md) pandoc "$file" --pdf-engine=xelatex -o "$base".pdf ;; *config.h) sudo make install ;; 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 67844024..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 @@ -31,6 +31,8 @@ mountusb() { \ mountandroid() { \ chosen=$(echo "$anddrives" | dmenu -i -p "Which Android device?" | cut -d : -f 1) getmount "$HOME -maxdepth 3 -type d" + simple-mtpfs --device "$chosen" "$mp" + echo "OK" | dmenu -i -p "Tap Allow on your phone if it asks for permission and then press enter" simple-mtpfs --device "$chosen" "$mp" notify-send "🤖 Android Mounting" "Android device mounted to $mp." } 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 51c8e913..291d1834 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..6d64b649 --- /dev/null +++ b/.local/bin/lmc @@ -0,0 +1,30 @@ +#!/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" ;} + control() { pulsemixer ;} +else + toggle() { amixer sset Master toggle ;} + mute() { amixer sset Master mute ;} + up() { amixer sset Master "$NUM"%+ ;} + down() { amixer sset Master "$NUM"%- ;} + control() { alsamixer ;} +fi + +case "$1" in + toggle) toggle ;; + mute) mute ;; + up) up ;; + down) down ;; + control) control ;; +esac + +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 d5d8dffb..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|*.rmd|*.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 5fdf5662..7b07e23e 100755 --- a/.local/bin/setbg +++ b/.local/bin/setbg @@ -1,9 +1,19 @@ -#!/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. +# This script does the following: +# Run by itself, set the wallpaper (at X start). +# If given a file, set that as the new wallpaper. +# If given a directory, choose random file in it. +# If wal is installed, also generate a colorscheme. -[ ! -z "$1" ] && cp "$1" ~/.config/wall.png && notify-send -i "$HOME/.config/wall.png" "Wallpaper changed." -xwallpaper --zoom ~/.config/wall.png +# Location of link to wallpaper link. +bgloc="${XDG_CACHE_HOME:-$HOME/.cache/}/bg" + +[ -f "$1" ] && ln -sf "$(readlink -f "$1")" "$bgloc" && notify-send -i "$bgloc" "Changing wallpaper..." + +[ -d "$1" ] && ln -sf "$(find "$(readlink -f "$1")" -iregex '.*.\(jpg\|jpeg\|png\|gif\)' -type f | shuf -n 1)" "$bgloc" && notify-send -i "$bgloc" "Random Wallpaper chosen." + +# If pywal is installed, use it. +wal -s -i "$(readlink -f "$bgloc")" -o "${XDG_CONFIG_HOME:-$HOME/.config}/wal/postrun" >/dev/null 2>&1 + +xwallpaper --zoom "$bgloc" diff --git a/.local/bin/shortcuts b/.local/bin/shortcuts index 5d39b47d..55ce30ae 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" ranger_shortcuts="$HOME/.config/ranger/shortcuts.conf" 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/battery b/.local/bin/statusbar/battery index 677ecb49..395ad8d2 100755 --- a/.local/bin/statusbar/battery +++ b/.local/bin/statusbar/battery @@ -1,5 +1,7 @@ -#!/usr/bin/env sh -# Give a battery name (e.g. BAT0) as an argument. +#!/bin/sh + +# Prints all batteries, their percentage remaining and an emoji corresponding +# to charge status (🔌 for plugged up, 🔋 for discharging on battery, etc.). case $BLOCK_BUTTON in 3) pgrep -x dunst >/dev/null && notify-send "🔋 Battery module" "🔋: discharging @@ -7,26 +9,19 @@ case $BLOCK_BUTTON in ♻: stagnant charge 🔌: charging ⚡: charged -❗: battery very low! -- Text color reflects charge left" ;; +❗: battery very low!" ;; esac -capacity=$(cat /sys/class/power_supply/"$1"/capacity) || exit -status=$(cat /sys/class/power_supply/"$1"/status) +# Loop through all attached batteries. +for battery in /sys/class/power_supply/BAT? +do + # Get its remaining capacity and charge status. + capacity=$(cat "$battery"/capacity) || break + status=$(sed "s/Discharging/🔋/;s/Not charging/🛑/;s/Charging/🔌/;s/Unknown/♻️/;s/Full/⚡/" "$battery"/status) -if [ "$capacity" -ge 75 ]; then - color="#00ff00" -elif [ "$capacity" -ge 50 ]; then - color="#ffffff" -elif [ "$capacity" -ge 25 ]; then - color="#ffff00" -else - color="#ff0000" - warn="❗" -fi + # If it is discharging and 25% or less, we will add a ❗ as a warning. + [ "$capacity" -le 25 ] && [ "$status" = "🔋" ] && warn="❗" -[ -z $warn ] && warn=" " - -[ "$status" = "Charging" ] && color="#ffffff" - -printf "%s%s%s\n" "$color" "$(echo "$status" | sed -e "s/,//;s/Discharging/🔋/;s/Not charging/🛑/;s/Charging/🔌/;s/Unknown/♻️/;s/Full/⚡/;s/ 0*/ /g;s/ :/ /g")" "$warn" "$(echo "$capacity" | sed -e 's/$/%/')" + printf "%s%s%s%%\n" "$status" "$warn" "$capacity" + unset warn +done diff --git a/.local/bin/statusbar/clock b/.local/bin/statusbar/clock index 8b418ebc..d17f3c63 100755 --- a/.local/bin/statusbar/clock +++ b/.local/bin/statusbar/clock @@ -1,9 +1,9 @@ -#!/usr/bin/env sh +#!/bin/sh date '+%Y %b %d (%a) %I:%M%p' case $BLOCK_BUTTON in - 1) pgrep -x dunst >/dev/null && notify-send "This Month" "$(cal --color=always | sed "s/..7m//;s/..27m/<\/span><\/b>/")" && notify-send "Appointments" "$(calcurse -D ~/.config/calcurse -d3)" ;; + 1) pgrep -x dunst >/dev/null && notify-send "This Month" "$(cal --color=always | sed "s/..7m//;s/..27m/<\/span><\/b>/")" && notify-send "Appointments" "$(calcurse -d3)" ;; 2) $TERMINAL -e calcurse -D ~/.config/calcurse ;; 3) pgrep -x dunst >/dev/null && notify-send "📅 Time/date module" "\- Left click to show upcoming appointments for the next three days via \`calcurse -d3\` and show the month via \`cal\` - Middle click opens calcurse if installed" ;; diff --git a/.local/bin/statusbar/cpu b/.local/bin/statusbar/cpu index 08078ba9..5b5528e6 100755 --- a/.local/bin/statusbar/cpu +++ b/.local/bin/statusbar/cpu @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/bin/sh case $BLOCK_BUTTON in 1) notify-send "🖥 CPU hogs" "$(ps axch -o cmd:15,%cpu --sort=-%cpu | head)" ;; @@ -7,4 +7,4 @@ case $BLOCK_BUTTON in - % is of single core." ;; esac -sensors | awk '/Core 0/ {print $3}' +sensors | awk '/Core 0/ {print "🌡", $3}' diff --git a/.local/bin/statusbar/disk b/.local/bin/statusbar/disk index d9dedf3f..269eba7e 100755 --- a/.local/bin/statusbar/disk +++ b/.local/bin/statusbar/disk @@ -1,18 +1,22 @@ -#!/usr/bin/env sh +#!/bin/sh # Status bar module for disk space -# $1 should be drive mountpoint -# $2 is optional icon, otherwise mountpoint will displayed +# $1 should be drive mountpoint, otherwise assumed /. -[ -z "$1" ] && exit +location=${1:-/} -icon="$2" -[ -z "$2" ] && icon="$1" +[ -d "$location" ] || exit case $BLOCK_BUTTON in - 1) pgrep -x dunst >/dev/null && notify-send "💽 Disk space" "$(df -h --output=target,used,size)" ;; - 3) pgrep -x dunst >/dev/null && notify-send "💽 Disk module" "\- Shows used hard drive space. + 1) notify-send "💽 Disk space" "$(df -h --output=target,used,size)" ;; + 3) notify-send "💽 Disk module" "\- Shows used hard drive space. - Click to show all disk info." ;; esac -printf "%s: %s\n" "$icon" "$(df -h "$1" | awk ' /[0-9]/ {print $3 "/" $2}')" +case "$location" in + "/home"* ) icon="🏠" ;; + "/mnt"* ) icon="💾" ;; + *) icon="🖥 ";; +esac + +printf "%s: %s\n" "$icon" "$(df -h "$location" | awk ' /[0-9]/ {print $3 "/" $2}')" diff --git a/.local/bin/statusbar/help b/.local/bin/statusbar/help index 9b88e656..d7345dc9 100755 --- a/.local/bin/statusbar/help +++ b/.local/bin/statusbar/help @@ -1,4 +1,5 @@ -#!/usr/bin/env sh +#!/bin/sh + case $BLOCK_BUTTON in 1) groff -mom ~/.local/share/larbs/readme.mom -Tpdf | zathura - ;; 2) i3 restart ;; diff --git a/.local/bin/statusbar/internet b/.local/bin/statusbar/internet index 86746589..8063e193 100755 --- a/.local/bin/statusbar/internet +++ b/.local/bin/statusbar/internet @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/bin/sh case $BLOCK_BUTTON in 1) $TERMINAL -e nmtui ;; @@ -10,8 +10,7 @@ case $BLOCK_BUTTON in " ;; esac -[ "$(cat /sys/class/net/w*/operstate)" = 'down' ] && wifiicon="📡" +[ "$(cat /sys/class/net/w*/operstate)" = 'down' ] && wifiicon="📡" || + wifiicon=$(grep "^\s*w" /proc/net/wireless | awk '{ print "📶", int($3 * 100 / 70) "%" }') -[ ! -n "${wifiicon+var}" ] && wifiicon=$(grep "^\s*w" /proc/net/wireless | awk '{ print "📶", int($3 * 100 / 70) "%" }') - -printf "%s %s\n" "$wifiicon" "$(cat /sys/class/net/e*/operstate | sed "s/down/❎/;s/up/🌐/")" +printf "%s %s\n" "$wifiicon" "$(sed "s/down/❎/;s/up/🌐/" /sys/class/net/e*/operstate)" diff --git a/.local/bin/statusbar/iplocate b/.local/bin/statusbar/iplocate index 5362330e..4ca4f107 100755 --- a/.local/bin/statusbar/iplocate +++ b/.local/bin/statusbar/iplocate @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/bin/sh # Gets your public ip address checks which country you are in and # displays that information in the statusbar diff --git a/.local/bin/statusbar/mailbox b/.local/bin/statusbar/mailbox index f9d3bd80..3ace5f5b 100755 --- a/.local/bin/statusbar/mailbox +++ b/.local/bin/statusbar/mailbox @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/bin/sh # i3blocks mail module. # Displays number of unread mail and an loading icon if updating. @@ -13,4 +13,8 @@ case $BLOCK_BUTTON in - Middle click syncs mail" ;; esac -echo "$(du -a ~/.local/share/mail/*/INBOX/new/* 2>/dev/null | sed -n '$=')$(cat /tmp/imapsyncicon_$USER 2>/dev/null)" +unread="$(find ~/.local/share/mail/*/INBOX/new/* -type f | wc -l 2>/dev/null)" + +icon="$(cat "/tmp/imapsyncicon_$USER")" + +[ "$unread" = "0" ] && [ "$icon" = "" ] || echo "📬 $unread$(cat "/tmp/imapsyncicon_$USER" 2>/dev/null)" diff --git a/.local/bin/statusbar/memory b/.local/bin/statusbar/memory index c1282613..25a29585 100755 --- a/.local/bin/statusbar/memory +++ b/.local/bin/statusbar/memory @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/bin/sh case $BLOCK_BUTTON in 1) notify-send "🧠 Memory hogs" "$(ps axch -o cmd:15,%mem --sort=-%mem | head)" ;; @@ -6,4 +6,4 @@ case $BLOCK_BUTTON in - Click to show memory hogs." ;; esac -free -h | awk '/^Mem:/ {print $3 "/" $2}' +free -h | sed -n '2{p;q}' | awk '{print "🧠", $3 "/" $2}' diff --git a/.local/bin/statusbar/moonphase b/.local/bin/statusbar/moonphase new file mode 100755 index 00000000..09af87ba --- /dev/null +++ b/.local/bin/statusbar/moonphase @@ -0,0 +1,23 @@ +#!/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:]]*%' | 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 + +case $BLOCK_BUTTON in + 1) $mnphs ;; + 2) $mnphs ;; + 3) pgrep -x dunst >/dev/null && notify-send " 🌜$(pom)" ;; +esac + +echo "$icon" "$prcnt"% diff --git a/.local/bin/statusbar/music b/.local/bin/statusbar/music index 663fe0f7..fadc15e5 100755 --- a/.local/bin/statusbar/music +++ b/.local/bin/statusbar/music @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/bin/sh filter() { sed "/^volume:/d" | tac | sed -e "s/\\&/&/g;s/\\[paused\\].*//g;s/\\[playing\\].*//g" | tr -d '\n' | sed -e "s/$/<\\/span>\n/g" diff --git a/.local/bin/statusbar/news b/.local/bin/statusbar/news index 9a0c1da3..a8842ad8 100755 --- a/.local/bin/statusbar/news +++ b/.local/bin/statusbar/news @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/bin/sh # i3blocks newsboat module. # Displays number of unread news items and an loading icon if updating. @@ -14,4 +14,4 @@ case $BLOCK_BUTTON in Note: Only one instance of newsboat (including updates) may be running at a time." ;; esac - cat /tmp/newsupdate 2>/dev/null || echo "$(newsboat -x print-unread | awk '{ print $1}' | sed s/^0$//g)$(cat ~/.config/newsboat/.update 2>/dev/null)" + cat /tmp/newsupdate 2>/dev/null || echo "$(newsboat -x print-unread | awk '{ print "📰 " $1}' | sed s/^0$//g)$(cat ~/.config/newsboat/.update 2>/dev/null)" diff --git a/.local/bin/statusbar/pacpackages b/.local/bin/statusbar/pacpackages index e4cd4791..4273c868 100755 --- a/.local/bin/statusbar/pacpackages +++ b/.local/bin/statusbar/pacpackages @@ -1,10 +1,21 @@ -#!/usr/bin/env sh +#!/bin/sh -# i3blocks module for pacman upgrades. # Displays number of upgradeable packages. # For this to work, have a `pacman -Sy` command run in the background as a # cronjob every so often as root. This script will then read those packages. # When clicked, it will run an upgrade via pacman. +# +# Add the following text as a file in /usr/share/libalpm/hooks/statusbar.hook: +# +# [Trigger] +# Operation = Upgrade +# Type = Package +# Target = * +# +# [Action] +# Description = Updating statusbar... +# When = PostTransaction +# Exec = /usr/bin/pkill -RTMIN+8 dwmblocks case $BLOCK_BUTTON in 1) $TERMINAL -e popupgrade ;; @@ -14,5 +25,4 @@ case $BLOCK_BUTTON in - Middle click to show upgradable packages" ;; esac - -pacman -Qu | grep -v "\[ignored\]" | wc -l | sed -e "s/^0$//g" +pacman -Qu | grep -v "\[ignored\]" | wc -l | sed "s/^/📦/;s/^📦0$//g" diff --git a/.local/bin/statusbar/popupgrade b/.local/bin/statusbar/popupgrade index 099b259b..ba6678c3 100755 --- a/.local/bin/statusbar/popupgrade +++ b/.local/bin/statusbar/popupgrade @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/bin/sh printf "Beginning upgrade.\\n" diff --git a/.local/bin/statusbar/statusbarinfo b/.local/bin/statusbar/statusbarinfo new file mode 100755 index 00000000..ae799e99 --- /dev/null +++ b/.local/bin/statusbar/statusbarinfo @@ -0,0 +1,33 @@ +#!/bin/sh + +echo " + ____ _ _ _ +/ ___|| |_ __ _| |_ _ _ ___| |__ __ _ _ __ +\___ \| __/ _\` | __| | | / __| '_ \ / _\` | '__| + ___) | || (_| | |_| |_| \__ \ |_) | (_| | | +|____/ \__\__,_|\__|\__,_|___/_.__/ \__,_|_| + +This is a list of the statusbar modules. + +📦5 pacpackages: updatable packages (must have pacman -Sy run in root cronjob to check). +📰 41 news: unread RSS entries in newsboat. +☔ 83% ❄️ 69° 🌞 80° weather: ☔ for precipitation, 🌞 and ❄ for daily high and low. +📬 20 mailbox: number of unread mail if mutt-wizard is active. +🔉 62% volume: master sink volume. +🔌83% battery: 🔌 for charging, 🔋 for discharging, ⚡ for full. +📶 80% ❎ internet: 📶 for wifi with % (📡 if none), 🌐 for ethernet. (❎ if none). + +Obviously the time and date are displayed as well. + +Optional script modules: + +Edit ~/.local/src/dwmblocks/config.h to add these or your own if you'd like (and recompile and restart dwmblocks). + +'memory' 🧠 559Mi/3.7Gi Current used memory/total memory. +'cpu' 🌡 +46.0°C CPU temperature. +'disk' 🖥 : 28G/30G Remaining disk space... +'disk ~' 🏠: 641G/850G ...can be given directory argument. +'moonphase' 🌕 39% Phase of the moon (requires \`pom-perl\`). +'iplocate' 🇺🇸 United States Your own or VPN location (requires \`geoiplookup\`). + +" | less diff --git a/.local/bin/statusbar/torrent b/.local/bin/statusbar/torrent index c1387d12..4b559b89 100755 --- a/.local/bin/statusbar/torrent +++ b/.local/bin/statusbar/torrent @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/bin/sh transmission-remote -l | grep % | sed " # This first sed command is to ensure a desirable order with sort @@ -14,7 +14,7 @@ transmission-remote -l | grep % | s/L/🔼/g; s/M/🔽/g; s/N/✅/g; - s/Z/🌱/g" | awk '{print $2, $1}' | sed -e "s/ $//g" + s/Z/🌱/g" | awk '{print $2, $1}' | sed -e "s/ $//g" | tr '\n' ' ' case $BLOCK_BUTTON in 1) $TERMINAL -e transmission-remote-cli ;; @@ -25,4 +25,3 @@ case $BLOCK_BUTTON in ✅: done 🌱: done and seeding" ;; esac - diff --git a/.local/bin/statusbar/volume b/.local/bin/statusbar/volume index c3bf6d11..fd59a6f9 100755 --- a/.local/bin/statusbar/volume +++ b/.local/bin/statusbar/volume @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/bin/sh case $BLOCK_BUTTON in 1) setsid "$TERMINAL" -e alsamixer & ;; @@ -14,7 +14,7 @@ volstat="$(amixer get Master)" echo "$volstat" | grep "\[off\]" >/dev/null && printf "🔇\\n" && exit -vol=$(echo "$volstat" | grep -o "\[[0-9]\+%\]" | sed 's/[^0-9]*//g') +vol=$(echo "$volstat" | grep -o "\[[0-9]\+%\]" | sed "s/[^0-9]*//g;1q") if [ "$vol" -gt "70" ]; then icon="🔊" diff --git a/.local/bin/statusbar/weather b/.local/bin/statusbar/weather index 4241a510..285ac917 100755 --- a/.local/bin/statusbar/weather +++ b/.local/bin/statusbar/weather @@ -1,14 +1,13 @@ -#!/usr/bin/env sh -location="$1"; [ -z "$location" ] || { location="$location+" && rm -f "$HOME/.local/share/weatherreport" ;} +#!/bin/sh getforecast() { ping -q -c 1 1.1.1.1 >/dev/null || exit 1 -curl -s "wttr.in/$location" > "$HOME/.local/share/weatherreport" || exit 1 ;} +curl -sf "wttr.in/$LOCATION" > "$HOME/.local/share/weatherreport" || exit 1 ;} showweather() { printf "%s" "$(sed '16q;d' "$HOME/.local/share/weatherreport" | grep -wo "[0-9]*%" | sort -n | sed -e '$!d' | sed -e "s/^/☔ /g" | tr -d '\n')" -sed '13q;d' "$HOME/.local/share/weatherreport" | grep -o "m\\(-\\)*[0-9]\\+" | sort -n -t 'm' -k 2n | sed -e 1b -e '$!d' | tr '\n|m' ' ' | awk '{print " ❄️",$1 "°","🌞",$2 "°"}' ;} +sed '13q;d' "$HOME/.local/share/weatherreport" | grep -o "m\\(-+\\)*[0-9]\\+" | sort -n -t 'm' -k 2n | sed -e 1b -e '$!d' | tr '\n|m' ' ' | awk '{print " ❄️",$1 "°","🌞",$2 "°"}' ;} case $BLOCK_BUTTON in - 1) $TERMINAL -e less -S "$HOME/.local/share/weatherreport" ;; + 1) $TERMINAL -e less -Srf "$HOME/.local/share/weatherreport" ;; 2) getforecast && showweather ;; 3) pgrep -x dunst >/dev/null && notify-send "🌈 Weather module" "\- Left click for full forecast. - Middle click to update forecast. @@ -17,7 +16,7 @@ case $BLOCK_BUTTON in 🌞: Daily high" ;; esac -if [ "$(stat -c %y "$HOME/.local/share/weatherreport" >/dev/null 2>&1 | awk '{print $1}')" != "$(date '+%Y-%m-%d')" ] +if [ "$(stat -c %y "$HOME/.local/share/weatherreport" 2>/dev/null | awk '{print $1}')" != "$(date '+%Y-%m-%d')" ] then getforecast && showweather else showweather fi 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/tutorialvids b/.local/bin/tutorialvids index 41d3c750..5ca5c50f 100755 --- a/.local/bin/tutorialvids +++ b/.local/bin/tutorialvids @@ -1,4 +1,5 @@ -#!/usr/bin/env sh +#!/bin/sh + vidlist=" status bar https://www.youtube.com/watch?v=gKumet6b-WY sxiv (image viewer) https://www.youtube.com/watch?v=GYW9i_u5PYs 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' / / %%%%%%;, \%%l%%;// _/%;, dmr / %%%;, <;\-=-/ / ;, l -eof \ No newline at end of file +eof diff --git a/.local/bin/vifmimg b/.local/bin/vifmimg index 15699621..8fb8eed8 100755 --- a/.local/bin/vifmimg +++ b/.local/bin/vifmimg @@ -1,4 +1,5 @@ #!/usr/bin/env bash + [ -z "$FIFO_UEBERZUG" ] && exit readonly ID_PREVIEW="preview" diff --git a/.local/bin/vu b/.local/bin/vu index 1e8d59e1..2340cdc2 100755 --- a/.local/bin/vu +++ b/.local/bin/vu @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/bin/sh # This is a wrapper for vifm to allow ueberzug images. 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/.profile b/.profile index e3543d9f..890acde7 100644 --- a/.profile +++ b/.profile @@ -12,13 +12,17 @@ export EDITOR="nvim" export TERMINAL="st" export BROWSER="brave" export READER="zathura" -export FILE="ranger" export STATUSBAR="${LARBSWM}blocks" +# Export XDG environmental variables from '~/.config/user-dirs.dirs' +eval "$(sed 's/^[^#].*/export &/g;t;d' ~/.config/user-dirs.dirs)" + # ~/ Clean-up: +#export XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority" # This line will break some DMs. export NOTMUCH_CONFIG="$HOME/.config/notmuch-config" export GTK2_RC_FILES="$HOME/.config/gtk-2.0/gtkrc-2.0" export LESSHISTFILE="-" +export WGETRC="$HOME/.config/wget/wgetrc" export INPUTRC="$HOME/.config/inputrc" export ZDOTDIR="$HOME/.config/zsh" export PASSWORD_STORE_DIR="$HOME/.local/share/password-store" @@ -36,8 +40,6 @@ export LESS_TERMCAP_se="$(printf '%b' '')" export LESS_TERMCAP_us="$(printf '%b' '')" export LESS_TERMCAP_ue="$(printf '%b' '')" -mpd >/dev/null 2>&1 & - [ ! -f ~/.config/shortcutrc ] && shortcuts >/dev/null 2>&1 # Start graphical server on tty1 if not already running. @@ -45,5 +47,3 @@ mpd >/dev/null 2>&1 & # Switch escape and caps if tty and no passwd required: sudo -n loadkeys ~/.local/share/larbs/ttymaps.kmap 2>/dev/null - -export LF_ICONS="di=:fi=:ln=:or=:ex=:*.c=:*.cc=:*.clj=:*.coffee=:*.cpp=:*.css=:*.d=:*.dart=:*.erl=:*.exs=:*.fs=:*.go=:*.h=:*.hh=:*.hpp=:*.hs=:*.html=:*.java=:*.jl=:*.js=:*.json=:*.lua=:*.md=:*.php=:*.pl=:*.pro=:*.py=:*.rb=:*.rs=:*.scala=:*.ts=:*.vim=:*.cmd=:*.ps1=:*.sh=:*.bash=:*.zsh=:*.fish=:*.tar=:*.tgz=:*.arc=:*.arj=:*.taz=:*.lha=:*.lz4=:*.lzh=:*.lzma=:*.tlz=:*.txz=:*.tzo=:*.t7z=:*.zip=:*.z=:*.dz=:*.gz=:*.lrz=:*.lz=:*.lzo=:*.xz=:*.zst=:*.tzst=:*.bz2=:*.bz=:*.tbz=:*.tbz2=:*.tz=:*.deb=:*.rpm=:*.jar=:*.war=:*.ear=:*.sar=:*.rar=:*.alz=:*.ace=:*.zoo=:*.cpio=:*.7z=:*.rz=:*.cab=:*.wim=:*.swm=:*.dwm=:*.esd=:*.jpg=:*.jpeg=:*.mjpg=:*.mjpeg=:*.gif=:*.bmp=:*.pbm=:*.pgm=:*.ppm=:*.tga=:*.xbm=:*.xpm=:*.tif=:*.tiff=:*.png=:*.svg=:*.svgz=:*.mng=:*.pcx=:*.mov=:*.mpg=:*.mpeg=:*.m2v=:*.mkv=:*.webm=:*.ogm=:*.mp4=:*.m4v=:*.mp4v=:*.vob=:*.qt=:*.nuv=:*.wmv=:*.asf=:*.rm=:*.rmvb=:*.flc=:*.avi=:*.fli=:*.flv=:*.gl=:*.dl=:*.xcf=:*.xwd=:*.yuv=:*.cgm=:*.emf=:*.ogv=:*.ogx=:*.aac=:*.au=:*.flac=:*.m4a=:*.mid=:*.midi=:*.mka=:*.mp3=:*.mpc=:*.ogg=:*.ra=:*.wav=:*.oga=:*.opus=:*.spx=:*.xspf=:*.pdf=" diff --git a/.tmux.conf b/.tmux.conf index 2a6cda1e..6d85cc70 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 3a5a2203..c669ad2b 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 f1e73b33..677eff10 100644 --- a/.xprofile +++ b/.xprofile @@ -1,15 +1,81 @@ -#!/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. +# Fix Gnome Apps Slow Start due to failing services +# Add this when you include flatpak in your system +dbus-update-activation-environment --systemd DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY + +mpd & # music player daemon-you might prefer it as a service though remaps & # run the remaps script, switching caps/esc and more; check it for more info setbg & # set the background with the `setbg` script +#xrdb ~/.config/Xresources & # Uncomment to use Xresources colors/settings on startup xcompmgr & # xcompmgr for transparency -$STATUSBAR & # script for updating the status bar +$STATUSBAR & # start the statusbar dunst & # dunst for notifications -sxhkd -m 1 & # Bind keys with sxhkd xset r rate 300 50 & # Speed xrate up unclutter & # Remove mouse when idle mpd-module-update & # Check for when to update the mpd module -notify-send -i /home/luke/.local/share/larbs/larbs.png "Welcome to LARBS" "Press super+F1 for the help menu." # LARBSWELCOME + +# This is the list for lf icons: +export LF_ICONS="di=📁:\ +fi=📃:\ +tw=🤝:\ +ow=📂:\ +ln=⛓:\ +or=❌:\ +ex=🎯:\ +*.txt=✍:\ +*.mom=✍:\ +*.me=✍:\ +*.ms=✍:\ +*.png=🖼:\ +*.ico=🖼:\ +*.jpg=📸:\ +*.jpeg=📸:\ +*.gif=🖼:\ +*.svg=🗺:\ +*.xcf=🖌:\ +*.html=🌎:\ +*.xml=📰:\ +*.gpg=🔒:\ +*.css=🎨:\ +*.pdf=📚:\ +*.djvu=📚:\ +*.epub=📚:\ +*.csv=📓:\ +*.xlsx=📓:\ +*.tex=📜:\ +*.md=📘:\ +*.r=📊:\ +*.R=📊:\ +*.rmd=📊:\ +*.Rmd=📊:\ +*.mp3=🎵:\ +*.opus=🎵:\ +*.ogg=🎵:\ +*.m4a=🎵:\ +*.flac=🎼:\ +*.mkv=🎥:\ +*.mp4=🎥:\ +*.webm=🎥:\ +*.mpeg=🎥:\ +*.zip=📦:\ +*.rar=📦:\ +*.7z=📦:\ +*.tar.gz=📦:\ +*.z64=🎮:\ +*.v64=🎮:\ +*.n64=🎮:\ +*.1=ℹ:\ +*.nfo=ℹ:\ +*.info=ℹ:\ +*.log=📙:\ +*.iso=📀:\ +*.img=📀:\ +*.bib=🎓:\ +*.ged=👪:\ +*.part=💔:\ +*.torrent=🔽:\ +"