Browse Source

general: adds further tweaks

main
creton32 1 week ago
parent
commit
8ee680d641
  1. 1
      README.md
  2. 83
      bin/.local/bin/au
  3. 35
      bin/.local/bin/cast
  4. 12
      bin/.local/bin/ctl
  5. 4
      bin/.local/bin/inp
  6. 49
      bin/.local/bin/mon
  7. 1
      bin/.local/bin/onm
  8. 12
      bin/.local/bin/ro
  9. 35
      bin/.local/bin/tri
  10. 37
      bin/.local/bin/wi
  11. 40
      bin/.local/bin/wm
  12. 4
      bin/.local/bin/wt
  13. 13
      browser/.config/tridactyl/scripts/requests.js
  14. 1
      browser/.config/tridactyl/themes/tridactyl.css
  15. 60
      browser/.config/tridactyl/tridactylrc
  16. BIN
      browser/.mozilla/firefox/profile/extensions/@react-devtools.xpi
  17. BIN
      browser/.mozilla/firefox/profile/extensions/tridactyl.vim@cmcaine.co.uk.xpi
  18. BIN
      browser/.mozilla/firefox/profile/extensions/uBlock0@raymondhill.net.xpi
  19. BIN
      browser/.mozilla/firefox/profile/extensions/{446900e4-71c2-419f-a6a7-df9c091e268b}.xpi
  20. BIN
      browser/.mozilla/firefox/profile/extensions/{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}.xpi
  21. 4
      browser/.mozilla/firefox/profile/user.js
  22. 2
      chat/.config/sclirc
  23. 43
      chat/.config/weechat/irc.conf
  24. BIN
      chat/.config/weechat/weechat.conf
  25. 57
      desktop/.config/bspwm/bspwmrc
  26. 187
      desktop/.config/polybar/config.ini
  27. 4
      desktop/.config/rofi/config.rasi
  28. 2
      desktop/.config/rofi/launchers/shared.rasi
  29. 2
      desktop/.config/rofi/menus/utils.rasi
  30. 9
      display/.config/X11/xinitrc
  31. 57
      editor/.config/emacs/init.el
  32. 2
      editor/.config/nvim/settings/core.vim
  33. 6
      editor/.config/nvim/settings/plugins.vim
  34. 6
      file/.config/mimeapps.list
  35. 0
      file/.config/user-dirs.conf
  36. 0
      file/.config/user-dirs.dirs
  37. 0
      file/.config/vifm/colors/vifm.vifm
  38. 0
      file/.config/vifm/scripts/vifmimg
  39. 0
      file/.config/vifm/scripts/vifmrun
  40. 6
      file/.config/vifm/vifmrc
  41. 55
      gui/.config/gtk-3.0/dist/button.css
  42. 36
      gui/.config/gtk-3.0/dist/container.css
  43. 17
      gui/.config/gtk-3.0/dist/misc.css
  44. 2
      gui/.config/gtk-3.0/dist/widget.css
  45. 8
      input/.config/sxhkd/sxhkdrc
  46. 45
      reader/.config/newsboat/config
  47. BIN
      reader/.config/newsboat/urls
  48. 68
      reader/.config/transmission-daemon/settings.json
  49. 13
      reader/.config/zathura/zathurarc
  50. 2
      term/.config/rmuxinator/media.toml
  51. 6
      term/.config/zsh/.aliases
  52. 10
      up
  53. 9
      util/.config/dijo/config.toml
  54. 4
      video/.config/mpv/input.conf
  55. 12
      video/.config/mpv/mpv.conf
  56. 20
      video/.config/peertube-viewer-rs/config.toml
  57. 2
      video/.config/straw-viewer/straw-viewer.conf
  58. 17
      video/.config/youtube-dl/config

1
README.md

