Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Arjun Karangiya 2020-04-05 18:58:01 +05:30
commit 80a1bdde7a
90 changed files with 1153 additions and 274 deletions

1
.cache/bg Symbolic link
View File

@ -0,0 +1 @@
../.config/wall.png

156
.config/Xresources Normal file
View File

@ -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 */

40
.config/bspwm/bspwm/bspwmrc Executable file
View File

@ -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)"

View File

@ -1,30 +1,37 @@
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<alias>
<family>serif</family>
<prefer><family>Linux Libertine</family></prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer><family>Linux Biolinum</family></prefer>
</alias>
<alias>
<family>sans</family>
<prefer><family>Linux Biolinum</family></prefer>
</alias>
<alias>
<family>monospace</family>
<prefer><family>Inconsolata</family></prefer>
</alias>
<!-- This sets Symbola as the final fallback font for the monospace font family. -->
<match target="pattern">
<test name="family"><string>monospace</string></test>
<edit name="family" mode="append"><string>Symbola</string></edit>
</match>
<alias>
<family>serif</family>
<prefer>
<family>Linux Libertine</family>
<family>Joy Pixels</family>
<family>Noto Color Emoji</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Linux Biolinum</family>
<family>Joy Pixels</family>
<family>Noto Color Emoji</family>
</prefer>
</alias>
<alias>
<family>sans</family>
<prefer>
<family>Linux Biolinum</family>
<family>Joy Pixels</family>
<family>Noto Color Emoji</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Liberation Mono</family>
<family>Inconsolata</family>
<family>Joy Pixels</family>
<family>Noto Color Emoji</family>
</prefer>
</alias>
</fontconfig>

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -70,5 +70,5 @@ map <c-r> reload
map <enter> 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"

View File

@ -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

View File

@ -64,6 +64,9 @@ set clipboard+=unnamedplus
map <C-k> <C-w>k
map <C-l> <C-w>l
" Replace ex mode with gq
map Q gq
" Check file in shellcheck:
map <leader>s :!clear && shellcheck %<CR>

View File

@ -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

View File

@ -1 +1,3 @@
XDG_DESKTOP_DIR="$HOME/"
XDG_CONFIG_HOME="$HOME/.config"
XDG_DATA_HOME="$HOME/.local/share"

View File

@ -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 &

29
.config/wal/postrun Executable file
View File

@ -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 &

View File

@ -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 = "<b>%s</b>\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

View File

@ -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}"

1
.config/wget/wgetrc Normal file
View File

@ -0,0 +1 @@
hsts-file=~/.cache/wget-hsts

View File

@ -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 ;;

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -1,4 +1,5 @@
#!/usr/bin/env sh
#!/bin/sh
# Toggles all cronjobs off/on.
# Stores disabled crontabs in ~/.consaved until restored.

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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."
}

View File

@ -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.

View File

@ -1,4 +1,4 @@
#!/usr/bin/env sh
#!/bin/sh
# Usage:
# `$0`: Ask for recording type via dmenu

View File

@ -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.

View File

@ -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

View File

@ -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" ;;

View File

@ -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

View File

@ -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.

View File

@ -1,2 +1,3 @@
#!/usr/bin/env sh
#!/bin/sh
ifinstalled bc && echo "Welcome to the Calculator." && bc -lq

View File

@ -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))

View File

@ -1,4 +1,5 @@
#!/usr/bin/env sh
#!/bin/sh
# This script was made by `goferito` on Github.
# Some cleanup by Luke.

View File

@ -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

View File

@ -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." )

View File

@ -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 ;}

View File

@ -1,4 +1,4 @@
#!/usr/bin/env sh
#!/bin/sh
# Terminate already running bar instances
killall -q polybar

View File

@ -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,

30
.local/bin/lmc Executable file
View File

@ -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:?}" &

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -1,4 +1,5 @@
#!/usr/bin/env sh
#!/bin/sh
# $1 is a url; $2 is a command
[ -z "$1" ] && exit
base="$(basename "$1")"

View File

@ -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.

View File

@ -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.

View File

@ -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...

View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -1,4 +1,4 @@
#!/usr/bin/env sh
#!/bin/sh
# Display contents of selection via dunst if running.
# Separate script for i3.

View File

@ -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 "<span color='%s'>%s%s%s</span>\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

View File

@ -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/<b><span color=\"red\">/;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/<b><span color=\"red\">/;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" ;;

View File

@ -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}'

View File

@ -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}')"

View File

@ -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 ;;

View File

@ -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)"

View File

@ -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

View File

@ -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)"

View File

@ -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}'

23
.local/bin/statusbar/moonphase Executable file
View File

@ -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"%

View File

@ -1,4 +1,4 @@
#!/usr/bin/env sh
#!/bin/sh
filter() {
sed "/^volume:/d" | tac | sed -e "s/\\&/&amp;/g;s/\\[paused\\].*/<span color=\"gray\" font_style=\"italic\">/g;s/\\[playing\\].*/<span>/g" | tr -d '\n' | sed -e "s/$/<\\/span>\n/g"

View File

@ -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
<b>Note:</b> 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)"

View File

@ -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"

View File

@ -1,4 +1,4 @@
#!/usr/bin/env sh
#!/bin/sh
printf "Beginning upgrade.\\n"

View File

@ -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

View File

@ -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

View File

@ -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="🔊"

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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
eof

View File

@ -1,4 +1,5 @@
#!/usr/bin/env bash
[ -z "$FIFO_UEBERZUG" ] && exit
readonly ID_PREVIEW="preview"

View File

@ -1,4 +1,4 @@
#!/usr/bin/env sh
#!/bin/sh
# This is a wrapper for vifm to allow ueberzug images.

View File

@ -0,0 +1,4 @@
[Desktop Entry]
Type=Application
Name=File Manager
Exec=/usr/local/bin/st -e lf %u

View File

@ -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.

View File

@ -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="

View File

@ -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

View File

@ -1,4 +1,4 @@
#!/usr/bin/env sh
#!/bin/sh
# xinitrc runs automatically when you run startx.

View File

@ -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=🔽:\
"