@ -219,6 +219,7 @@ I managed to package all the fonts I use as Void templates, but in the case of `
* **Icon theme** - [Papirus](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme)
* **Unit conversion** - [GNU Units](https://www.gnu.org/software/units/)
* **Burner SMS** - [tmpsms](https://github.com/sdushantha/tmpsms)
* **Torrenting** - [transmission](https://transmissionbt.com/)
* **Package managers**
+ [yarn](https://yarnpkg.com/): a faster JavaScript package manager. Global dependencies include
+ [mocha](https://mochajs.org/): JavaScript test framework

83
bin/.local/bin/au

@ -111,37 +111,10 @@ volume() {
esac
fi
esac
polybar-msg hook audio_output 1
}
draw_bar() {
level="$1"
size="$2"
vol_percent="$3"
completion_color="#5F6FAB"
empty_color="#9A9FBB"
i=0
while [ "$i" -lt $size ]; do
if [ "$level" -ge 0 ] && [ "$level" -le $((size / 3)) ]; then
ramp_volume="奄"
elif [ "$level" -ge 2 ] && [ "$level" -le $((size / 2)) ]; then
ramp_volume="奔"
elif [ "$level" -ge $((size / 2)) ]; then
ramp_volume="墳"
fi
if [ "$i" -le "$level" ]; then
bar="$bar%{F$completion_color}━"
else
bar="$bar%{F$empty_color}━"
fi
i=$((i + 1))
done
echo "$ramp_volume $bar %{F-}$vol_percent%"
}
# Status bar volume bar
volume_bar() {
output_volume() {
device_alias="$(au -bt --get | cut -d " " -f2-)"
case "$(get_au_sv)" in
@ -175,22 +148,22 @@ volume_bar() {
level_sw=$((volume_percent_sw * size / 100))
level_hw=$((volume_percent_hw * size / 100))
echo "%{A1:au -vol --hw mute:}%{A4:au -vol --hw up:}%{A5:au -vol --hw down:}
$(draw_bar $level_hw $size $volume_percent_hw)%{A}%{A}%{A} %{A1:au -vol --sw mute:}%{A4:au -vol --sw up:}%{A5:au -vol --sw down:} $(draw_bar $level_sw $size $volume_percent_sw)%{A}%{A}%{A}"
$(wi -b $size $volume_percent_hw "#5F6FAB" "#9A9FBB" "奄" "奔" "墳")%{A}%{A}%{A} %{A1:au -vol --sw mute:}%{A4:au -vol --sw up:}%{A5:au -vol --sw down:} $(wi -b $size $volume_percent_sw "#5F6FAB" "#9A9FBB" "奄" "奔" "墳")%{A}%{A}%{A}"
# Volume of hardware mixer
elif [ -n "$volume_hw" ]; then
volume_percent_hw=$(printf '%.0f' $volume_hw)
level_hw=$((volume_percent_hw * size / 100))
echo "%{A1:au -vol --hw mute:}%{A4:au -vol --hw up:}%{A5:au -vol --hw down:}$(draw_bar $level_hw $size $volume_percent_hw)%{A}%{A}%{A}"
echo "%{A1:au -vol --hw mute:}%{A4:au -vol --hw up:}%{A5:au -vol --hw down:}$(wi -b $size $volume_percent_hw "#5F6FAB" "#9A9FBB" "奄" "奔" "墳")%{A}%{A}%{A}"
# Volume of software mixer
else
volume_percent_sw=$(printf '%.0f' $volume_sw)
level_sw=$((volume_percent_sw * size / 100))
echo "%{A1:au -vol --sw mute:}%{A3:ro -pulse --sinks:}%{A4:au -vol --sw up:}%{A5:au -vol --sw down:}$(draw_bar $level_sw $size $volume_percent_sw)%{A}%{A}%{A}%{A}"
echo "%{A1:au -vol --sw mute:}%{A3:ro -pulse --sinks:}%{A4:au -vol --sw up:}%{A5:au -vol --sw down:}$(wi -b $size $volume_percent_sw "#5F6FAB" "#9A9FBB" "奄" "奔" "墳")%{A}%{A}%{A}%{A}"
fi
}
# Change capture source
in_src() {
input_volume() {
case "$(get_au_sv)" in
pulseaudio)
mic_volume="$(pamixer --default-source --get-volume)"
@ -232,9 +205,10 @@ in_src() {
amixer sset 'Capture' 5%+
fi
esac
polybar-msg hook audio_input 1
;;
--vol-down)
case "$au_sv" in
case "$(get_au_sv)" in
pulseaudio)
pamixer --default-source -d 5
;;
@ -254,6 +228,7 @@ in_src() {
amixer sset 'Capture' 5%-
fi
esac
polybar-msg hook audio_input 1
;;
--toggle)
case "$(get_au_sv)" in
@ -267,6 +242,7 @@ in_src() {
amixer cset name='Capture Source' 'Headset Mic' >/dev/null
fi
esac
polybar-msg hook audio_input 1
;;
--mute)
case "$(get_au_sv)" in
@ -285,6 +261,7 @@ in_src() {
amixer sset 'Mic' toggle
fi
esac
polybar-msg hook audio_input 1
;;
*)
case "$(get_au_sv)" in
@ -292,7 +269,7 @@ in_src() {
if [ "$(pamixer --default-source --get-mute)" = "true" ]; then
echo "%{T4}%{T-}"
else
echo "%{T4} $mic_volume%%{T-}"
wi -b 5 "$mic_volume" "#5F6FAB" "#9A9FBB" "" "" ""
fi
;;
alsa|bluetooth)
@ -310,24 +287,27 @@ in_src() {
esac
}
# Toggle Auto-Mute mode
auto_mute() {
case "$2" in
--toggle)
case "$(amixer -q sget 'Auto-Mute Mode' 2>/dev/null | awk -F ":" '/Item0/{print $2}' | tr -d "''")" in
Enabled) amixer -q sset 'Auto-Mute Mode' Disabled ;;
Disabled) amixer -q sset 'Auto-Mute Mode' Enabled ;;
esac
;;
*)
case "$(amixer -q sget 'Auto-Mute Mode' 2>/dev/null | awk -F ":" '/Item0/{print $2}' | tr -d "''")" in
Enabled) echo "" ;;
Disabled) echo "蓼" ;;
esac
esac
if [[ $(get_au_sv) == "alsa" ]]; then
local state="$(amixer sget 'Auto-Mute Mode' 2>/dev/null | awk -F ":" '/Item0/{print $2}' | tr -d "[:space:]''")"
case "$2" in
--toggle)
case "$state" in
Enabled) amixer -q sset 'Auto-Mute Mode' Disabled ;;
Disabled) amixer -q sset 'Auto-Mute Mode' Enabled ;;
esac
;;
*)
case "$state" in
Enabled) echo "" ;;
Disabled) echo "蓼" ;;
esac
esac
fi
}
# Manage bluetooth
# TODO: find out how to trigger polybar hook when connection is made automatically
bluetooth() {
case "$2" in
--toggle)
@ -352,6 +332,7 @@ bluetooth() {
bluetoothctl power off >>/dev/null
esac
polybar-msg hook bluetooth 1
;;
--get)
if pgrep bluetoothd >/dev/null; then
@ -383,9 +364,9 @@ bluetooth() {
case "$1" in
-am) auto_mute "$@" ;;
-in) in_src "$@" ;;
-in) input_volume "$@" ;;
-bt) bluetooth "$@" ;;
-vol) volume "$@" ;;
-vol-bar) volume_bar "$@" ;;
-out) output_volume "$@" ;;
--get_au_sv) get_au_sv ;;
esac

35
bin/.local/bin/cast

@ -40,17 +40,6 @@ sc() {
2>>${XDG_VIDEOS_DIR:-~/videos}/region.log
}
stop() {
pkill ffmpeg
notify-send "Screencast" "Stopped screencast"
}
exit_program() {
printf "$(1)"
notify-send -u critical -t 3000 'Screencast Error' "${1}"
exit 1
}
# convert to gif
cgif() {
eval "$(ffprobe -v quiet -show_streams "$1" | grep '^[wh]')"
@ -94,9 +83,33 @@ album_art() {
esac
}
webcam_test() {
capture_video_devices="$(v4l2-ctl --list-devices | sed '/usb/,+1!d' | paste -d ' ' - -)"
selected_video_device="$(echo "$capture_video_devices" | rofi -dmenu -theme global)"
selected_device="$(echo $selected_video_device | rev | awk '{print $1}' | rev)"
ffmpeg -loglevel 8 -f v4l2 -framerate 30 \
-video_size 1024x768 -input_format mjpeg \
-i $selected_device -c:v mjpeg -b:v 6400k \
-map 0:v -f tee "[f=nut]pipe:" \
| ffplay -loglevel 8 pipe:
}
stop() {
pkill ffmpeg
notify-send "Screencast" "Stopped screencast"
}
exit_program() {
printf "$(1)"
notify-send -u critical -t 3000 'Screencast Error' "${1}"
exit 1
}
case "$1" in
"-k") stop ;;
"--gif") cgif "$2" ;;
"-sc") sc "$@" ;;
"-aa") album_art "$@" ;;
"-wt") webcam_test ;;
esac

12
bin/.local/bin/ctl

@ -4,11 +4,15 @@ PCTL_COMMAND="playerctl -s --player=%any,mpd"
get_metadata() {
position=$($PCTL_COMMAND metadata --format "{{duration(position)}} - {{duration(mpris:length)}}")
echo "$position"
if $PCTL_COMMAND metadata | grep -q 'mpris:length'; then
echo " $position "
fi
}
loop_status="$($PCTL_COMMAND loop)"
shuffle_status="$($PCTL_COMMAND shuffle)"
if $PCTL_COMMAND metadata | grep -q 'mpris:length'; then
loop_status="$($PCTL_COMMAND loop)"
shuffle_status="$($PCTL_COMMAND shuffle)"
fi
get_status() {
case "$1" in
--loop)
@ -50,6 +54,6 @@ toggle_status() {
case "$1" in
-get)
echo "%{A4:playerctl -s --player=%any,mpd position 15+:}%{A5:playerctl -s --player=%any,mpd position 15-:}$(get_metadata)%{A-}%{A-} $(get_status --loop)";;
echo "%{A4:playerctl -s --player=%any,mpd position 15+:}%{A5:playerctl -s --player=%any,mpd position 15-:}$(get_metadata)%{A-}%{A-}$(get_status --loop) ";;
-toggle) toggle_status "$@" ;;
esac

4
bin/.local/bin/inp

@ -1,6 +1,6 @@
#!/bin/sh
# Touchpad
# Drivers
tp() {
case "$2" in
"--toggle")
@ -9,6 +9,7 @@ tp() {
else
synclient TouchpadOff=0
fi
polybar-msg hook input 1
;;
*)
if [ "$(synclient -l | grep TouchpadOff | awk -F= '{print $2}' | sed 's/ //')" -eq 0 ]; then
@ -38,6 +39,7 @@ xid() {
else
xinput enable "$device"
fi
polybar-msg hook input 1
;;
*)
if [ "$(xinput list-props "$device" | awk '/Device Enabled/{print $4}')" -eq 1 ]; then

49
bin/.local/bin/mon

@ -0,0 +1,49 @@
#!/bin/sh
monitor="$(ddcutil detect | sed -n '/Display/,/^$/p')"
active_monitor="$(echo "$monitor" | awk 'FNR==1 {print $2}')"
power() {
if [ -n "$monitor" ]; then
case "$2" in
off)
ddcutil setvcp D6 0x05 -d "$active_monitor"
;;
on)
ddcutil setvcp D6 0x01 -d "$active_monitor"
;;
esac
fi
}
brightness() {
if [ -n "$monitor" ]; then
case "$2" in
get)
local brightness_percent="$(ddcutil getvcp 10 -d $active_monitor | sed 's/^.*\(current value.*\,\).*$/\1/' | tr -d '[:space:],' | awk -F = '{print $2}')"
local size=5
local level_brightness=$((brightness_percent * size / 100))
wi -b "$size" "$brightness_percent" "#5F6FAB" "#9A9FBB" "" "" ""
;;
in) ddcutil setvcp 10 + 10 -d "$active_monitor" && polybar-msg hook brightness 1 ;;
dec) ddcutil setvcp 10 - 10 -d "$active_monitor" && polybar-msg hook brightness 1 ;;
esac
else
case "$2" in
get)
local brightness_percent="$(printf '%.0f' $(xbacklight -get))"
local size=5
local level_brightness=$((brightness_percent * size / 100))
wi -b "$size" "$brightness_percent" "#5F6FAB" "#9A9FBB" "" "" ""
;;
in) xbacklight -inc 10 && polybar-msg hook brightness 1 ;;
dec) xbacklight -dec 10 && polybar-msg hook brightness 1 ;;
esac
fi
}
case "$1" in
-b|--brightness) brightness "$@" ;;
-p|--power) power "$@" ;;
esac

1
bin/.local/bin/onm

@ -85,6 +85,7 @@ new_mail() {
get_email_content "$last_email"
notify-send "$from" "$subject" &
fi
polybar-msg hook mail 1
}
case "$1" in

12
bin/.local/bin/ro

@ -101,10 +101,11 @@ utils() {
region_ss=""
full_sc=""
region_sc=""
webcam_test="犯"
screencolor=""
colorpicker=""
options="$full_ss\n$region_ss\n$full_sc\n$region_sc\n$screencolor\n$colorpicker"
options="$full_ss\n$region_ss\n$full_sc\n$region_sc\n$webcam_test\n$screencolor\n$colorpicker"
selected="$(echo -e $options | rofi -dmenu -theme menus/utils)"
@ -113,6 +114,7 @@ utils() {
$region_ss) sc ;;
$full_sc) cast -sc --f ;;
$region_sc) cast -sc --r ;;
$webcam_test) cast -wt ;;
$screencolor) color cp ;;
$colorpicker) color yd ;;
esac
@ -148,7 +150,7 @@ mail() {
}
vpn_menu() {
connection="$(doas wg | awk '/interface/{print $2}')"
connection="$(doas wg | awk -F': ' '/interface/{print $2}')"
connection_status() {
[ -n "$connection" ] && echo 1
}
@ -157,7 +159,7 @@ vpn_menu() {
--toggle)
if [[ "$(connection_status)" -eq 1 ]]; then
notify-send "Wireguard" "Disconnecting from $connection..."
doas wg-quick down "$connection" 2>/dev/null
doas wg-quick down "$connection" 2>/dev/null && polybar-msg hook vpn 1
else
config="$(doas find /etc/wireguard -type f -name "*.conf" -printf '%f\n')"
if [ $(printf '%s\n' $config | wc -l) -gt 1 ]; then
@ -175,14 +177,14 @@ vpn_menu() {
if [ -n "$selected" ]; then
notify-send "Wireguard" "Connecting to $selected..."
doas wg-quick up "$selected" 2>/dev/null
doas wg-quick up "$selected" 2>/dev/null && polybar-msg hook vpn 1
fi
fi
;;
--get)
case "$(connection_status)" in
1) echo \
"%{F#5F6FAB}%{T4}聯%{F-}%{T-}" ;;
"%{F#5F6FAB}%{T4}聯%{F-} $connection%{T-}" ;;
*) echo "%{T4}輦%{T-}" ;;
esac
esac

35
bin/.local/bin/tri

@ -2,13 +2,12 @@
# Handle links
open() {
[ -n "$2" ] &&
opt="$(echo "$2" | awk '{ print tolower($0) }')"
case "$opt" in
if [ -n "$2" ]; then
case "$2" in
*jpg*|*png*|*svg*|*gif*|\
*".githubusercontent.com"*)
# Check HTTP response file type
ctype="$(curl -s -I "$opt" | awk 'tolower($0) ~ /^content-type/{print $2}' | head -n1)"
ctype="$(curl -s -I "$2" | awk 'tolower($0) ~ /^content-type/{print $2}' | head -n1)"
notify-send -i folder-image -t 1500 \
"imv" "Opening "$img" picture..."
if [ "${ctype#*image}" != "$ctype" ]; then
@ -20,7 +19,6 @@ open() {
*.pdf|*"moodle"*)
notify-send -i text -t 1500 \
"zathura" "Opening pdf..."
notify-send "$opt" "$3"
status="$(curl -s -I --head "$2" 2>/dev/null | head -n1)"
case "$status" in
@ -29,27 +27,32 @@ open() {
cat "/tmp/mozilla_eot0/$last_tmp" | zathura -
;;
*)
curl -s "$opt" | zathura -
curl -s "$2" | zathura -
;;
esac
;;
*"youtube.com"*|\
*"youtu.be"*|\
*"streamable.com"*)
notify-send -i folder-videos -t 1500 \
"mpv" "Opening "$2" with mpv..."
mpv "$2"
*"streamable.com"*|\
*"vimeo.com"*)
# notify-send -i folder-videos -t 1500 \
# "mpv" "Opening "$2" with mpv..." >/dev/null 2>&1 &
mpv --really-quiet "$2" >/dev/null 2>&1 &
;;
*".tar.gz"|*.zip)
curl -sL "$2" | sha256sum | awk '{print $1}' | tr -d '\n' | xclip -selection clipboard
curl -sL "$2" | sha256sum | awk '{print $1}' | tr -d '\n' | xclip -se c
notify-send "Tridactyl" "Copied hash to clipboard"
;;
"magnet:"*)
transmission-remote -c $XDG_DOWNLOAD_DIR/torrents/incomplete -w $XDG_DOWNLOAD_DIR/torrents/complete --add "$2"
notify-send "Transmission" "Started downloading torrent..."
;;
*)
notify-send -t 1500 \
"Tridactyl" "Opening file..."
mpv --loop "$opt"
xdg-open "$2" >/dev/null 2>&1 &
esac
else
exit 1
fi
}
wallpaper() {
@ -69,7 +72,7 @@ dl() {
*"youtube.com"*|\
*"soundcloud.com"*)
notify-send -i folder-download "youtube-dl" "Downloading "$3" ..." &&
youtube-dl -x --embed-thumbnail \
youtube-dl -x -q --embed-thumbnail \
--audio-format mp3 --add-metadata \
-o "~/music/%(title)s.%(ext)s" "$3" 2>/dev/null &&
notify-send "youtube-dl" "Finished downloading "$3""

37
bin/.local/bin/wi

@ -0,0 +1,37 @@
#!/bin/sh
bar() {
size="$2"
percent="$3"
level="$(($3 * size / 100))"
completion_color="$4"
empty_color="$5"
empty_icon="$6"
mid_icon="$7"
full_icon="$8"
i=0
while [ "$i" -lt $size ]; do
if [ -n "$empty_icon" ] && [ -n "$mid_icon" ] && [ -n "$full_icon" ]; then
if [ "$level" -ge 0 ] && [ "$level" -le $((size / 3)) ]; then
ramp_icon="$empty_icon"
elif [ "$level" -ge 2 ] && [ "$level" -le $((size / 2)) ]; then
ramp_icon="$mid_icon"
elif [ "$level" -ge $((size / 2)) ]; then
ramp_icon="$full_icon"
fi
fi
if [ "$i" -le "$level" ]; then
bar="$bar%{F$completion_color}━"
else
bar="$bar%{F$empty_color}━"
fi
i=$((i + 1))
done
echo "$ramp_icon $bar %{F-}$percent%"
}
case "$1" in
--bar|-b) bar "$@" ;;
esac

40
bin/.local/bin/wm

@ -119,28 +119,17 @@ display() {
bspc monitor $a_display -d 1 2 3 4 5
subscribe() {
bspc subscribe node_geometry monitor desktop_focus | while read -r event; do
bspc subscribe node_geometry monitor | while read -r event; do
case $event in
"node_geometry"*)
# Remove all padding/gaps on monocle layout
for side in top right bottom left; do
bspc config ${side}_monocle_padding -"$(bspc config -d focused "$side"_padding)"
done
# case "$(bspc query -T -d | jq -r .layout)" in
# monocle)
# # Grab the window gap from the previously tiled window
# # TODO: is there a better way to persist the variable?
# tiled_gap="$(bspc query -T -d | jq -r .windowGap)"
# wm gap set 15
# ;;
# tiled)
# [ -n $tiled_gap ] && wm gap set $tiled_gap
# echo "$tiled_gap"
# ;;
# esac
;;
"monitor"*)
display
polybar-msg hook brightness 1
;;
esac
done
@ -162,13 +151,15 @@ preset() {
30) wm --pre medium ;;
15) wm --pre low ;;
esac
polybar-msg hook wm_preset 1
;;
--less)
case "$(bspc config -d focused window_gap)" in
60) wm --pre medium ;;
45) wm --pre low ;;
30) wm --pre ;;
esac
case "$(bspc config -d focused window_gap)" in
60) wm --pre medium ;;
45) wm --pre low ;;
30) wm --pre ;;
esac
polybar-msg hook wm_preset 1
;;
high)
wm padding set 60
@ -186,6 +177,7 @@ preset() {
wm padding set 0
wm border set 2
wm gap set 15
polybar-msg hook wm_preset 1
esac
}
@ -210,10 +202,14 @@ move_floating() {
Y=$(((MONITOR_HEIGHT - HEIGHT) / 2 + MONITOR_YOFFSET))
case "$corner" in
q) xdotool windowmove "$wid" "$XOFFSET" $((YOFFSET + BAR_HEIGHT)) ;;
w) xdotool windowmove "$wid" $((MONITOR_WIDTH + XOFFSET - 2 * GAP - WIDTH)) $((YOFFSET + BAR_HEIGHT)) ;;
a) xdotool windowmove "$wid" "$XOFFSET" $((MONITOR_HEIGHT + YOFFSET - 2 * GAP - HEIGHT)) ;;
s) xdotool windowmove "$wid" $((MONITOR_WIDTH + XOFFSET - 2 * GAP - WIDTH)) $((MONITOR_HEIGHT + YOFFSET - 2 * GAP - HEIGHT)) ;;
q) xdotool windowmove "$wid" "$XOFFSET" $((YOFFSET + BAR_HEIGHT))
;;
w) xdotool windowmove "$wid" $((MONITOR_WIDTH + XOFFSET - 2 * GAP - WIDTH)) $((YOFFSET + BAR_HEIGHT))
;;
a) xdotool windowmove "$wid" "$XOFFSET" $((MONITOR_HEIGHT + YOFFSET - 2 * GAP - HEIGHT))
;;
s) xdotool windowmove "$wid" $((MONITOR_WIDTH + XOFFSET - 2 * GAP - WIDTH)) $((MONITOR_HEIGHT + YOFFSET - 2 * GAP - HEIGHT))
;;
c) xdotool windowmove "$wid" "$X" "$Y" ;;
esac
fi

4
bin/.local/bin/wt

@ -9,8 +9,8 @@ get_location() {
# wttr.in to get the current weather
weather="$(curl -s "v2d.wttr.in/~$lat,$lng?format=%c%t\n")"
if ! printf '%s' "$weather" | grep -q "Unknown location"; then
echo "$weather"
if [ -n "$weather" ]; then
echo "%{T6}${weather%%+*}%{T}%{T4}${weather#*+}%{T}"
fi
}

13
browser/.config/tridactyl/scripts/requests.js

@ -2,26 +2,27 @@ const services = [
{
name: 'YouTube',
originalUrls: [
'https://www.youtube.com/*',
'https://*.youtube.com/*',
'https://tube.cadence.moe/watch?v=*',
'https://invidious.snopyta.org/watch?v=*'
],
alternativeHostname: 'invidious.snopyta.org'
alternativeHostname: 'tube.cadence.moe'
},
{
name: 'SoundCloud',
originalUrls: [ 'https://soundcloud.com/*' ],
alternativeHostname: 'soundcloud-redux.herokuapp.com',
disabled: true
},
{
name: 'Instagram',
originalUrls: [ 'https://www.instagram.com/*' ],
alternativeHostname: 'bibliogram.art',
alternativeHostname: 'bibliogram.snopyta.org',
},
{
name: 'Twitter',
originalUrls: [ 'https://*.twitter.com/*' ],
alternativeHostname: 'nitter.net'
alternativeHostname: 'nitter.nixnet.services'
},
{
name: 'Reddit',
@ -33,8 +34,9 @@ const services = [
// Process requests asynchronously
const webListener = (details, service) => {
let url = new URL(details.url)
if (url.hostname) url.hostname = service.alternativeHostname
const asyncRedirect = new Promise(resolve => {
url.hostname = service.alternativeHostname
if (service.name === 'Instagram' && !url.pathname.includes('/p')) {
url.pathname = '/u' + url.pathname
}
@ -45,6 +47,7 @@ const webListener = (details, service) => {
})
if (service.name === 'YouTube' && url.pathname.includes('/watch')) {
url.hostname = 'youtube.com'
tri.excmds.exclaim_quiet(`mpv ${url}`)
return asyncCancel
}

1
browser/.config/tridactyl/themes/tridactyl.css

@ -114,6 +114,7 @@ html.TridactylOwnNamespace.TridactylThemeTridactyl > body {
:root.TridactylThemeTridactyl #tridactyl-input {
height: 30px !important;
border-top: 1px solid transparent !important;
outline: none !important;
}
:root.TridactylThemeTridactyl#tridactyl-input:-moz-focusring {
outline: 0 !important;

60
browser/.config/tridactyl/tridactylrc

@ -111,12 +111,19 @@ bind A composite bmark; fillcmdline_tmp 1000 Removed bookmark
" Open with external programs
bind <Space>i composite hint -Jpipe img src | shellescape | !s tri -o
" bind <Space>o composite hint -Jpipe a href; js document.cookie + " " window.location | fillcmdline
bind <Space>o composite hint -Jpipe a href | shellescape | !s tri -o
"| !s tri -o
bind <Space>m composite hint -Jpipe a[class*="soundTitle__title"] href | shellescape | !s mpv --really-quiet
bind <Space>w composite hint -Jpipe img src | shellescape | !s tri -w
bind <Space>d composite hint -Jpipe a href | shellescape | !s tri -d
bind <Space>d composite hint -Jpipe a[class*="soundTitle__title"] href | shellescape | !s tri -d --m
"
" Quickmarks
"
quickmark l https://lemmy.ml
quickmark h https://news.ycombinator.com
quickmark r https://lobste.rs
quickmark c https://codeberg.org
quickmark g https://github.com
"
" Hints
@ -136,24 +143,6 @@ bindurl lemmy.ml f hint -Jc \
[title="Settings"], \
[title="Search"]
" Old Reddit
bindurl old.reddit.com f hint -Jc \
a[data-event-action="title"], \
a.subreddit, \
a.search-title, \
a.comments, \
a.search-comments, \
div[id="srDropdownContainer"] > a, \
div.drop-choices > .choice, \
ul.tabmenu > li > a, \
div.search-menu > div.dropdown, \
div.drop-choices > form > a, \
span > a.search-subreddit-link, \
p.tagline > a.expand, \
span.morecomments > a, \
.comment .usertext-body a, \
span.redditname > a
" Hacker News
bindurl news.ycombinator.com f hint -Jc \
span.pagetop > a, \
@ -175,7 +164,7 @@ bindurl who\.*\.* f hint -Jc \
.idg8be > a, \
span.BNeawe > a, \
span.kXUfPb > a, \
table.euZec td > a \
table.euZec td > a
"
" Autocontainers
@ -190,7 +179,8 @@ aucon -s facebook\.com facebook
" Search engines
"
jsb Object.keys(tri.config.get("searchurls")).reduce((prev, u) => prev.then(_ => tri.config.set("searchurls", u, null)), Promise.resolve())
" Disable default searchurls
jsb Object.keys(tri.config.get("searchurls")).reduce((prev, u) => prev.catch(() => {}).then(_ => tri.excmds.setnull("searchurls." + u)), Promise.resolve())
" Default
set searchurls.who https://who.parata.xyz/search?q=%s
@ -199,23 +189,9 @@ set searchengine who
" Blocklist
seturl \.xml$ noiframe true
" Remove default search engines
setnull searchurls.google
setnull searchurls.g
setnull searchurls.gs
setnull searchurls.googlelucky
setnull searchurls.googleuk
setnull searchurls.scholar
setnull searchurls.twitter
setnull searchurls.yahoo
setnull searchurls.youtube
setnull searchurls.amazon
setnull searchurls.amazonuk
setnull searchurls.bing
setnull searchurls.github
" Libraries
set searchurls.lg http://libgen.rs/search.php?req=%s&lg_topic=libgen&open=0&view=simple&res=25&phrase=1&column=def
set searchurls.zl https://1lib.eu/s/%s
" Package management
set searchurls.n https://www.npmjs.org/search?q=%s
@ -233,15 +209,9 @@ set searchurls.cr https://codeberg.org/%s1/%s2
" Media
set searchurls.pt https://sepiasearch.org/search?search=%s&sort=-match
set searchurls.yt https://www.youtube.com/search?q=%s
set searchurls.sc https://soundcloud.com/search?q=%s
set searchurls.ig https://www.instagram.com/%s
set searchurls.tw https://twitter.com/search?f=users&q=%s
set searchurls.to https://www.1377x.to/search/%s/1/
" Link aggregators
set searchurls.r https://reddit.com/search?q=%s
set searchurls.sr https://reddit.com/r/%s1/%s2
set searchurls.ss https://reddit.com/r/%s1/search?q=%s2&restrict_sr=on
set searchurls.l https://lemmy.ml/search/q/%s/type/All/sort/TopAll/page/1
set searchurls.lc https://lemmy.ml/c/%s

BIN
browser/.mozilla/firefox/profile/extensions/@react-devtools.xpi

BIN
browser/.mozilla/firefox/profile/extensions/tridactyl.vim@cmcaine.co.uk.xpi

BIN
browser/.mozilla/firefox/profile/extensions/uBlock0@raymondhill.net.xpi

BIN
browser/.mozilla/firefox/profile/extensions/{446900e4-71c2-419f-a6a7-df9c091e268b}.xpi

BIN
browser/.mozilla/firefox/profile/extensions/{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}.xpi

4
browser/.mozilla/firefox/profile/user.js

@ -324,8 +324,8 @@ user_pref("devtools.inspector.three-pane-enabled", false);
user_pref("devtools.whatsnew.feature-enabled", false);
user_pref("devtools.whatsnew.enabled", false);
// Dev tools dock to right
user_pref("devtools.toolbox.host", "right");
// Dev tools dock to bottom
user_pref("devtools.toolbox.host", "bottom");
// Dev tools fixed width
user_pref("devtools.toolbox.sidebar.width", 500);

2
chat/.config/sclirc

@ -1,6 +1,6 @@
open-command=xdg-open %u
enable-notifications=true
save-history=false
save-history=true
use-formatting=true
wrap-at=75
contacts-autohide=true

43
chat/.config/weechat/irc.conf

@ -201,46 +201,3 @@ freenode.msg_quit
freenode.notify
freenode.split_msg_max_length
freenode.charset_message
rizon.addresses = "irc.rizon.net/6697"
rizon.proxy
rizon.ipv6
rizon.ssl = on
rizon.ssl_cert
rizon.ssl_password
rizon.ssl_priorities
rizon.ssl_dhkey_size
rizon.ssl_fingerprint
rizon.ssl_verify
rizon.password
rizon.capabilities
rizon.sasl_mechanism
rizon.sasl_username
rizon.sasl_password
rizon.sasl_key
rizon.sasl_timeout
rizon.sasl_fail
rizon.autoconnect = on
rizon.autoreconnect
rizon.autoreconnect_delay
rizon.nicks = "unfission"
rizon.nicks_alternate
rizon.username
rizon.realname
rizon.local_hostname
rizon.usermode
rizon.command
rizon.command_delay
rizon.autojoin = "#rice"
rizon.autorejoin
rizon.autorejoin_delay
rizon.connection_timeout
rizon.anti_flood_prio_high
rizon.anti_flood_prio_low
rizon.away_check
rizon.away_check_max_nicks
rizon.msg_kick
rizon.msg_part
rizon.msg_quit
rizon.notify
rizon.split_msg_max_length
rizon.charset_message

BIN
chat/.config/weechat/weechat.conf

57
desktop/.config/bspwm/bspwmrc

@ -12,16 +12,37 @@ rs() {
{ sleep 0.1; "$@" & };
}
# Set wallpaper
if [ -e "$HOME"/pictures/wallpapers/wallpaper.jpg ]; then
hsetroot -fill $HOME/pictures/wallpapers/wallpaper.jpg
else
hsetroot -solid "#1c1e2b"
fi
# Autostart
au synclient TouchPadOff=1
au xinput disable "FTSC1000:00 2808:5113"
au setxkbmap -layout us,gb,es -option grp:shift_caps_toggle
au xrdb ${XDG_CONFIG_HOME:-$HOME/.config}/X11/xresources
au pl
au mbsync -c ~/.config/isync/mbsyncrc -a
au memcached
au mbsync -c ${XDG_CONFIG_HOME:-$HOME/.config}/isync/mbsyncrc -a
au unclutter -idle 2
au setxkbmap -layout us,gb,es \
-option grp:shift_caps_toggle
au xset -dpms s off
au picom
# Restart processes
rs sxhkd
rs wm subscribe
rs xsetroot -cursor_name left_ptr
rs mpd --no-daemon
rs mpd-mpris
rs dunst
rs playerctld
rs transmission-daemon
# Listen on IMAP mailbox changes
for mailbox in work personal uni websols; do
for mailbox in work personal uni; do
if ! pgrep -a -f "goimap.*${mailbox}" >/dev/null; then
goimapnotify -conf ${XDG_CONFIG_HOME:-$HOME/.config}/imapnotify/imapnotify_${mailbox}.conf &
fi
@ -37,29 +58,14 @@ done
! pgrep -x "seaf-daemon" &&
seaf-cli start -c $XDG_CONFIG_HOME/seafile/ccnet
# Set wallpaper
[ -e "$HOME"/pictures/wallpapers/wallpaper.jpg ] &&
hsetroot -fill $HOME/pictures/wallpapers/wallpaper.jpg ||
hsetroot -solid "#1c1e2b"
# Kill and autostart
rs wm subscribe
rs xsetroot -cursor_name left_ptr
rs mpd --no-daemon
rs mpd-mpris
rs picom
rs dunst
rs sxhkd
rs playerctld
# Basic settings
_ top_padding 22
_ top_monocle_padding 0
for side in top bottom left right; do
_ -d focused "$side"_padding 30
_ -d focused "$side"_padding 0
done
_ border_width 2
_ window_gap 30
_ window_gap 15
_ split_ratio 0.5
_ borderless_monocle true
_ gapless_monocle false
@ -72,14 +78,15 @@ _ pointer_action1 move
_ pointer_action2 resize_side
_ pointer_action3 resize_corner
_ normal_border_color '#12141E'
_ active_border_color '#545c8c'
_ focused_border_color '#545c8c'
_ presel_feedback_color '#545c8c'
_ active_border_color '#5F6FAB'
_ focused_border_color '#5F6FAB'
_ presel_feedback_color '#5F6FAB'
# Rules
br Zathura state=tiled desktop='any.!occupied' center=on follow=on
br Zathura state=tiled follow=off
br Yad state=floating border=off
br mpv state=floating center=on
br imv state=floating border=off
br feh state=floating border=off
br "Signal Beta" state=floating desktop='any.!occupied' center=on rectangle=1000x600+0+0
br Emacs state=tiled

187
desktop/.config/polybar/config.ini

@ -40,9 +40,10 @@ font-2 = "Iosevka Nerd Font:size=7.5;2"
font-3 = "Iosevka Custom:size=8;2"
font-4 = "icomoon:size=13;3"
font-5 = "icomoon:size=10;3"
font-6 = "Noto Color Emoji:scale=12;2"
modules-left = acc-start launcher acc-right bspwm title end start-float player-mpris-tail ctl end
modules-right = start input alsa_toggle vpn bluetooth wm_preset mail pkgs weather end-float start audio_input audio battery xkeyboard network date acc-left powermenu acc-end
modules-right = start input auto_mute vpn bluetooth wm_preset mail pkgs weather end-float start audio_input audio_output brightness battery xkeyboard network date acc-left powermenu acc-end
spacing = 0
dim-value = 1.0
@ -198,47 +199,8 @@ exec = ctl -get
format-background = ${color.bground}
format-foreground = ${color.fground}
format-font = 4
format-padding = 1
interval = 1
[module/mpd]
type = internal/mpd
host = 127.0.0.1
port = 6600
icon-play = "契 "
icon-pause = " "
icon-stop = " "
icon-prev = " 玲"
icon-next = "怜 "
icon-seekb = "丹 "
icon-seekf= " "
icon-random = " "
icon-repeat = "%{T4}凌%{T-} "
icon-single = "%{T4}綾 %{T-}"
toggle-on-foreground = ${color.accent}
toggle-off-foreground = ${color.fground}
format-padding = 0
interval = 1
format-online-background = ${color.bground}
format-online-foreground = ${color.fground}
format-online-padding = 1
format-online-font = 2
format-online = "<icon-prev> <icon-seekb> <toggle> <icon-seekf> <icon-next> <icon-stop> <icon-single> <icon-repeat> <label-song> <label-time> %{A4:playerctl position 15+:}%{A5:playerctl position 15-:}<bar-progress>%{A}%{A}"
label-song = "%artist:0:10:...% - %title:0:10:...%"
label-song-maxlen = 50
label-song-ellipsis = true
label-song-font = 4
label-time = %elapsed% - %total%
label-time-font = 4
bar-progress-format = "%fill%%indicator%%empty%"
bar-progress-width = 5
bar-progress-indicator =
bar-progress-fill = %{F#5F6FAB}%{T4}━%{F-}%{T-}
bar-progress-empty = %{T4}━%{T-}
[module/pkgs]
type=custom/script
@ -250,123 +212,97 @@ format-foreground = ${color.fground}
interval = 60
[module/wm_preset]
type=custom/script
label = %{T4}%output%%{T-}
exec = wm --pre --query
format-padding = 1
type=custom/ipc
hook-0 = wm --pre --query
initial = 1
format = <output>
format-padding = 2
format-font = 4
format-background = ${color.bground}
format-foreground = ${color.fground}
interval = 1
scroll-up = wm --pre --more
scroll-down = wm --pre --less
click-left = wm --pre
[module/mail]
type =custom/script
exec = onm --count
label = %output%
label-font = 4
label-padding = 1
type =custom/ipc
hook-0 = onm --count
initial = 1
format = <output>
format-font = 4
format-padding = 1
format-background = ${color.bground}
format-foreground = ${color.fground}
interval = 10
click-left = ro --mail
click-right = onm --summary
[module/input]
type=custom/script
exec = inp
label = %output%
label-font = 4
type=custom/ipc
hook-0 = inp
initial = 1
format = <output>
format-font = 4
format-padding = 1
format-background = ${color.bground}
format-foreground = ${color.fground}
interval = 1
[module/bluetooth]
type = custom/script
exec = au -bt
label = %output%
label-font = 4
type = custom/ipc
hook-0 = au -bt
initial = 1
format = <output>
format-font = 4
format-padding = 1
format-background = ${color.bground}
format-foreground = ${color.fground}
interval = 1
click-left = au -bt --toggle
[module/alsa_toggle]
type = custom/script
exec = au -am
[module/auto_mute]
type = custom/ipc
hook-0 = au -am
click-left = au -am --toggle
label = %output%
label-font = 4
initial = 1
format = <output>
format-font = 4
format-background = ${color.bground}
format-foreground = ${color.fground}
format-padding = 1
interval = 1
[module/audio_input]
type = custom/script
exec = au -in --get
type = custom/ipc
hook-0 = au -in
initial = 1
click-right = au -in --toggle
click-left = au -in --mute
scroll-up = au -in --vol-up
scroll-down = au -in --vol-down
label = %output%
label-font = 4
format = <output>
format-font = 4
format-background = ${color.bground}
format-foreground = ${color.fground}
format-padding = 1
interval = 1
[module/alsa]
type = internal/alsa
master-soundcard = default
speaker-soundcard = default
headphone-soundcard = default
master-mixer = Master
speaker-mixer = Speaker
headphone-mixer = Headphone
headphone-id = 19
mapped = true
format-volume = <ramp-volume> <bar-volume> <label-volume>
format-volume-font = 4
label-volume = %{T4}%percentage:3%%%{T}
format-volume-background = ${color.bground}
bar-volume-format = %fill%%indicator%%empty%
bar-volume-width = 10
bar-volume-foreground = ${color.fground}
bar-volume-indicator=
bar-volume-indicator-font = 4
bar-volume-empty =
bar-volume-fill = %{F#5F6FAB}━
format-muted = <label-muted>
format-volume-padding = 1
format-muted-background = ${color.bground}
bar-muted-format = %indicator%%empty%
label-muted = 婢%{F#9A9FBB} ━━━━━━━━━━━ %{F-} 0%
label-muted-font = 4
format-muted-padding = 1
ramp-volume-0 =
ramp-volume-1 = 奔
ramp-volume-2 =
[module/audio]
type = custom/script
exec = au -vol-bar
label = %output%
format = <label>
[module/audio_output]
type = custom/ipc
hook-0 = au -out
initial = 1
format = <output>
format-font = 4
format-background = ${color.bground}
format-foreground = ${color.fground}
format-padding = 1
interval = 1
[module/brightness]
type = custom/ipc
hook-0 = mon -b get
initial = 1
format = <output>
format-font = 4
format-padding = 1
format-background = ${color.bground}
format-foreground = ${color.fground}
scroll-up = mon -b in
scroll-down = mon -b dec
[module/battery]
type = internal/battery
@ -375,6 +311,7 @@ battery = BAT0
adapter = ACAD
poll-interval = 2
time-format = %H:%M
format-font = 4
bar-capacity-width = 6
bar-capacity-foreground = ${color.fground}
@ -383,7 +320,7 @@ bar-capacity-indicator-font = 4
bar-capacity-empty =
bar-capacity-fill = %{F#5F6FAB}━%{F-}
format-charging = <ramp-capacity> <bar-capacity> <label-charging>
format-charging = <animation-charging> <bar-capacity> <label-charging>
format-charging-background = ${color.bground}
format-charging-foreground = ${color.fground}
format-charging-padding = 1
@ -448,13 +385,12 @@ exec = wt --get
label = %output%
format-background = ${color.bground}
format-foreground = ${color.fground}
format-padding = 1
format-font = 4
format-padding = 0
format-font = 7
interval = 60
[module/date]
type = internal/date
interval = 1.0
time =  %A %d %B  %H:%M
format = %{A1:ypc --popup &:}<label>%{A}
format-background = ${color.bground}
@ -486,12 +422,11 @@ label-layout-foreground = ${color.fground}
click-left = xkb-switch -n
[module/vpn]
type = custom/script
exec = ro -vpn --get
interval = 2
type = custom/ipc
hook-0 = ro -vpn --get
initial = 1
click-left = ro -vpn --toggle
label = %output%
format = <label>
format = <output>
format-padding = 1
format-foreground = ${color.fground}
format-background = ${color.bground}

4
desktop/.config/rofi/config.rasi

@ -35,9 +35,9 @@ configuration {
show-match: true;
matching-negate-char: '-';
display-run: "";
display-window: "";
display-window: "";
display-ssh: "曆";
display-drun: "";
display-drun: "";
display-keys: "";
display-file-browser-extended: "";
kb-primary-paste: "Control+V,Shift+Insert";

2
desktop/.config/rofi/launchers/shared.rasi

@ -1,5 +1,5 @@
configuration {
font: "Iosevka Custom 12";
font: "Iosevka Nerd Font 12";
}
// Settings used in all Rofi launcher menus
@theme "global"

2
desktop/.config/rofi/menus/utils.rasi

@ -11,7 +11,7 @@ configuration {
#window {
height: 110px;
width: 430px;
width: 487px;
children: [ listview ];
}

9
display/.config/X11/xinitrc

@ -1,12 +1,7 @@
#!/bin/sh
# Start PulseAudio
[ "$(command -v pulseaudio)" >/dev/null 2>&1 ] && start-pulseaudio-x11 &
# Disable input devices
synclient TouchpadOff=1
xinput disable "FTSC1000:00 2808:5113" &
[ -f ${XDG_CONFIG_HOME:-$HOME/.config}/X11/xresources ] &&
xrdb ${XDG_CONFIG_HOME:-$HOME/.config}/X11/xresources
# Start pulseaudio daemon
start-pulseaudio-x11 &
# Launch window manager with a session bus
[ "$(command -v bspwm)" >/dev/null 2>&1 ] &&

57
editor/.config/emacs/init.el

@ -0,0 +1,57 @@
;; -*-mode: elisp -*-
;; Disable the splash screen (to enable it again, replace the t with 0)
(setq inhibit-splash-screen t)
;; Enable transient mark mode
(transient-mark-mode 1)
;; Appearance
(set-face-attribute 'default nil :font "Iosevka Custom-10.5")
(set-face-attribute 'fixed-pitch nil :font "Iosevka Custom-10.5")
(set-face-attribute 'variable-pitch nil :font "Iosevka Custom-10.5")
(setq-default indent-tabs-mode nil)
(setq-default tab-width 2)
(setq indent-line-function 'insert-tab)
;; Mappings
(global-set-key "\C-ca" 'org-agenda)
;; Visual line mode
(add-hook 'text-mode-hook #'turn-on-visual-line-mode)
;; Hide the fringes
(set-face-attribute 'fringe nil :background nil)
;;;;Org mode configuration
;; Enable Org mode
(require 'org)
;; Enable Org Tempo
(require 'org-tempo)
;; Append list of languages for Org-Babel code evaluation
(org-babel-do-load-languages
'org-babel-load-languages
'((js . t)
(lua . t)))
;; Fix org-babel-js code evaluation
(setq org-babel-js-function-wrapper
"process.stdout.write(require('util').inspect(function(){\n%s\n}(), { maxArrayLength: null, maxStringLength: null, breakLength: Infinity, compact: true }))")
;; Add workflow states to Org files
(setq org-todo-keywords
'((sequence "TODO" "IN-PROGRESS" "WAITING" "DONE")))
;; Make Org mode work with files ending in .org
;; (add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
;; The above is the default in recent emacs
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(org-agenda-files '("~/documents/notes/dev/emacs/basics.org")))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

2
editor/.config/nvim/settings/core.vim

@ -6,7 +6,7 @@ if has('nvim')
echoerr "Error"
execute "q!"
endif
silent exec "!\curl -fLo ".vimplug_cfg." --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"
silent exec "!\curl -fLo " . vimplug_cfg . " --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"
aug plug_install
au!
autocmd VimEnter * PlugInstall --sync | source '$HOME/.config/nvim/init.vim'

6
editor/.config/nvim/settings/plugins.vim

@ -44,6 +44,8 @@ call plug#begin('$XDG_DATA_HOME/nvim/plugged')
Plug 'mattn/emmet-vim'
" Plugin: colorscheme
Plug 'wadackel/vim-dogrun'
" Plugin: Pug (formerly Jade) syntax highlighting as nvim-treesitter doesn't provide a parser yet
Plug 'digitaltoad/vim-pug'
call plug#end()
"
@ -231,9 +233,9 @@ fun! s:defx_keymaps() abort
\ defx#is_directory() ? defx#do_action('open_or_close_tree') : defx#do_action('drop')
nnoremap <silent><buffer><expr> K
\ defx#do_action('new_directory')
nnoremap <silent><buffer><expr> n
\ defx#do_action('new_file')
nnoremap <silent><buffer><expr> N
\ defx#do_action('new_file')
nnoremap <silent><buffer><expr> M
\ defx#do_action('new_multiple_files')
nnoremap <silent><buffer><expr> d
\ defx#do_action('remove')

fs/.config/mimeapps.list → file/.config/mimeapps.list

fs/.config/user-dirs.conf → file/.config/user-dirs.conf

fs/.config/user-dirs.dirs → file/.config/user-dirs.dirs

fs/.config/vifm/colors/vifm.vifm → file/.config/vifm/colors/vifm.vifm

fs/.config/vifm/scripts/vifmimg → file/.config/vifm/scripts/vifmimg

fs/.config/vifm/scripts/vifmrun → file/.config/vifm/scripts/vifmrun

fs/.config/vifm/vifmrc → file/.config/vifm/vifmrc

55
gui/.config/gtk-3.0/dist/button.css

@ -1,9 +1,4 @@
/* General buttons */
.titlebar button {
-gtk-icon-shadow: none;
box-shadow: none;
border: 1px solid #1C1E2B;
}
box button:hover {
background: #1C1E2B;
color: #9A9FBB;
@ -19,20 +14,28 @@ widget button {
widget button:hover {
background: #1C1E2B;
}
stack box button:not(:checked),
stack box > button:not(:checked),
.titlebar button:not(:checked),
row button:not(:checked),
button.file:not(:checked),
button.lock:not(:checked),
button.image-button:not(:checked),
button.text-button:not(:checked),
button.toggle:not(:checked)
button.slider-button:not(:checked) {
-gtk-icon-shadow: none;
background: none;
color: #9A9FBB;
border: 1px solid #1C1E2B;
outline: none;
box-shadow: none;
text-shadow: none;
}
stack box button:hover:not(:checked),
.titlebar button:hover:not(:checked),
row button:hover:not(:checked),
button.file:hover:not(:checked),
button.lock:hover:not(:checked),
button.image-button:hover:not(:checked),
button.text-button:hover:not(:checked),
@ -47,6 +50,15 @@ button:checked {
image {
color: #9A9FBB;
}
image:disabled {
color: #424456;
}
row:selected image {
color: #2A2D41;
}
row:selected button:hover {
background: none;
}
button image {
-gtk-icon-effect: none;
-gtk-icon-shadow: none;
@ -67,6 +79,16 @@ header button {
box-shadow: none;
}
button.color colorswatch,
colorswatch overlay {
box-shadow: none;
border: none;
}
filechooser widget button {
border: 1px solid #1C1E2B;
}
/* Comboboxes */
combobox entry,
combobox box,
@ -100,19 +122,23 @@ radiobutton radio:checked {
background: #5F6FAB;
color: #2A2D41;
}
radiobutton box {
background: none;
border-color: #9A9FBB;
}
/* Checkboxes */
checkbutton {
outline: none;
}
checkbutton check,
modelbutton check,
check,
modelbutton radio {
background: #1C1E2B;
color: #9A9FBB;
border: none;
}
checkbutton check:checked,
modelbutton check:checked,
checkbutton check:checked,
modelbutton check:checked,
treeview check:checked,
modelbutton radio:checked {
background: #5F6FAB;
color: #2A2D41;
@ -128,9 +154,11 @@ radio:not(:checked) {
/* Label */
label {
background: none;
text-shadow: none;
}
label.keycap {
box-shadow: 0 -3px #1C1E2B inset;
border-color: #1C1E2B;
}
label link:link {
color: #5F6FAB;
@ -143,8 +171,10 @@ label link:link {
spinbutton {
box-shadow: none;
}
spinbutton button, spinbutton:disabled button {
spinbutton button {
background: #1C1E2B;
-gtk-icon-shadow: none;
border: none;
}
spinbutton:not(:disabled) {
background: #1C1E2B;
@ -154,6 +184,9 @@ spinbutton:not(:disabled) {
spinbutton:disabled {
color: #424456;
}
spinbutton:not(:disabled) button {
color: #9A9FBB;
}
/* Switches */
switch {

36
gui/.config/gtk-3.0/dist/container.css

@ -1,4 +1,4 @@
window.background.solid-csd {
window.background {
background: #12141E;
color: #9A9FBB;
}
@ -11,23 +11,28 @@ decoration {
.titlebar {
backgrou