Squashed commit of the following:

commit 74cc8fa92e
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Fri Jan 24 12:45:49 2020 -0600

    MIC SCRIPT

commit dbd88dde4b
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Thu Jan 23 12:38:19 2020 -0600

    Mic script, amd stuff, more fish fixes

commit dadb7da642
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Thu Jan 23 09:51:03 2020 -0600

    Remove more generated fish stuff, more fixes

commit b09a25cc17
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Wed Jan 22 17:25:47 2020 -0600

    More fixes to various things

commit 58f6626280
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Wed Jan 22 08:34:12 2020 -0600

    Updates

commit 00e919f7f5
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Jan 20 14:28:45 2020 -0600

    Fix notes and add vim pager

commit 5100983350
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Jan 20 14:01:06 2020 -0600

    More fixes and cleanup

commit 85eab2155c
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Jan 20 13:09:31 2020 -0600

    More notes

commit da496b7f0c
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Jan 20 12:43:55 2020 -0600

    Maybe actually fix colors?

commit 3c11353256
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Jan 20 12:32:23 2020 -0600

    Colors fixed?

commit f2a5060e7d
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Jan 20 11:40:26 2020 -0600

    Things

commit f44d0d5479
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Jan 20 10:54:09 2020 -0600

    Kitty colors

commit 5f0fa76a67
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Jan 20 10:49:06 2020 -0600

    More updates for fish migration

commit 5b05be9fe7
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Jan 20 09:14:08 2020 -0600

    Nah

commit fe0f1d8e32
Merge: 52fe38f 205c12a
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Jan 20 09:13:09 2020 -0600

    Merge branch 'dev' of ssh://git.lyte.dev:2222/lytedev/dotfiles into dev

commit 52fe38f42a
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Jan 20 09:12:52 2020 -0600

    More fish fixes

commit 205c12a051
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Sat Jan 18 23:15:13 2020 -0600

    WIP

commit b73c4b26a4
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Fri Jan 17 10:36:20 2020 -0600

    Remove debug code, fix asdf references for fish

commit d6ecaf88be
Merge: 2e6b90b 46793bb
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Fri Jan 17 10:34:01 2020 -0600

    Merge remote-tracking branch 'origin/lappy' into dev

commit 2e6b90bed3
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Fri Jan 17 10:26:00 2020 -0600

    Pulsemixer > pavucontrol and some sway fixes

commit 46793bb735
Author: Daniel Flanagan <daniel@lyte.dev>
Date:   Fri Jan 17 03:02:53 2020 -0600

    Whew

commit 26f32a0c6b
Author: Daniel Flanagan <daniel@lyte.dev>
Date:   Thu Jan 16 17:01:59 2020 -0600

    WIP fish configuration

commit fb0389eea4
Author: Daniel Flanagan <daniel@lyte.dev>
Date:   Thu Jan 16 13:30:35 2020 -0600

    Fiiiish

commit 2f1af8411a
Author: Daniel Flanagan <daniel@lyte.dev>
Date:   Thu Jan 16 13:28:23 2020 -0600

    Stuff

commit ba8ec1f524
Author: Daniel Flanagan <daniel@lyte.dev>
Date:   Thu Jan 9 19:02:31 2020 -0600

    Fix some dock stuff, erlang with wx

commit d80a823ce2
Merge: 36d58e0 5195a85
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Wed Jan 8 13:32:56 2020 -0600

    Merge remote-tracking branch 'origin/lappy' into wip-refactor

commit 36d58e037f
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Wed Jan 8 10:59:45 2020 -0600

    Testing signed commits

commit 5195a855a6
Author: Daniel Flanagan <daniel@lyte.dev>
Date:   Tue Jan 7 19:38:43 2020 -0600

    Bars

commit 1acb330746
Author: Daniel Flanagan <daniel@lyte.dev>
Date:   Tue Jan 7 11:36:12 2020 -0600

    SWAAAAAY

commit f547e5ec28
Merge: aa29acb b1709d1
Author: Daniel Flanagan <daniel@lyte.dev>
Date:   Tue Jan 7 10:59:24 2020 -0600

    Merge remote-tracking branch 'origin/wip-refactor' into lappy

commit b1709d1e94
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Tue Jan 7 10:59:22 2020 -0600

    Stuff

commit aa29acb364
Merge: 66cc873 2456dad
Author: Daniel Flanagan <daniel@lyte.dev>
Date:   Tue Jan 7 10:58:29 2020 -0600

    Merge remote-tracking branch 'origin/wip-refactor' into lappy

commit 2456dad7de
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Jan 6 11:15:30 2020 -0600

    Zstd

commit 66cc8734a8
Author: Daniel Flanagan <daniel@lyte.dev>
Date:   Tue Dec 31 21:48:49 2019 -0600

    Fix sudo setup and use fancy email for git

commit a05c02e1fb
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Tue Dec 31 17:03:22 2019 -0600

    Fancy colors

commit 026220fe26
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Tue Dec 31 16:55:45 2019 -0600

    SMTP tools

commit e2a854df65
Merge: 0d0e131 825d91b
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Tue Dec 31 15:07:09 2019 -0600

    Merge branch 'wip-refactor' into lappy

commit 0d0e131714
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Tue Dec 31 14:26:44 2019 -0600

    Stuff

commit 825d91b462
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Tue Dec 31 10:15:01 2019 -0600

    Utility updates

commit ae350894af
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Dec 30 10:02:14 2019 -0600

    Lul.

commit ea5debe38c
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Dec 16 17:21:44 2019 -0600

    WIP chat system

commit c40fe94b70
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Dec 16 09:57:21 2019 -0600

    Add weechat config

commit 76e8a68c34
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Dec 16 09:51:21 2019 -0600

    Preparing for weechat stuf

commit 25aecdc139
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Fri Dec 13 11:32:15 2019 -0600

    Goodies?

commit 8d1e86feb4
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Thu Dec 12 13:31:18 2019 -0600

    Logging for pipelines?

commit b81bdf6abd
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Thu Dec 12 13:17:20 2019 -0600

    errors break things?

commit 6f7d80d761
Merge: 7659442 bc5ce9e
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Thu Dec 12 13:04:52 2019 -0600

    Merge branch 'master' of ssh://git.lyte.dev:2222/lytedev/dotfiles

commit 76594427ff
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Thu Dec 12 13:00:03 2019 -0600

    Pipelines!

commit 972508e74d
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Thu Dec 12 11:02:24 2019 -0600

    WIP pipeline

commit 898848669c
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Fri Dec 6 10:08:42 2019 -0600

    Archive

commit 16895af798
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Thu Dec 5 16:09:52 2019 -0600

    Helpful bins

commit 3a8eb5d475
Author: Daniel Flanagan <daniel@lytedev.io>
Date:   Mon Dec 2 09:31:28 2019 -0600

    Move a lot of stuff around
This commit is contained in:
Daniel Flanagan 2020-01-24 12:46:51 -06:00
parent bc5ce9e725
commit 2dda9880d5
Signed by: lytedev
GPG Key ID: 5B2020A0F9921EF4
180 changed files with 4020 additions and 1164 deletions

17
.gitignore vendored
View File

@ -1,9 +1,18 @@
colors/gen/vendor
colors/gen/tmp
*.lock
*.log
*.pid
*.tmp
*.secret
/.repositories
/.env/
# TODO: should be unnecessary once color generation is homegrown
/colors/gen/vendor
/colors/gen/tmp
# keep the pipelines but hide their results
/bin/pipelines/*/*/*
# a place to keep secrets per-env
/env/*/.hidden
# ... and a place to keep shared secrets
/env/.hidden

View File

@ -1,7 +1,6 @@
MAKEFILE_PATH ?= $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
ALERT_AGREEMENT_FILE ?= "$(MAKEFILE_PATH)/.agreed-to-erasing-files.lock"
default: install
install:
./setup
cd ${MAKEFILE_PATH} && ./setup.bash

View File

@ -1,21 +1,17 @@
#!/usr/bin/env bash
#!/usr/bin/env sh
BORDER_WIDTH=5 # change in bspwmrc
export WINDOW_GAP=25
DESKTOPS=(dev web gfx env play chat misc mon out util)
export WINDOW_GAP=0
NUM_DESKTOPS=10
DESKTOPS=$(seq "$NUM_DESKTOPS")
BSPWM_MONITORS=$(bspc query -M | tac)
MONITOR_COUNT=$(echo "${BSPWM_MONITORS}" | wc -w | awk '{ printf $1 }')
NUM_DESKTOPS=${#DESKTOPS[@]}
MONITOR_COUNT=$(<<< "$BSPWM_MONITORS" wc -w | awk '{ printf $1 }')
PER_MONITOR=$((NUM_DESKTOPS / MONITOR_COUNT))
REVERSE_DESKTOP_ORDERING=0
REVERSE_DESKTOP_ORDERING=${REVERSE_DESKTOP_ORDERING:-0}
# allow a per-device config to override options
if [ -f "$EDFP/bspwm" ]; then
source "$EDFP/bspwm"
fi
. maybe_source_env_file bspwm
bspc config normal_border_color "$(xrdb -query | sed -ne 's/.*background:\s*//p')"
bspc config normal_border_color "$(xrdb -query | sed -ne 's/.*background:\s*//p')"
bspc config focused_border_color "$(xrdb -query | sed -ne 's/.*color0\?4:\s*//p')"
bspc config active_border_color "$(xrdb -query | sed -ne 's/.*color0\?4:\s*//p')"
bspc config presel_feedback_color "$(xrdb -query | sed -ne 's/.*color0\?4:\s*//p')"
@ -26,34 +22,29 @@ bspc config gapless_monocle true
bspc config pointer_modifier "mod4"
bspc config remove_unplugged_monitors true
bspc config remove_disabled_monitors true
bspc config window_gap "$WINDOW_GAP"
bspc config window_gap "$WINDOW_GAP"
bspc rule -a "*" split_dir=right
i=1
for mon in ${BSPWM_MONITORS}; do
for mon in $BSPWM_MONITORS; do
max=$((i + PER_MONITOR - 1))
screens=
for j in $(seq $i $max); do
ind=${DESKTOPS[$((j - 1))]}
screens="${screens}${ind} "
screens="${screens}${j} "
done
bspc monitor "$mon" -d $screens
i=$((max + 1))
done
if [[ $REVERSE_DESKTOP_ORDERING -eq 1 ]]; then
if [ $REVERSE_DESKTOP_ORDERING -eq 1 ]; then
prev_mon=
for mon in ${BSPWM_MONITORS}; do
if [[ ! -z $prev_mon ]]; then
if [ ! -z $prev_mon ]; then
bspc monitor "$mon" --swap "$prev_mon"
fi
prev_mon="$mon"
done
fi
# allow a per-device config to override options
if [ -f "$EDFP/bspwm-after" ]; then
source "$EDFP/bspwm-after"
fi
. maybe_source_env_file bspwm-after

26
apps/de/bspwm/rc Executable file
View File

@ -0,0 +1,26 @@
#!/usr/bin/env sh
NO_COMPTON=1
START_BAR=1
BAR_COMMAND="startbar"
BSPWM_STATE_FILE="$HOME/.bspwm_state"
if [ -e "$BSPWM_STATE" ] ; then
bspc wm -l "$BSPWM_STATE"
rm "$BSPWM_STATE"
fi
export BORDER_WIDTH=5
. "$DOTFILES_PATH/apps/de/bspwm/config"
[ -f "$DOTFILES_PATH/apps/de/x/loadresources" ] && "$DOTFILES_PATH/apps/de/x/loadresources"
[ -f "$HOME/.fehbg" ] && "$HOME/.fehbg" &
[ "$NO_COMPTON" -ne 1 ] && has_command compton && compton &
[ "$START_BAR" -eq 1 ] && has_command "${BAR_COMMAND}" && "${BAR_COMMAND}" &
has_command urxvtd && urxvtd &
has_command dunst && dunst &
has_command sxhkd && sxhkd -m -1 &
has_command unclutter && unclutter &
bspc wm -o

3
apps/de/bspwm/wmstart Executable file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
bspwm

View File

@ -1,3 +1,3 @@
gtk-icon-theme-name = "elementary"
gtk-theme-name = "Arc-Dark"
gtk-font-name = "Iosevka 9"
gtk-font-name = "Iosevka Type 10"

View File

@ -1,5 +1,5 @@
[Settings]
gtk-icon-theme-name = elementary
gtk-theme-name = Arc-Dark
gtk-font-name = Iosevka 9
gtk-font-name = Iosevka Type 10
gtk-application-prefer-dark-theme = true

View File

@ -5,4 +5,5 @@ Section "InputClass"
MatchIsTouchpad "on"
Option "Tapping" "on"
Option "NaturalScrolling" "true"
Option "DisableWhileTyping" "false"
EndSection

4
apps/de/mako/config Normal file
View File

@ -0,0 +1,4 @@
max-visible=5
default-timeout=30000
background-color=#111111
border-color=#666666

View File

@ -102,16 +102,16 @@ format-mounted-prefix-foreground = ${colors.icon}
; ########################### ;
[module/bspwm]
ws-icon-0 = dev;
ws-icon-1 = web;
ws-icon-2 = gfx;
ws-icon-3 = env;
ws-icon-4 = play;
ws-icon-5 = chat;
ws-icon-6 = out;
ws-icon-7 = mon;
ws-icon-8 = misc;
ws-icon-9 = util;
ws-icon-0 = 1;
ws-icon-1 = 2;
ws-icon-2 = 3;
ws-icon-3 = 4;
ws-icon-4 = 5;
ws-icon-5 = 6;
ws-icon-6 = 7;
ws-icon-7 = 8;
ws-icon-8 = 9;
ws-icon-9 = 10;
ws-icon-default = ♟
; misc icon: 
@ -387,7 +387,7 @@ margin-bottom = ${env:WINDOW_GAP:0}
[module/microphone]
type = custom/script
exec = $DOTFILES_PATH/de/bar/mic.bash
exec = $DOTFILES_PATH/apps/de/polybar/mic.sh
tail = true
format = <label>
label-foreground = ${colors.icon}

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash
#!/usr/bin/env sh
pidfile="/var/run/user/$UID/polybar-mic-script.pid"
pidfile="/var/run/user/$(id -u)/polybar-mic-script.sh.pid"
if [ -e "$pidfile" ]; then
kill "$(cat "${pidfile}")" > /dev/null 2>&1
@ -13,9 +13,11 @@ cleanup() {
print_status() {
if amixer get Capture | grep -q '\[off\]'; then
echo ""
# red means recording
echo "%{F$(xrdb -query | grep -Po 'color4:.*#\K\w[0-9a-f]+')}"
else
echo " "
# blue means nobody can hear you scream
echo "%{F$(xrdb -query | grep -Po 'color1:.*#\K\w[0-9a-f]+')}"
fi
}

View File

@ -1,12 +1,12 @@
#!/usr/bin/env bash
#!/usr/bin/env sh
export BAR_MONITOR="$(polybar --list-monitors | tail -n 1 | sed -n 's/^\s*\(.*\):.*$/\1/p')"
# export BAR_MONITOR="$(polybar --list-monitors | tail -n 2 | head -n 1 | sed -n 's/^\s*\(.*\):.*$/\1/p')"
export BAR_HEIGHT=40
export BAR_ON_TOP=0
export BAR_SIDE_MARGIN=200
export BAR_SIDE_MARGIN=0
export BAR_FONT="${BAR_FONT:-$(xrdb -query | sed -ne 's/.*font:\s*xft:\([^:]*\)\:.*$/\1/p' | head -n 1)}"
export BAR_FONT="${BAR_FONT:-$(xrdb -query | sed -ne 's/.*font:\s*xft:\([^:]*\)\:.*$/\1/p' | head -n 1)}"
export BAR_ICON_FONT="${BAR_ICON_FONT:-"Font Awesome 5 Free"}"
export BAR_FONT_SIZE="${BAR_FONT_SIZE:-$(xrdb -query | sed -ne 's/.*font:\s*xft:[^-,]*\=\([0-9]*\).*$/\1/p' | head -n 1)}"
export BAR_ICON_FONT_SIZE="${BAR_ICON_FONT_SIZE:-$((BAR_FONT_SIZE))}"
@ -21,11 +21,7 @@ export BAR_BOTTOM="false"
export BAR_VERTICAL_MARGIN=0
export POS_Y=0
# allow a per-device config to override options
echo "$EDFP"
if [ -f "$EDFP/bar" ]; then
source "$EDFP/bar"
fi
. maybe_source_env_file polybar
export MONITOR_WIDTH=$(xrandr | grep "^$BAR_MONITOR " | grep -Po ' \d+' | head -n 1)
@ -45,12 +41,12 @@ fi
if [ "$BAR_ON_TOP" -eq 1 ]; then
export BAR_BOTTOM="false"
export POS_Y=$GAP
export POS_Y="$GAP"
bspc config -m "${BAR_MONITOR}" top_padding "$EHEIGHT"
bspc config -m "${BAR_MONITOR}" bottom_padding "0"
else
export BAR_BOTTOM="true"
export POS_Y=$GAP
export POS_Y="$GAP"
bspc config -m "${BAR_MONITOR}" top_padding "0"
bspc config -m "${BAR_MONITOR}" bottom_padding "$EHEIGHT"
fi

131
apps/de/sway/config Normal file
View File

@ -0,0 +1,131 @@
set $mod Mod4
set $left h
set $down j
set $up k
set $right l
set $term kitty
# TODO: launcher for wayland
# set $menu app-launcher
set $menu dmenu_path | dmenu | xargs swaymsg exec --
output * bg $HOME/.wallpaper fill
# TODO: configured displays?
output eDP-1 res 3200x1800 pos 0 0 scale 2
# output DP-3 res 3440x1440 pos 1600 0
### Input configuration
#
# Example configuration:
#
#input "2:14:SynPS/2_Synaptics_TouchPad" {
# dwt enabled
# tap enabled
# natural_scroll enabled
# middle_emulation enabled
#}
#
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Read `man 5 sway-input` for more information about this section.
bindsym $mod+Return exec $term
bindsym $mod+t exec $term
bindsym $mod+c kill
bindsym $mod+Space exec $menu
bindsym $mod+Shift+r reload
bindsym $mod+Control+Escape exit
bindsym $mod+Shift+e exit
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# TODO: this should nudge if floating?
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus 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+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
floating_modifier $mod normal
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10
bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10
bindsym $mod+b splith
bindsym $mod+v splitv
bindsym $mod+e layout toggle split
bindsym $mod+Shift+f fullscreen
bindsym $mod+f floating toggle
bindsym $mod+Alt+f focus mode_toggle
bindsym $mod+p focus parent
bindsym $mod+Shift+minus move scratchpad
bindsym $mod+minus scratchpad show
mode "resize" {
bindsym $left resize shrink width 10 px or 10 ppt
bindsym $down resize grow height 10 px or 10 ppt
bindsym $up resize shrink height 10 px or 10 ppt
bindsym $right resize grow width 10 px or 10 ppt
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
bindsym Return mode "default"
bindsym Escape mode "default"
}
default_border none
# bindsym $mod+r mode "resize"
# man 5 sway-bar
bar {
swaybar_command waybar
}
input * {
repeat_delay 200
repeat_rate 60
}
focus_follows_mouse no
# include /etc/sway/config.d/*
include $ENV_PATH/sway/config.d/*

View File

@ -1,7 +1,7 @@
#!/usr/bin/env sh
killall -9 urxvtd
urxvtd &
# killall -9 urxvtd
# urxvtd &
# key repeat
export WLC_REPEAT_DELAY=200
@ -14,5 +14,12 @@ export XKB_DEFAULT_OPTIONS=caps:escape
export QT_QPA_PLATFORM=wayland-egl
export CLUTTER_BACKEND=wayland
export SDL_VIDEODRIVER=wayland
export MOZ_ENABLE_WAYLAND=1
# configuration flag for some of my dotfiles scripts
export IS_WAYLAND=1
mako &
killall -9 dunst &> /dev/null
sway

View File

@ -5,7 +5,7 @@ set $down j
set $up k
set $right l
set $term termite
set $term kitty
set $menu app-launcher
output * bg /home/daniel/usr/.wallpaper fill

View File

@ -67,7 +67,7 @@ super + {Left,Down,Up,Right}
# focus/move node to the selected desktop
super + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} ^{1-9,10}
bspc {desktop -f,node -d} {1-9,10}
# # focus clicked node
~button1
@ -152,7 +152,7 @@ super + ctrl + b
# spawn a transparent node
super + alt + t
urxvtc && compton-trans -c -o 0
"$TERMINAL" && compton-trans -c -o 0
# make current node transparent
super + t
@ -168,7 +168,7 @@ super + shift + t
# spawn a terminal
super + Return
urxvtc
"$TERMINAL"
# spawn a rock-solid and reliable terminal for when I break things
super + alt + Return
@ -176,7 +176,7 @@ super + alt + Return
# spawn a floating terminal
super + shift + Return
bspc rule -a '*' -o state=floating && "urxvtc"
bspc rule -a '*' -o state=floating && "$TERMINAL"
# spawn the app launcher
super + space
@ -228,7 +228,10 @@ XF86AudioPrev
# open rofi as a window switcher
super + w
"$DOTFILES_PATH/scripts/bin/app-launcher" -modi window,run -show window
"app-launcher" -modi window,run -show window
super + shift + v
sh -c 'kill -USR1 $(cat "/var/run/user/$UID/polybar-mic-script.sh.pid")'
# close the current application
super + c
@ -241,25 +244,11 @@ super + shift + c
# kill the wm, if alt is held, it will reload instead of truly quitting...
# I think?
super + ctrl + {alt +,_} Escape
{bspc wm -d > "$BSPWM_STATE_FILE" && bspc quit, \
bspc quit 1}
Print
scrot "$NICE_HOME/img/scrots/%Y-%m-%d_%H-%M-%S_\$wx\$h.png"
sh -c '{bspc wm -d > "$BSPWM_STATE_FILE" && bspc quit, bspc quit 1}'
# make sxhkd reload its configuration files:
super + Escape
pkill -USR1 -x sxhkd
super + d
xdotool key super+4 && sleep 0.1 && xdotool key shift+4 && xdotool key shift+4 && xdotool key shift+4 && sleep 0.2 && xdotool key super+1 && xdotool key super+3
super + ctrl + c
bspc rule -a '*' -o state=floating && urxvtc --geometry 64x9 -e sh -c "cal -n 3 && bash"
super + shift + v
kill -USR1 $(cat "/var/run/user/$UID/polybar-mic-script.pid")
super + v
tmux new-window 'sh -ci tmuxswitcher'
bspc rule -a '*' -o state=floating && urxvt --geometry 64x9 -e sh -c "cal -n 3 && bash"

158
apps/de/waybar/config Normal file
View File

@ -0,0 +1,158 @@
{
"layer": "top", // Waybar at top layer
"position": "bottom", // Waybar position (top|bottom|left|right)
"height": 32, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
// Choose the order of the modules
"modules-left": ["sway/workspaces", "sway/mode", "custom/media"],
"modules-center": ["sway/window"],
"modules-right": [
// "mpd",
// "idle_inhibitor",
"pulseaudio",
"network",
"cpu",
"memory",
"temperature",
"backlight",
"battery",
// "battery#bat2",
"clock",
"tray"
],
"sway/workspaces": {
"disable-scroll": false,
"all-outputs": true,
"format": "{name}: {icon}",
"format-icons": {
"1": "",
"2": "龜",
"3": "",
"4": "",
"5": "",
"urgent": "",
"focused": "",
"default": ""
}
},
"sway/mode": {
"format": "<span style=\"italic\">{}</span>"
},
"mpd": {
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ",
"format-disconnected": "Disconnected ",
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
"unknown-tag": "N/A",
"interval": 2,
"consume-icons": {
"on": " "
},
"random-icons": {
"off": "<span color=\"#f53c3c\"></span> ",
"on": " "
},
"repeat-icons": {
"on": " "
},
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
// "icon-size": 21,
"spacing": 10
},
"clock": {
"interval": 1,
"format": "{:%a %b %d %H:%M:%S}"
},
"cpu": {
"format": "{usage}% ",
"tooltip": false
},
"memory": {
"format": "{}% "
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "{temperatureC}°C {icon}",
"format-icons": ["", "", ""]
},
"backlight": {
// "device": "acpi_video1",
"format": "{percent}% {icon}",
"format-icons": ["", ""]
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-charging": "{capacity}% ",
"format-plugged": "{capacity}% ",
"format-alt": "{time} {icon}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["", "", "", "", ""]
},
"battery#bat2": {
"bat": "BAT2"
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": "{essid} ({signalStrength}%) ",
"format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "Disconnected ⚠",
"format-alt": "{ifname}: {ipaddr}/{cidr}"
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{volume}% {icon} {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphones": "",
"handsfree": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "pavucontrol"
},
"custom/media": {
"format": "{icon} {}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
}
}

188
apps/de/waybar/style.css Normal file
View File

@ -0,0 +1,188 @@
* {
border: none;
border-radius: 0;
/* `otf-font-awesome` is required to be installed for icons */
font-family: "Iosevka", Roboto, Helvetica, Arial, sans-serif;
font-size: 16px;
min-height: 0;
}
window#waybar {
background-color: #111111;
color: #ffffff;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.2;
}
window#waybar.termite {
background-color: #3F3F3F;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
#workspaces button {
padding: 0 0.75em;
background-color: transparent;
color: #ffffff;
}
#workspaces button:hover {
/*
* background: rgba(0, 0, 0, 0.2);
* box-shadow: inherit;
*/
}
#workspaces button.focused {
background-color: #333333;
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#mode {
background-color: #64727D;
}
#clock,
#battery,
#cpu,
#memory,
#temperature,
#backlight,
#network,
#pulseaudio,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#mpd {
padding: 0 0.75em;
color: #ffffff;
}
#clock {
/* background-color: #64727D; */
}
#battery {
/* background-color: #ffffff; */
/* color: #000000; */
}
#battery.charging {
/* color: #ffffff; */
/* background-color: #26A65B; */
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
#battery.critical:not(.charging) {
background-color: #f53c3c;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
label:focus {
background-color: #000000;
}
#cpu {
/* background-color: #2ecc71; */
/* color: #000000; */
}
#memory {
/* background-color: #9b59b6; */
}
#backlight {
/* background-color: #90b1b1; */
}
#network {
/* background-color: #2980b9; */
}
#network.disconnected {
/* background-color: #f53c3c; */
}
#pulseaudio {
/* background-color: #f1c40f; */
/* color: #000000; */
}
#pulseaudio.muted {
/* background-color: #90b1b1; */
/* color: #2a5c45; */
}
#custom-media {
/* background-color: #66cc99; */
/* color: #2a5c45; */
/* min-width: 100px; */
}
#custom-media.custom-spotify {
/* background-color: #66cc99; */
}
#custom-media.custom-vlc {
/* background-color: #ffa000; */
}
#temperature {
/* background-color: #f0932b; */
}
#temperature.critical {
/* background-color: #eb4d4b; */
}
#tray {
/* background-color: #2980b9; */
}
#idle_inhibitor {
/* background-color: #2d3436; */
}
#idle_inhibitor.activated {
/* background-color: #ecf0f1; */
/* color: #2d3436; */
}
#mpd {
/* background-color: #66cc99; */
/* color: #2a5c45; */
}
#mpd.disconnected {
/* background-color: #f53c3c; */
}
#mpd.stopped {
/* background-color: #90b1b1; */
}
#mpd.paused {
/* background-color: #51a37a; */
}

15
apps/de/x/init Normal file
View File

@ -0,0 +1,15 @@
#!/usr/bin/env sh
# as far as I can tell, this file is only executed when you run startx from the
# TTY - you probably want to modify xprofile
[ -z "$XDG_CONFIG_HOME" ] && export XDG_CONFIG_HOME="$HOME/.config"
[ -z "$DOTFILES_PATH" ] && export DOTFILES_PATH="$XDG_CONFIG_HOME/dotfiles"
. "$DOTFILES_PATH/bin/prelude"
[ -f "$HOME/.xprofile" ] && . "$HOME/.xprofile"
# TODO: env? [ -f "$HOME/.env_xinitrc" ] && . "$HOME/.env_xinitrc"
exec "$DOTFILES_PATH/apps/de/bspwm/wmstart"

23
apps/de/x/loadresources Executable file
View File

@ -0,0 +1,23 @@
#!/usr/bin/env sh
xqm() {
f="$1"; shift; [ -f "$f" ] && xrdb -merge "$f" "$@" &>/dev/null
}
xqm "/etc/X11/xinit/.Xresources"
xqm "$HOME/.Xresources"
xqm "$DOTFILES_PATH/bin/lib/colors/xresources"
xqm "$ENV_PATH/x/resources"
sysmodmap="/etc/X11/xinit/.Xmodmap"
usermodmap="$ENV_PATH/x/modmap"
[ -f "$sysmodmap" ] && xmodmap "$sysmodmap" &>/dev/null
[ -f "$usermodmap" ] && xmodmap "$usermodmap" &>/dev/null
if [ -d "/etc/X11/xinit/xinitrc.d" ] ; then
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
[ -x "$f" ] && . "$f"
done
unset f
fi

23
apps/de/x/profile Normal file
View File

@ -0,0 +1,23 @@
#!/usr/bin/env sh
[ -z "$XDG_CONFIG_HOME" ] && export XDG_CONFIG_HOME="$HOME/.config"
[ -z "$DOTFILES_PATH" ] && export DOTFILES_PATH="$XDG_CONFIG_HOME/dotfiles"
. "$DOTFILES_PATH/bin/prelude"
[ -f "$DOTFILES_PATH/apps/de/x/loadresources" ] && "$DOTFILES_PATH/apps/de/x/loadresources"
[ -f "$HOME/.xmodmap" ] && xmodmap "$HOME/.xmodmap"
has_command xcape && xcape -e 'Control_L=Escape' &
has_command libinput-gestures-setup && libinput-gestures-setup start
has_command autocutsel && autocutsel -s PRIMARY &
has_command autocutsel && autocutsel -s CLIPBOARD &
has_command autorandr && autorandr -c
has_command redshift && redshift -r -l 39.1:-94.6 -t 6500K:3000K &
has_command kdeconnect-indicator && kdeconnect-indicator &
eval "$(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh)"
export SSH_AUTH_SOCK
xset r rate 250 80 & # keyrepeat
. maybe_source_env_file x/profile

View File

@ -1,27 +1,22 @@
## Some of my favorite font setups...
## *font: xft:Monaco for Powerline-9
## *faceName: xft:Monaco for Powerline-9
## *boldFont: xft:Monaco for Powerline-9
## *letterSpace: -1
## *font: xft:artwiz lemon-8
## *faceName: xft:artwiz lemon-8
## *boldFont: xft:artwiz lemon-8
## *letterSpace: 0
## *font: xft:xos4 Terminuss Powerline-8
## *faceName: xft:xos4 Terminuss Powerline-8
## *boldFont: xft:xos4 Terminuss Powerline-8
## *letterSpace: 0
## Set fonts in "$HOME/.Xresources.env"
URxvt.font: xft:Iosevka Term:pixelsize=14,xft:Noto Emoji,xft:Font Awesome 5 Free:pixelsize=14,xft:FreeSans:pixelsize=14
URxvt.faceName: xft:Iosevka Term:pixelsize=14,xft:Font Awesome 5 Free:pixelsize=14,xft:FreeSans:pixelsize=14
Emacs.font: Iosevka Term
Emacs.faceName: Iosevka Term
# URxvt.transparent: true
# URxvt.shading: 70
URxvt.letterSpace: 0
*.font: xft:Iosevka Term:pixelsize=14,xft:Noto Emoji,xft:Font Awesome 5 Free:pixelsize=14,xft:FreeSans:pixelsize=14
*.boldFont: xft:Iosevka Term Bold:pixelsize=14,xft:Noto Emoji,xft:Font Awesome 5 Free:pixelsize=14,xft:FreeSans:pixelsize=14
*.letterSpace: 0
## URxvt.transparent: true
## URxvt.shading: 70
## rxvt-unicode configuration
URxvt.termName: rxvt-unicode
@ -49,6 +44,7 @@ dpi: 92
.dpi: 92
*dpi: 92
Xft.dpi: 92
*autohint: 0
*lcdfilter: lcddefault
*hintstyle: hintfull

13
apps/elixir/iex.exs Normal file
View File

@ -0,0 +1,13 @@
Application.put_env(:elixir, :ansi_enabled, true)
IEx.configure(
colors: [enabled: true],
default_prompt: [
"\e[G", # ANSI CHA, move cursor to column 1
:magenta,
"%prefix", # IEx prompt variable
">", # plain string
:reset
] |> IO.ANSI.format |> IO.chardata_to_string
)

View File

@ -4,6 +4,7 @@
[user]
name = Daniel Flanagan
email = daniel@lytedev.io
signingkey = daniel@lytedev.io
[filter "lfs"]
clean = git-lfs clean -- %f
@ -36,6 +37,7 @@
pf = push --force-with-lease
a = add -A
cnv = commit --no-verify
canv = commit --no-verify
c = commit
[merge]
@ -50,7 +52,14 @@
[pager]
branch = false
diff = nvim -c 'silent %sm/\\e.\\{-}m//g' -c 'silent %s/^diff/\\r\\rdiff/' -c 'silent set ft=diff' -c 'silent setlocal nobuflisted buftype=nofile bufhidden=wipe noswapfile' -c 'goto 1' -
# remove ansi codes, pad each file's diff with newlines, show as diff, remove top padding
diff = vimpager -c 'silent %sm/\\e[^mK]*[mK]//g' -c 'silent %s/^diff/\\r\\rdiff/' -c 'silent set ft=diff' -c 'silent execute \"normal gg2dd\"'
[url "git@github.com:postmates"]
insteadOf = https://github.com/postmates
[commit]
gpgsign = true
[gpg]
program = gpg2

View File

@ -8,11 +8,11 @@ hide_kernel_threads=1
hide_userland_threads=1
shadow_other_users=0
show_thread_names=0
show_program_path=0
highlight_base_name=1
show_program_path=1
highlight_base_name=0
highlight_megabytes=1
highlight_threads=1
tree_view=1
tree_view=0
header_margin=1
detailed_cpu_time=0
cpu_count_from_zero=0

View File

@ -1,9 +1,54 @@
font_family Iosevka Term
bold_font Iosevka Term Bold
italic_font Iosevka Term Italic
bold_italic_font Iosevka Term Bold Italic
font_family iosevka-lyte
repaint_delay 5
input_delay 1
sync_to_monitor no
font_features iosevka-lyte -liga -dlig -calt
font_size 11.0
adjust_line_height 0
window_padding_width 18.0
window_padding_width 5.0
window_margin_width 0.0
clear_all_shortcuts yes
map ctrl+shift+equal change_font_size all +0.5
map ctrl+shift+minus change_font_size all -0.5
map shift+insert paste_from_clipboard
map ctrl+shift+v paste_from_selection
enable_audio_bell yes
# TODO: generate via color scheme generator
background #111111
foreground #f8f8f2
url_style curly
# https://google.com
strip_trailing_spaces smart
color0 #111111
color1 #f92672
color2 #a6e22e
color3 #f4bf75
color4 #66d9ef
color5 #ae81ff
color6 #a1efe4
color7 #f8f8f2
# TODO: where did these colors come from? donokai?
color8 #75715e
color9 #fd971f
color10 #383830
color11 #49483e
color12 #a59f85
color13 #f5f4f1
color14 #cc6633
color15 #f9f8f5
color18 #333333
kitty_mod ctrl+shift+alt
open_url_modifiers ctrl

View File

@ -1,19 +1,8 @@
#!/usr/bin/env bash
# vim:fdm=marker
#
# Neofetch config file
# https://github.com/dylanaraps/neofetch
#!/usr/bin/env sh
# Speed up script by not using unicode
export LC_ALL=C
export LANG=C
# Info Options {{{
# Info
# See this wiki page for more info:
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
print_info() {
info line_break
@ -45,375 +34,86 @@ print_info() {
wait
}
# Kernel
# Show more kernel info
# --kernel_shorthand on, off
kernel="off"
kernel_shorthand="on"
# Distro
# Shorten the output of distro (tiny, on, off)
# NOTE: This is only possible on Linux, macOS, and Solaris
distro_shorthand="off"
# Show 'x86_64' and 'x86' in 'Distro:' output.
# --os_arch on, off
os_arch="on"
# Uptime
# Shorten the output of the uptime function
# --uptime_shorthand tiny, on, off
uptime_shorthand="off"
# Shell
# Show the path to $SHELL
# --shell_path on, off
shell_path="off"
# Show $SHELL's version
# --shell_version on, off
shell_version="on"
# CPU
# CPU speed type
# Only works on Linux with cpufreq.
# --speed_type current, min, max, bios,
# scaling_current, scaling_min, scaling_max
speed_type="max"
# CPU Shorthand
# Set shorthand setting
# --cpu_shorthand name, speed, tiny, on, off
cpu_shorthand="off"
# CPU Usage display
# Set CPU usage display setting
# --cpu_display bar, infobar, barinfo, off
cpu_display="off"
# CPU Speed
# Hide/Show CPU speed.
# --cpu_speed on, off
cpu_speed="on"
# CPU Cores
# Display CPU cores in output
# Logical: All virtual cores
# Physical: All physical cores
# --cpu_cores logical, physical, off
# Note: 'physical' doesn't work on BSD.
cpu_cores="logical"
# CPU Temperature
# Hide/Show CPU temperature.
# --cpu_temp on, off
# Note: Only works on Linux.
cpu_temp="off"
# GPU
# Enable/Disable GPU Brand
# --gpu_brand on, off
gpu_brand="on"
# Resolution
# Display refresh rate next to each monitor
# Unsupported on Windows
# --refresh_rate on, off
refresh_rate="off"
# Gtk Theme / Icons
# Shorten output (Hide [GTK2] etc)
# --gtk_shorthand on, off
gtk_shorthand="off"
# Enable/Disable gtk2 theme/icons output
# --gtk2 on, off
gtk2="on"
# Enable/Disable gtk3 theme/icons output
# --gtk3 on, off
gtk3="on"
# IP Address
# Website to ping for the public IP
# --ip_host url
public_ip_host="http://ident.me"
# Song
# Print the Artist and Title on seperate lines
# --song_shorthand on, off
song_shorthand="off"
# Birthday
# Whether to show a long pretty output
# or a shortened one
# NOTE: Long pretty output doesn't work on OpenBSD or NetBSD.
# --birthday_shorthand on, off
birthday_shorthand="off"
# Whether to show the time in the output
# --birthday_time on, off
birthday_time="on"
# Date format to use when printing birthday
# --birthday_format "format"
birthday_format="+%a %d %b %Y %l:%M %p"
# }}}
# Text Colors {{{
# Text Colors
# Each number represents a different part of
# the text in this order:
# title, @, underline, subtitle, colon, info
# colors=(4 6 1 8 8 6)
# You can also specify:
# fg (foreground color)
colors=(distro)
# }}}
# Text Options {{{
# Toggle bold text
# --bold on, off
bold="on"
# Enable/Disable Underline
# --underline on, off
underline_enabled="on"
# Underline character
# --underline_char char
underline_char="-"
# }}}
# Color Blocks {{{
# Color block range
# --block_range start end
# block_range="0,15"
# Toggle color blocks
# --color_blocks on, off
color_blocks="on"
# Color block width in spaces
# --block_width num
block_width=5
# Color block height in lines
# --block_height num
block_height=2
# }}}
# Progress Bars {{{
# Progress bar character
# --progress_char elapsed_char total_char
progress_char_elapsed="-"
progress_char_total="="
# Progress border
# --progress_border on, off
progress_border="on"
# Progress bar length in spaces
# Number of chars long to make the progress bars.
# --progress_length num
progress_length="15"
# Progress bar colors
# When set to distro, uses your distro's logo colors
# Takes: num, "distro"
# --progress_colors col col
progress_color_elapsed="distro"
progress_color_total="distro"
# Customize how the info is displayed.
# bar: Only the progress bar is displayed.
# infobar: The bar is displayed after the info.
# barinfo: The bar is displayed before the info.
# off: Only the info is displayed.
#
# --memory_display bar, infobar, barinfo, off
# --battery_display bar, infobar, barinfo, off
# --disk_display bar, infobar, barinfo, off
memory_display="off"
battery_display="off"
disk_display="on"
backend="kitty"
image_backend="kitty"
# }}}
# Image Options {{{
backend="w3m"
image_backend="w3m"
# Image Source
# --image wall, ascii, /path/to/img, /path/to/dir/, off
image="~/.wallpaper"
# Thumbnail directory
thumbnail_dir="$HOME/.cache/thumbnails/neofetch"
# W3m-img path
# Only works with the w3m backend.
# Some systems have this in another location
w3m_img_path="/usr/lib/w3m/w3mimgdisplay"
# Crop mode
# --crop_mode normal, fit, fill
crop_mode="normal"
# Crop offset
# Only affects normal mode.
# --crop_offset northwest, north, northeast, west, center
# east, southwest, south, southeast
crop_offset="center"
# Image size
# The image is half the terminal width by default.
# --size auto, 00px, 00%, none
image_size="360px"
# Right gap between image and text
# --gap num
gap=1
# Image offsets
# Only works with the w3m backend.
# --xoffset px
# --yoffset px
yoffset=0
xoffset=0
# Image background color
# Only works with the w3m backend.
# Unset by default.
# --bg_color 'color', blue
background_color=
# }}}
# Ascii Options {{{
# Default ascii image to use
# When this is set to distro it will use your
# distro's logo as the ascii.
# --ascii 'distro', path/to/ascii
ascii="distro"
# Ascii distro
# Which distro's ascii art to display.
# --ascii_distro 'auto', 'distro_name'
ascii_distro="auto"
# Ascii colors
# When this is set to distro it will use your
# ditro's colors to color the ascii.
# NOTE: You can also set this to a range of colors
# which will allow you to custom color distro logos
# --ascii_colors distro
# --ascii_colors 2 4 5 6
ascii_colors=(distro)
# Logo size
# Arch, Crux and Gentoo have a smaller logo
# variant. Changing the value below to small
# will make neofetch use the small logo.
# --ascii_logo_size small, normal
ascii_logo_size="normal"
# Bold ascii logo
# Whether or not to bold the ascii logo.
# --ascii_bold on, off
ascii_bold="on"
# }}}
# Scrot Options {{{
# Whether or not to always take a screenshot
# You can manually take a screenshot with "--scrot" or "-s"
scrot="off"
# Screenshot program to launch
# --scrot_cmd
scrot_cmd="scrot -c -d 3"
# Scrot dir
# Where to save the screenshots
# --scrot_dir /path/to/screenshot/folder
scrot_dir="$NICE_HOME/img/"
# Scrot filename
# What to name the screenshots
# --scrot_name str
scrot_dir="$XDG_PICTURES_DIR"
scrot_name="neofetch-$(date +%F-%I-%M-%S-${RANDOM}).png"
# Image upload host
# Where to upload the image.
# Possible values: imgur, teknik
image_host="imgur"
# Imgur api key
# This is an api key for neofetch, you can sign up for your own
# here: http://api.imgur.com/oauth2/addclient
imgur_client_id="0e8b44d15e9fc95"
# }}}
# Config Options {{{
# Enable/Disable config file
# --config off, none
config="on"
# Path to custom config file location
# --config path/to/config
config_file="${XDG_CONFIG_HOME:-${HOME}/.config}/neofetch/config"
# }}}

View File

@ -8,28 +8,30 @@ command! Q q
" best leader
let mapleader = "\<Space>"
if has('nvim')
" terminal mappings
" open a terminal split at 80 columns
nnoremap <C-t> :vsplit term://bash<CR>
nnoremap <C-S-T> :split term://bash<CR>
" tnoremap <C-t> <C-\><C-n>:call TerminalSplit()<CR>
" close the terminal
tnoremap <C-w> <C-\><C-n>:q!<CR>
" moving between terminal splits
tnoremap <C-h> :TmuxNavigateLeft<CR>
tnoremap <C-j> :TmuxNavigateDown<CR>
tnoremap <C-k> :TmuxNavigateUp<CR>
tnoremap <C-l> :TmuxNavigateRight<CR>
endif
" enter insert mode when entering a terminal buffer
augroup InsertModeOnBlankTerminal
autocmd BufWinEnter,WinEnter term://* startinsert
augroup END
" terminal mappings
nnoremap <leader>t :split term://$SHELL<CR><C-\><C-n>:resize 24<CR>i
nnoremap <C-t> :split term://$SHELL<CR><C-\><C-n>:resize 24<CR>i
nnoremap <leader><leader>t :vsplit term://$SHELL<CR><C-\><C-n>:vertical resize 120<CR>i
" nnoremap <C-S-T> :vsplit term://$SHELL<CR><C-\><C-n>:vertical resize 120<CR>i
nnoremap <C-y> :vsplit term://$SHELL<CR><C-\><C-n>:vertical resize 120<CR>i
" close the terminal
tnoremap <C-w> <C-\><C-n>:q!<CR>
tnoremap <leader>w <C-\><C-n>:q!<CR>
tnoremap <C-n> <C-\><C-n>
tnoremap <C-[> <C-\><C-n>
" moving between terminal splits
tnoremap <C-h> <C-\><C-n>:TmuxNavigateLeft<CR>
tnoremap <C-j> <C-\><C-n>:TmuxNavigateDown<CR>
tnoremap <C-k> <C-\><C-n>:TmuxNavigateUp<CR>
tnoremap <C-l> <C-\><C-n>:TmuxNavigateRight<CR>
" Jump to the next or previous line that has the same level or a lower
" level of indentation than the current line.
"
@ -121,10 +123,18 @@ nnoremap <leader>h :b#<CR>
" use leader j and k to switch buffers as well
nnoremap <leader>k :bnext<CR>
nnoremap <leader>j :bprevious<CR>
nnoremap <C-k> :bnext<CR>
nnoremap <C-j> :bprevious<CR>
nnoremap <leader>r :source ~/.config/nvim/init.vim<CR>
" window/pane navigation
nnoremap <C-h> :TmuxNavigateLeft<CR>
nnoremap <C-j> :TmuxNavigateDown<CR>
nnoremap <C-k> :TmuxNavigateUp<CR>
nnoremap <C-l> :TmuxNavigateRight<CR>
if has('nvim')
nnoremap <leader>r :source $vimdir/init.vim<CR>
else
nnoremap <leader>r :source $HOME/.vimrc<CR>
endif
" change buffers with leader,tab
nnoremap <leader><Tab> :bnext<CR>
@ -218,15 +228,15 @@ nnoremap <leader>gs :syntax sync fromstart<CR>
" open coc config
nnoremap <leader><space>c :CocConfig<CR>
" go to definitions
nnoremap <leader>gd <Plug>(coc-jump-definition)
nnoremap <leader>d <Plug>(coc-jump-definition)
" smart jumps
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
nmap <silent> g[ <Plug>(coc-diagnostic-prev)
nmap <silent> g] <Plug>(coc-diagnostic-next)
nmap <leader>ac <Plug>(coc-codeaction)
nmap <leader>qf <Plug>(coc-fix-current)

View File

@ -18,22 +18,6 @@ if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") && index(jump_to_pos_blacklist, &ft) | exe "normal! g'\"" | endif
endif
" terminal split in neovim even tho we tmux
if has('nvim')
function! TerminalSplit()
let current_file = @%
echo current_file
if match(current_file, "term://*") != -1
split
terminal
else
split
resize 24
terminal
endif
endfunction
endif
" make any necessary directories in the path when saving a file
fun! <SID>AutoMakeDirectory()
let s:directory = expand("<afile>:p:h")

View File

@ -1,5 +1 @@
let b:ale_fixers = ['uncrustify']
let b:ale_linters = {
\ 'cs': ['OmniSharp']
\}
let g:OmniSharp_server_use_mono = 1

View File

@ -1,34 +1,31 @@
" let b:ale_fixers = ['mix_format']
let b:ale_linters = ['dogma', 'credo', 'dialyxir', 'mix']
" let g:ale_elixir_elixir_ls_release = '/Users/danielflanagan/Documents/code/open-source/elixir-ls/'
let g:elixirls = {
\ 'path': printf('%s/%s', stdpath('config'), 'bundle/elixir-ls'),
\ }
\ 'path': printf('%s/%s', stdpath('config'), 'bundle/elixir-ls'),
\ }
let g:elixirls.lsp = printf(
\ '%s/%s',
\ g:elixirls.path,
\ 'release/language_server.sh')
\ '%s/%s',
\ g:elixirls.path,
\ 'release/language_server.sh')
function! g:elixirls.compile(...)
let l:commands = join([
\ 'mix local.hex --force',
\ 'mix local.rebar --force',
\ 'mix deps.get',
\ 'mix compile',
\ 'mix elixir_ls.release'
\ ], '&&')
let l:commands = join([
\ 'mix local.hex --force',
\ 'mix local.rebar --force',
\ 'mix deps.get',
\ 'mix compile',
\ 'mix elixir_ls.release'
\ ], '&&')
echom '>>> Compiling elixirls'
silent call system(l:commands)
echom '>>> elixirls compiled'
echom '>>> Compiling elixirls'
silent call system(l:commands)
echom '>>> elixirls compiled'
endfunction
call coc#config('languageserver', {
\ 'elixir': {
\ 'command': g:elixirls.lsp,
\ 'trace.server': 'verbose',
\ 'filetypes': ['elixir', 'eelixir']
\ }
\})
\ 'elixir': {
\ 'command': g:elixirls.lsp,
\ 'trace.server': 'verbose',
\ 'filetypes': ['elixir', 'eelixir']
\ }
\})

View File

@ -1 +0,0 @@
let b:ale_fixers = ['prettier', 'eslint']

View File

@ -0,0 +1 @@
call coc#config('languageserver', {"lua": {"command": "lua-lsp", "filetypes": ["lua"]}})

View File

@ -0,0 +1,12 @@
" let g:moonscriptls = {'path': printf('/home/daniel/code/open-source/moonscript-language-server')}
" let g:moonscriptls.lsp = printf('%s/main.moon', g:moonscriptls.path)
" call coc#config('languageserver', {
" \ 'moon': {
" \ 'command': g:moonscriptls.lsp,
" \ 'trace.server': 'verbose',
" \ 'filetypes': ['moon']
" \ }
" \})

View File

@ -1,2 +1 @@
let b:ale_linters = ['rls']

View File

@ -1,2 +0,0 @@
let b:ale_fixers = ['tslint']
let b:ale_linters = ['tsserver']

View File

@ -1 +0,0 @@
" let b:ale_fixers = ['vint']

View File

@ -1,2 +1 @@
let b:ale_fixers = ['prettier', 'eslint']
autocmd FileType vue syntax sync fromstart

View File

@ -1,57 +1,25 @@
" vim compatibility
let $vimdir = $HOME.'/.vim'
if has('nvim')
let $vimdir = $HOME.'/.config/nvim'
let $vimdir = $XDG_CONFIG_HOME.'/nvim'
endif
" utf8 encoding
if has('vim_starting')
set encoding=utf8
endif
" os detection functions
silent function! OSX()
return has('macunix')
endfunction
silent function! LINUX()
return has('unix') && !has('macunix') && !has('win32unix')
endfunction
silent function! WINDOWS()
return (has('win32') || has('win64'))
endfunction
" load a per-environment file if one exists
if filereadable(expand('$HOME/.env_init.vim'))
source "$HOME/.env_init.vim"
if filereadable("$ENV_PATH/vim")
source "$ENV_PATH/vim"
endif
" initialize plugin manager
if has('nvim')
call plug#begin('~/.config/nvim/bundle')
else
call plug#begin('~/.vim/bundle')
endif
let pluginsfile=$vimdir.'/plugins.vim'
exec 'source ' . pluginsfile
call plug#begin($vimdir.'/bundle')
source $vimdir/plugins.vim
call plug#end()
filetype on
filetype indent on
filetype plugin on
let settingsfile=$vimdir.'/settings.vim'
exec 'source ' . settingsfile
source $vimdir/settings.vim
source $vimdir/commands.vim
source $vimdir/bindings.vim
let commandsfile=$vimdir.'/commands.vim'
exec 'source ' . commandsfile
let bindingsfile=$vimdir.'/bindings.vim'
exec 'source ' . bindingsfile
" load a per-environment file if one exists
if filereadable(expand('$HOME/.env_init_after.vim'))
source "$HOME/.env_init_after.vim"
if filereadable("$ENV_PATH/vim-after")
source "$ENV_PATH/vim-after"
endif

View File

@ -1,25 +1,15 @@
" install plugin manager if needed
augroup PluginManagerInstaller
if has('nvim')
if empty(glob('~/.config/nvim/autoload/plug.vim'))
silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall
endif
else
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall
endif
end
if empty(glob("$vimdir/autoload/plug.vim"))
silent !curl -fLo "$vimdir/autoload/plug.vim" --create-dirs 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
autocmd VimEnter * PlugInstall
endif
augroup End
let g:airline_powerline_fonts = 1
let g:airline#extensions#tabline#enabled = 1 " automatically displays all buffers when there's only one tab open
let g:airline#extensions#tabline#fnamemod = ':t'
" set laststatus=2 " always show statusline
" set noshowmode " hides default mode
" cleanup/simplify airline
let g:airline#extensions#tabline#left_sep = ''
let g:airline#extensions#tabline#left_alt_sep = ''
let g:airline_right_alt_sep = ''
@ -28,7 +18,6 @@ let g:airline_left_alt_sep= ''
let g:airline_left_sep = ''
let g:airline#extensions#tabline#buffers_label = ''
" short mode texts
let g:airline_mode_map = {
\ '__' : '-',
\ 'n' : 'N',
@ -47,36 +36,24 @@ let g:airline_mode_map = {
let g:indent_guide_auto_colors = 1
let g:indent_guides_enable_on_vim_startup = 1
let g:prosession_dir = $vimdir."/session/"
" no ALE gutter
" let g:ale_sign_column_always = 0
" let g:ale_set_signs = 0
" highlight clear ALEErrorSign
" highlight clear ALEWarningSign
let g:polyglot_disabled = ['cue', 'cuesheet']
" fix me, baby
" let g:ale_fix_on_save = 1
" autocomplete
" let g:ale_completion_enabled = 1
" let g:ale_typescript_tslint_use_global = 1
let g:fzf_layout = { 'window': 'enew' }
" let g:fzf_layout = { 'window': 'enew' }
" check if we're using vim as the manpage viewer before loading session plugins
if exists('asmanviewer')
let g:prosession_dir = '/dev/null'
else
Plug 'tpope/vim-obsession' " session ease-of-use
Plug 'tpope/vim-obsession' " session ease-of-use
Plug 'dhruvasagar/vim-prosession' " more session ease-of-use
let g:prosession_dir = '~/.config/nvim/session/'
endif
Plug 'junegunn/vim-plug' " plugin manager should manage itself
Plug 'vim-airline/vim-airline' " status line
Plug 'vim-airline/vim-airline-themes' " more minimal status line
Plug 'nathanaelkane/vim-indent-guides' " indentation guides
" Plug 'w0rp/ale' " syntax checker
Plug 'SirVer/ultisnips' " snippet manager
Plug 'junegunn/fzf', {'dir': '~/.fzf', 'do': './install --all'} " fuzzy file finding
Plug 'junegunn/fzf.vim' " helpers for using fzf in vim
@ -89,7 +66,7 @@ Plug 'tmux-plugins/vim-tmux-focus-events' " allow transiti
Plug 'christoomey/vim-tmux-navigator' " allow transitions within tmux
Plug 'godlygeek/tabular' " align text
Plug 'lytedev/vim-superman' " view man pages with vim
Plug 'tpope/vim-surround' " quickly modify text surrounding objects
Plug 'machakann/vim-sandwich' " quickly modify text surrounding objects
Plug 'tpope/vim-speeddating' " vim knows about date-like text objects
Plug 'tpope/vim-fugitive' " vim git commands
Plug 'michaeljsmith/vim-indent-object' " adds an indentation level text object
@ -98,19 +75,22 @@ Plug 'dbakker/vim-projectroot' " adds helper fu
Plug 'junegunn/goyo.vim' " better distraction-free editing
Plug 'tpope/vim-sleuth' " try and detect indent method
Plug 'editorconfig/editorconfig-vim' " loads project-specific editor settings
Plug 'sheerun/vim-polyglot' " vim plugin loader for many languages
Plug 'leafo/moonscript-vim', {'for': ['moon', 'moonscript']} " moonscript language
Plug 'OmniSharp/omnisharp-vim', {'for': ['cs']} " C# language
" Plug 'junegunn/vim-peekaboo' " preview registers
Plug 'scrooloose/nerdtree' " file browser
Plug 'tpope/vim-eunuch' " unix helper commands
Plug 'mbbill/undotree' " undo tree visualizer
" Plug 'junegunn/vim-peekaboo' " preview registers
" language support
Plug 'sheerun/vim-polyglot' " vim plugin loader for many languages
Plug 'leafo/moonscript-vim', {'for': ['moon', 'moonscript']} " moonscript language
Plug 'OmniSharp/omnisharp-vim', {'for': ['cs']} " C# language
Plug 'neoclide/coc.nvim', {'branch': 'release'} " language server completion
Plug 'neoclide/coc.nvim', {'branch': 'release'} " language server interface
Plug 'JakeBecker/elixir-ls', {'for': ['elixir', 'eelixir'], 'do': { -> g:elixirls.compile() }}
Plug 'tpope/vim-dadbod' " databasing in vim
Plug 'lytedev/elm-vim' " elm lang
Plug 'google/vim-jsonnet' " jsonnet
Plug 'sirtaj/vim-openscad' " openscad
Plug 'ssh://git@git.lyte.dev:2222/lytedev/vim-lytlang.git'
Plug 'tpope/vim-dadbod' " vim
Plug 'lytedev/elm-vim', {'for': ['elm']} " elm lang
Plug 'google/vim-jsonnet', {'for': ['jsonnet', 'libsonnet']} " jsonnet
Plug 'sirtaj/vim-openscad', {'for': ['scad']} " openscad
Plug 'jjo/vim-cue'
" Plug 'ssh://git@git.lyte.dev:2222/lytedev/vim-lytlang.git'

View File

@ -1,4 +1,6 @@
scriptencoding utf8
scriptencoding utf-8
set fileencoding=utf8
set encoding=utf8
" ALE completeopt recommendation
set completeopt=menu,menuone,preview,noselect,noinsert
@ -74,12 +76,13 @@ set splitbelow " don't split top
set noerrorbells " shhhh, vim
set visualbell " but visual noise for alerts is ok
set nobackup " sessions handle this quite nicely
set nowritebackup " no but really they do
set noswapfile " no seriously sessions are cool
set nowritebackup " no, but really, they do
set noswapfile " no, seriously, sessions are cool
set timeout " key combo mapping timeout
set ttimeoutlen=100 " ms delay for tapping key combos
set timeoutlen=150 " ms for key combo mapping timeout
set isfname+=32 " allow filenames to show them 32s
set updatetime=300 " recommended for coc.nvim
" no freakin' bell
set visualbell t_vb=
@ -89,9 +92,6 @@ if has('autocmd')
augroup END
endif
" color scheme
let base16colorspace=256
set background=dark
syntax enable
colorscheme base16-donokai
@ -105,7 +105,7 @@ highlight GitGutterChangeDelete ctermbg=black guibg=black
hi NonText ctermfg=black guifg=black
set hidden " allows buffer switching without saving
set shortmess=Ia " hide vim intro, skip lots of file messages/prompts
set shortmess+=Ia " hide vim intro, skip lots of file messages/prompts
set history=1000
" undo files

View File

@ -16,6 +16,7 @@ alias tree='tree -Csuh'
alias f='fzf'
alias cp="rsync -ah --progress"
alias year="cal $(date +%Y)"
alias y="year"
# gets the newest function for the current directory (or the specified directory
# if one is provided)
@ -28,7 +29,17 @@ function ltl() {
echo "$l"
}
function ltld() {
local d="${1-$PWD}"
unset -v l
for f in "$d"/*; do
[[ $f -nt $l ]] && [[ -d $f ]] && l="$f"
done
echo "$l"
}
alias vltl="vim \"\$(ltl)\""
alias cdltl="cd \"\$(ltld)\""
alias ltlv="vltl"
# navigation aliases
@ -41,7 +52,8 @@ function c() {
}
alias cd..="cd .."
alias cdd="cd \"\$DOTFILES_PATH\"" # go to dotfiles
alias cdc="cd \"\$XDG_CONFIG_HOME\"" # go to
alias cde="cd \"\$ENV_PATH\"" # go to current dotfiles...? env
alias cdc="cd \"\$XDG_CONFIG_HOME\"" # go to ~/.config
alias cdn="cd \"\$NOTES_PATH\""
alias cdl="cd \"\$NICE_HOME/dl\""
alias cdg="cd \"\$NICE_HOME/games\""
@ -58,7 +70,6 @@ alias .........="cd ../../../../../../../.."
# tmux aliases
# TODO: see if this can be worked around?
alias tmux='TERM=screen-256color-bce tmux' # syntax higlighting for vim in tmux
alias tmnew="tmux new -s"
alias tmls="tmux list-sessions"
alias tmatt="tmux attach -t"
@ -108,7 +119,10 @@ alias sctlu="systemctl --user"
alias logs="sudo journalctl"
alias logsr="sudo journalctl -r"
alias logsf="sudo journalctl -f"
alias bt="sudo bluetoothctl"
alias btctl="bt"
alias btctl="sudo bluetoothctl"
alias pbcopy="clip"
alias pt="htop -t" # experimental htop tree-view-by-default
alias resrc="source \$HOME/.bashrc"
alias redshift="redshift -r -l 39.0997:-94.5786 -t 6500K:2500K"
@ -119,6 +133,7 @@ alias scs="sc-im \"\$NOTES_PATH/_scratch.sc\""
alias disks="lsblk && df -h"
alias dd="dd status=progress"
alias wifi="sudo nmtui"
alias pa="pulsemixer"
# games aliases
# this sometimes fixes steam dynamic library issues?
@ -133,3 +148,6 @@ alias mutt="neomutt"
# fsw aliases
alias fsw-mix-test="fsw \"mix test\" ./**/*.{ex,exs,erl,hrl,xrl,yrl}"
# weechat aliases
alias chat="WEECHAT_PASSPHRASE=\"\$(pass config/weechat-passphrase | head -n 1)\" weechat"

View File

@ -2,6 +2,6 @@
# bash_profile is executed immediately after logging in
if [ -f ~/.bashrc ]; then
source ~/.bashrc
if [[ -f "$HOME/.bashrc" ]]; then
source "$HOME/.bashrc"
fi

70
apps/shell/bash/rc Normal file
View File

@ -0,0 +1,70 @@
#!/usr/bin/env bash
export XDG_CONFIG_HOME="$HOME/.config"
export DOTFILES_PATH="$XDG_CONFIG_HOME/dotfiles"
. "$DOTFILES_PATH/bin/prelude"
[[ ! $- == *i* ]] && return # stop parsing on a non-interactive shell
. "$DOTFILES_PATH/apps/shell/bash/aliases.bash"
. "$DOTFILES_PATH/apps/shell/bash/autocompletions"
. "$DOTFILES_PATH/apps/shell/bash/prompt"
stty -ixon # disable ctrl-s terminal freezing
bind -f "$DOTFILES_PATH/apps/shell/inputrc" # load our key
# load our vconsole colors if in a tty
if [[ "${TERM%%-*}" = 'linux' ]]; then
c="$DOTFILES_PATH/bin/lib/colors/vconsole"
[[ -s "$c" ]] && . "$c"
fi
# prevents some Java GUI apps from not working or rendering properly due to
# using wacky window managers
export _JAVA_AWT_WM_NONREPARENTING=1
export ERL_AFLAGS="-kernel shell_history enabled -kernel shell_history_file_bytes 1024000"
has_command fd && export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
export LS_COLORS='ow=01;36;40'
export LESS="-x2" # less tab size of 2 spaces
export TERMINAL="urxvtc"
export BROWSER="firefox-developer-edition"
export HISTFILESIZE="10000000" # "unlimited" history
export HISTSIZE="10000000" # "unlimited" history
export HISTCONTROL=ignoreboth # ignore duplicates and commands starting with space (" ")
shopt -s globstar # allow ** recursive wildcard globbing
# prevents binds or commands pulling from history from insta-sending, and
# instead places them in the readline for editing
shopt -s histverify
shopt -s histappend # always _append_ to bash history
shopt -s cmdhist # ensure command history is comprised of single lines
HISTIGNORE='ls:ll:la' # ignore certain commands
# set our EDITOR to neovim if we've got it
export EDITOR="vim"
if has_command nvim; then
alias vim="nvim"
alias ovim="\\vim"
export EDITOR="nvim"
fi
# load a per-device config last so anything can be overridden
. maybe_source_env_file bashrc
. maybe_source_env_file .hidden/bashrc
# create paths we kind of expect to exist in some scripts
mkdir -p "$NOTES_PATH" "$SCROTS_PATH" "$USER_LOGS_PATH"
# open nice home instead if we're opening at home
if [ "$PWD" = "$HOME" ] || [ "$PWD" = "$NICE_HOME" ]; then
cd "$NICE_HOME" || cd || return
fi
[ -f "$HOME/.fzf.bash" ] && . "$HOME/.fzf.bash"
if [[ -d "$HOME/.asdf/" ]] && [[ -f "$HOME/.asdf/asdf.sh" ]]; then
. "$HOME/.asdf/asdf.sh"
elif [[ -d /opt/asdf-vm/ ]] && [[ -f /opt/asdf-vm/asdf.sh ]]; then
. "/opt/asdf-vm/asdf.sh"
fi
[ -f ~/.fzf.bash ] && source ~/.fzf.bash

2
apps/shell/fish/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
fish_variables
functions

184
apps/shell/fish/aliases.fish Executable file
View File

@ -0,0 +1,184 @@
#!/usr/bin/env fish
# ls aliases
alias lx 'ls -lXB' # order by filetype
alias lk 'ls -lSr' # order by filesize reversed
alias lt 'ls -ltr' # order by file modified time
alias lc 'ls -ltcr' # order by filectime
alias lu 'ls -ltur' # order by file access time
alias ls 'ls -h --color --group-directories-first' # flat view w/ directories first
alias l 'ls -h --color --group-directories-first' # same as above
alias ll 'ls -lv --group-directories-first' # non-flat view
alias lm 'll | more'
alias lr 'll -R' # please don't - why is this even here...?
alias la 'll -A' # show all
# other file aliases
alias tree 'tree -Csuh'
alias f fzf
alias cp 'rsync -ah --progress'
# gets the newest file in the current directory (or the specified directory
# if one is provided)
function ltl
set d $argv[1] .
set -l l ""
for f in $d[1]/*
if test -z $l; set l $f; continue; end
if command test $f -nt $l; and test ! -d $f
set l $f
end
end
echo $l
end
function scount -d "Silent count" -w count
count $argv > /dev/null
end
function ltld
set d $argv[1] .
set -l l ""
for f in $d[1]/*
if test -z $l; set l $f; continue; end
if command test $f -nt $l; and test -d $f
set l $f
end
end
echo $l
end
alias vltl "vim (ltl)"
alias cdltl "cd (ltld)"
alias ltlv vltl
function d -w cd
if scount $argv
cd $argv || exit 1
else
cd $NICE_HOME || exit 1
end
la
end
# navigation aliases
function c -w cd
if scount $argv
cd $NICE_HOME && d $argv || exit 1
else
d $NICE_HOME
end
end
alias cd.. "d .."
alias cdd "d $DOTFILES_PATH" # go to dotfiles
alias cde "d $ENV_PATH" # go to env dotfiles
alias cdc "d $XDG_CONFIG_HOME" # go to ~/.config
alias cdn "d $NOTES_PATH"
alias cdl "d $NICE_HOME/dl"
alias cdg "d $NICE_HOME/games"
# quick parent-directory aliases
alias .. "d .."
alias ... "d ../.."
alias .... "d ../../.."
alias ..... "d ../../../.."
alias ...... "d ../../../../.."
alias ....... "d ../../../../../.."
alias ........ "d ../../../../../../.."
alias ......... "d ../../../../../../../.."
# tmux aliases
# TODO: see if this can be worked around?
alias tmnew "tmux new -s"
alias tmls "tmux list-sessions"
alias tmatt "tmux attach -t"
alias tu "tmux attach -t utils || tmux new -s utils"
alias tdf "tmux attach -t dotfiles || tmux new -s dotfiles -c $DOTFILES_PATH"
alias tmon "tmux attach -t monitoring || tmux new -s monitoring"
alias tcom "tmux attach -t comms || tmux new -s comms"
alias tn "tmux attach -t notes || tmux new -s notes -c $NOTES_PATH"
alias tm "tmux attach -t music || tmux new -s music"
# git aliases
# TODO: make these git aliases in the gitconfig?
function g
if scount $argv
git $argv
else
git status
end
end
alias gs "git status"
alias gd "git diff"
alias gds "git diff --staged"
# alias gdv "git dv" # TODO: what is this?
alias gpl "git pull"
alias gp "git push"
alias gpa "git push --all && git push --tags"
alias gpt "git push && git push --tags"
alias gpf "git push --force-with-lease"
alias gac "git add -A && git commit"
alias gacnv "git add -A && git commit --no-verify"
alias gsur "git submodule update --remote"
alias glf "git ls-files"
alias gl "git log --pretty=format:\"%h %ad%x09%an%x09%s\" --date=short"
# docker aliases
alias dlf "docker logs --tail=500 -f"
alias dclf "docker-compose logs --tail=500 -f"
alias ctop "docker run --rm -ti -v /var/run/docker.sock:/var/run/docker.sock quay.io/vektorlab/ctop:latest"
# misc aliases
alias p "ping 8.8.8.8"
alias C "clear && clear"
alias r "ranger"
alias rn "/usr/bin/watch -n 1"
alias sctl "sudo systemctl"
alias sctlu "systemctl --user"
alias logs "sudo journalctl"
alias logsr "sudo journalctl -r"
alias logsf "sudo journalctl -f"
alias bt "sudo bluetoothctl"
alias btctl "bt"
alias btctl "sudo bluetoothctl"
alias pbcopy "clip"
alias pt "htop -t" # experimental htop tree-view-by-default
alias resrc "source $XDG_CONFIG_HOME/fish/config.fish"
alias redshift "redshift -r -l 39.0997:-94.5786 -t 6500K:2500K"
alias gpmdpe "electron --app=/usr/share/gpmdp/resources/app.asar"
alias t "task"
alias sc "sc-im"
alias scs "sc-im $NOTES_PATH/_scratch.sc"
alias disks "lsblk && df -h"
alias dd "dd status=progress"
alias wifi "sudo nmtui"
alias year 'cal (date +%Y)'
alias y year
alias pa pulsemixer
# games aliases
# this sometimes fixes steam dynamic library issues?
alias lsteam "env LD_PRELOAD='/usr/$LIB/libstdc++.so.6 /usr/$LIB/libgcc_s.so.1 /usr/$LIB/libxcb.so.1 /usr/$LIB/libgpg-error.so' steam"
# override the man commands with vim
alias _man "\\man"
alias man "vman"
# neomutt is better
alias mutt "neomutt"
alias mail "mutt"
# fsw aliases
alias fsw-mix-test 'fsw "mix test" ./**/*.{ex,exs,erl,hrl,xrl,yrl}'
function field
not scount $argv && echo "No field index provided"; exit 1
awk "{print \$$argv[1]}"
end
# weechat aliases
function chat
set -l pass (pass config/weechat-passphrase | head -n 1)
env WEECHAT_PASSPHRASE=$pass weechat
end

33
apps/shell/fish/colors.fish Executable file
View File

@ -0,0 +1,33 @@
#!/usr/bin/env fish
# TODO: once, I could set backgrounds
# unused since we handle it ourselves in fish_prompt
set -U fish_color_cwd magenta
set -U fish_color_cwd_root red
set -U fish_color_host normal
set -U fish_color_user blue
set -U fish_color_normal normal # default color
set -U fish_color_command white # base command being run (>ls< -la)
set -U fish_color_param white # command's parameters
set -U fish_color_end green # command delimiter/separators (; and &)
set -U fish_color_error red # color of errors
set -U fish_color_escape yellow # color of escape codes (\n, \x2d, etc.)
set -U fish_color_operator blue # expansion operators (~, *)
set -U fish_color_quote yellow # quoted expressions (ls >"/tmp/test dir"<)
set -U fish_color_redirection blue # redirection operators (|, >, etc.)
set -U fish_color_cancel 333 brblack # sigint (cancel current comment) at prompt (^C)
set -U fish_color_autosuggestion 666 brblack # as-you-type suggestions
set -U fish_color_match blue # matching parens and the like
set -U fish_color_search_match white\x1e\x2d\x2dbackground\x3d333 # selected pager item
set -U fish_color_selection blue # vi mode visual selection (only fg)
set -U fish_color_valid_path yellow # if an argument is a valid path (only -u?)
set -U fish_color_comment 666 brblack # comments like this one!
# pager shown when completing
set -U fish_pager_color_completion white # main color for pager
set -U fish_pager_color_description magenta # color for meta description
set -U fish_pager_color_prefix blue # the string being completed
set -U fish_pager_color_progress white\x1e\x2d\x2dbackground\x3d333 # status indicator at the bottom
# set -U fish_pager_color_secondary \x2d\x2dbackground\x3d181818 # alternating rows

61
apps/shell/fish/config.fish Executable file
View File

@ -0,0 +1,61 @@
#!/usr/bin/env fish
set -Ux XDG_CONFIG_HOME $HOME/.config
set -Ux DOTFILES_PATH $XDG_CONFIG_HOME/dotfiles
set -Ux ENV_PATH $HOME/.env
function has_command; command -v $argv[1] 2>&1 >/dev/null; end
source $DOTFILES_PATH/apps/shell/fish/paths.fish
status --is-interactive || exit
for f in key-bindings colors prompt aliases
source $DOTFILES_PATH/apps/shell/fish/$f.fish
end
set -Ux _JAVA_AWT_WM_NONREPARENTING 1
set -Ux TERMINAL kitty
set -Ux BROWSER firefox-developer-edition
set -Ux ERL_AFLAGS "-kernel shell_history enabled -kernel shell_history_file_bytes 1024000" # iex history
# set our EDITOR to neovim if we've got it
set -Ux EDITOR vim
if has_command nvim
alias vim nvim
alias ovim 'command vim'
set -Ux EDITOR nvim
end
# more sane ls colors
set -Ux LS_COLORS 'ow=01;36;40'
has_command fd && set -Ux FZF_DEFAULT_COMMAND 'fd --type f --hidden --follow --exclude .git'
test -f ~/.fzf/shell/key-bindings.fish && source ~/.fzf/shell/key-bindings.fish
function fish_greeting
fortune
end
# we assume the user uses "$HOME" to just store their mess of dotfiles and other
# nonsense that clutters it up and that they have a preferred starting
# directory where they keep the stuff they actually care about
# we only do this if the user is opening a shell at $HOME
if test $PWD = $HOME; or test $PWD = $NICE_HOME;
cd $NICE_HOME || cd
end
if test -f $HOME/.asdf/asdf.fish
source $HOME/.asdf/asdf.fish
else if test -f /opt/asdf-vm/asdf.fish
source /opt/asdf-vm/asdf.fish
end
# load a per-device config last so anything can be overridden
for cf in config.fish .hidden/config.fish
set f $ENV_PATH/$cf
test -f $f && source $f
end
mkdir -p $NOTES_PATH $USER_LOGS_PATH $SCROTS_PATH

View File

@ -0,0 +1,24 @@
#!/usr/bin/env fish
function fish_user_key_bindings
fzf_key_bindings
fish_vi_key_bindings insert --no-erase
set vi_esc "if commandline -P; commandline -f cancel; else; set fish_bind_mode default; commandline -f backward-char force-repaint; end"
bind -M insert jk $vi_esc
bind -M insert Jk $vi_esc
bind -M insert JK $vi_esc
bind -M insert jj $vi_esc
bind -M insert Jj $vi_esc
bind -M insert JJ $vi_esc
bind -M insert JJ $vi_esc
bind -M insert \cp up-or-search
bind -M insert \cn down-or-search
bind -M insert \cs fzf-cd-widget
bind -M insert \ce end-of-line
bind -M insert \ca beginning-of-line
bind -M insert \cw forward-word
# bind -M insert \t forward-word
end

45
apps/shell/fish/paths.fish Executable file
View File

@ -0,0 +1,45 @@
#!/usr/bin/env fish
set -U fish_user_paths \
$HOME/.go \
$GOPATH/bin \
$DOTFILES_PATH/bin \
$ENV_PATH/bin \
$HOME/.bin \
$HOME/.cargo/bin \
$HOME/.yarn/bin
test -d $HOME/.local/bin && set -U fish_user_paths $HOME/.local/bin $fish_user_paths
test -d $HOME/.bin && set -U fish_user_paths $HOME/.local/bin $fish_user_paths
has_command python && set -U fish_user_paths (python -m site --user-base)"/bin" $fish_user_paths
has_command ruby && set -U fish_user_paths (ruby -e 'print Gem.user_dir')"/bin" $fish_user_paths
if test (dirname (basename $HOME)) = $USER
set -Ux NICE_HOME $HOME
else
set -Ux NICE_HOME /home/$USER
end
for p in $NICE_HOME $HOME $ENV_PATH
test -f $p/.nice_home && set -Ux NICE_HOME (cat $p/.nice_home)
end
set -Ux NOTES_PATH $NICE_HOME/doc/notes
set -Ux SCROTS_PATH $NICE_HOME/img/scrots
set -Ux USER_LOGS_PATH $NICE_HOME/doc/logs
set -Ux XDG_DESKTOP_DIR $HOME/desktop
set -Ux XDG_PUBLICSHARE_DIR $HOME/public
set -Ux XDG_TEMPLATES_DIR $HOME/templates
set -Ux XDG_DOCUMENTS_DIR $NICE_HOME/doc
set -Ux XDG_DOWNLOAD_DIR $NICE_HOME/dl
set -Ux XDG_MUSIC_DIR $NICE_HOME/music
set -Ux XDG_PICTURES_DIR $NICE_HOME/img
set -Ux XDG_VIDEOS_DIR $NICE_HOME/video
set -Ux XDG_GAMES_DIR $NICE_HOME/games
set -Ux NOTES_PATH $XDG_DOCUMENTS_DIR/notes
set -Ux USER_LOGS_PATH $XDG_DOCUMENTS_DIR/logs
set -Ux SCROTS_PATH $XDG_PICTURES_DIR/scrots

44
apps/shell/fish/prompt.fish Executable file
View File

@ -0,0 +1,44 @@
#!/usr/bin/env fish
# TODO: if root, background instead?
set MAX_PATH_PIECE_CHARS $BASH_PROMPT_MAX_PATH_PIECE_CHARS 3
# prompt rendering functions
function preprocess_pwd
test (pwd) = / && echo "/" && return 1
test (pwd) = $NICE_HOME && echo "~" && return 0
# with ellipsis
#echo "$(<<< "$p" cut -c2- | awk '{split($0,p,"/");for(k in p){if(k==length(p)){printf "/%s",p[k]}else{if(length(p[k])>'"$((MAX_PATH_PIECE_CHARS+1))"'){printf "/%.'"$((MAX_PATH_PIECE_CHARS))"'s…",p[k]}else{printf "/%s",p[k]}}}}')"
# without ellipsis
echo (pwd) | cut -c2- | awk '{split($0,p,"/");for(k in p){if(k==length(p)){printf "/%s",p[k]}else{printf "/%.'$MAX_PATH_PIECE_CHARS[1]'s",p[k]}}}'
end
function fish_prompt
if test $status -eq 0
set_color blue
else
set_color red
end
printf $USER"@"$hostname" "
set_color magenta
printf (preprocess_pwd)" "
end
function fish_mode_prompt; end
# function fish_right_prompt
# set_color brblack
# switch $fish_bind_mode
# case default
# echo 'N'
# case insert
# echo 'I'
# case replace_one
# echo 'R'
# case replace
# echo 'R'
# case visual
# echo 'V'
# end
# end

View File

@ -4,23 +4,25 @@ set -g prefix C-s
bind-key s send-prefix
# reload tmux.conf
bind-key T source-file ~/.tmux.conf \; display-message "source-file done"
bind-key T source-file "$HOME/.tmux.conf" \; display-message "source-file done"
unbind r
bind r source-file ~/.tmux.conf
bind r source-file "$HOME/.tmux.conf"
# set -as terminal-overrides ',xterm*:smxx=\E[9m'
set -g default-terminal "screen-256color"
# sane defaults
set -g default-terminal "tmux-256color"
set-option -g mouse on
set -g mouse on
# honestly not exactly sure?
# set -sg escape-time 1
set -sg escape-time 0
set -g escape-time 0
# show window activity
# TODO: this needs to be properly setup
set-window-option -g monitor-activity on
set-window-option -g visual-bell on
set-window-option -g bell-action other
# TODO: this needs to be properly setup - presumably with tmux-session-list
setw -g monitor-activity on
setw -g visual-bell on
setw -g bell-action other
# common window sizes
bind-key W resize-pane -x 100
@ -36,7 +38,7 @@ bind-key h split-window
# show tmux status bar by default with (C-s, H) to toggle it
set -g status on
set-option -g history-limit 102400000
set -g history-limit 102400000
bind-key H set -s status
# simple session switching
@ -44,13 +46,14 @@ bind-key j switch-client -p
bind-key h switch-client -p
bind-key k switch-client -n
bind-key l switch-client -n
# bind s run-shell "tmux new-window sh -c '$DOTFILES_PATH/bin/tmuxswitcher'"
bind s run-shell "tmux new-window 'sh -c ~/.config/dotfiles/bin/tmuxswitcher'"
# reset the working directory of the current session
bind-key P attach-session -t . -c '#{pane_current_path}' \; display-message 'Reset session dir to #{pane_current_path}'
# status bar and messages
set-option -g status-position bottom
set -g status-position bottom
set -g status-bg colour0
set -g status-fg colour8
set -g message-style 'fg=colour7 bg=colour18'
@ -58,9 +61,9 @@ set -g status-interval 5
set -g status-right-length 80
set -g status-right "#[fg=colour4]#W#[fg=default]#[bg=default] #H"
set -g status-left-length 200
set -g status-left "#[fg=colour7]#(~/.config/dotfiles/bin/tmux-session-list #S)"
set -g status-left "#[fg=colour7]#(tmux-session-list #S)"
bind-key O run-shell "~/.config/dotfiles/bin/tmux-save-buffer #S" \; display-message "Saved buffer to ~/<date>.tmux-buffer.log"
bind-key O display-message "#(tmux-save-buffer #S)"
# pane split line colors
set -g pane-active-border-style bg=black,fg=blue
@ -71,10 +74,10 @@ set -g clock-mode-colour colour8
# windows (which I don't use much...?)
# TODO: do I have a use case for windows?
set-window-option -g window-status-current-format ''
setw -g window-status-current-format ''
# vim copying
set-window-option -g mode-keys vi
setw -g mode-keys vi
# 1-based indexing for key binding simplicity
set -g base-index 1
@ -133,21 +136,20 @@ set -g @resurrect-save 'C-v'
set -g @resurrect-restore 'R'
# initialize tmux plugin manager
run '~/.tmux/plugins/tpm/tpm'
run '$HOME/.tmux/plugins/tpm/tpm'
# attempt at integrating nested tmux sessions nicely
bind -T root F12 \
set prefix None \;\
set key-table off \;\
set status off \
if -F '#{pane_in_mode}' 'send-keys -X cancel' \;\
refresh-client -S \;\
# bind -T root F12 \
# set prefix None \;\
# set key-table off \;\
# set status off \
# if -F '#{pane_in_mode}' 'send-keys -X cancel' \;\
# refresh-client -S \;\
bind -T off F12 \
set -u prefix \;\
set -u key-table \;\
set status on \;\
refresh-client -S
# bind -T off F12 \
# set -u prefix \;\
# set -u key-table \;\
# set status on \;\
# refresh-client -S
unbind-key C-p

8
apps/shell/user-dirs Normal file
View File

@ -0,0 +1,8 @@
XDG_DESKTOP_DIR="$HOME/desktop"
XDG_DOCUMENTS_DIR="$HOME/../doc"
XDG_DOWNLOAD_DIR="$HOME/../dl"
XDG_MUSIC_DIR="$HOME/../music"
XDG_PICTURES_DIR="$HOME/../img"
XDG_PUBLICSHARE_DIR="$HOME/public"
XDG_TEMPLATES_DIR="$HOME/templates"
XDG_VIDEOS_DIR="$HOME/../video"

View File

@ -0,0 +1 @@
w /proc/acpi/wakeup - - - - LID

2
apps/udev-rules/lowbat Normal file
View File

@ -0,0 +1,2 @@
# Suspend the system when battery level drops to 3% or lower
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="[0-5]", RUN+="/usr/bin/systemctl hibernate"

View File

@ -0,0 +1 @@
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wl*", RUN+="/usr/bin/iw dev $name set power_save on"

View File

@ -1,2 +1,19 @@
*
!.gitignore
/*
!/alias.conf
!/buflist.conf
!/charset.conf
!/exec.conf
!/fifo.conf
!/fset.conf
!/irc.conf
!/logger.conf
!/lua.conf
!/perl.conf
!/python.conf
!/relay.conf
!/script.conf
!/spell.conf
!/tcl.conf
!/trigger.conf
!/weechat.conf
!/xfer.conf

47
apps/weechat/alias.conf Normal file
View File

@ -0,0 +1,47 @@
#
# weechat -- alias.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[cmd]
AAWAY = "allserv /away"
ANICK = "allserv /nick"
BEEP = "print -beep"
BYE = "quit"
C = "buffer clear"
CHAT = "dcc chat"
CL = "buffer clear"
CLOSE = "buffer close"
EXIT = "quit"
IG = "ignore"
J = "join"
K = "kick"
KB = "kickban"
LEAVE = "part"
M = "msg"
MSGBUF = "command -buffer $1 * /input send $2-"
MUB = "unban *"
N = "names"
Q = "query"
REDRAW = "window refresh"
SAY = "msg *"
SIGNOFF = "quit"
T = "topic"
UB = "unban"
UMODE = "mode $nick"
V = "command core version"
W = "who"
WC = "window close"
WI = "whois"
WII = "whois $1 $1"
WM = "window merge"
WW = "whowas"
[completion]
MSGBUF = "%(buffers_plugins_names)"

39
apps/weechat/buflist.conf Normal file
View File

@ -0,0 +1,39 @@
#
# weechat -- buflist.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[look]
add_newline = on
auto_scroll = 50
display_conditions = "${buffer.hidden}==0"
enabled = on
mouse_jump_visited_buffer = off
mouse_move_buffer = on
mouse_wheel = on
nick_prefix = off
nick_prefix_empty = on
signals_refresh = ""
sort = "number,-active"
[format]
buffer = "${format_number}${indent}${format_nick_prefix}${color_hotlist}${format_name}"
buffer_current = "${color:,blue}${format_buffer}"
hotlist = " ${color:green}(${hotlist}${color:green})"
hotlist_highlight = "${color:magenta}"
hotlist_low = "${color:white}"
hotlist_message = "${color:brown}"
hotlist_none = "${color:default}"
hotlist_private = "${color:green}"
hotlist_separator = "${color:default},"
indent = " "
lag = " ${color:green}[${color:brown}${lag}${color:green}]"
name = "${name}"
nick_prefix = "${color_nick_prefix}${nick_prefix}"
number = "${color:green}${number}${if:${number_displayed}?.: }"

18
apps/weechat/charset.conf Normal file
View File

@ -0,0 +1,18 @@
#
# weechat -- charset.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[default]
decode = "iso-8859-1"
encode = ""
[decode]
[encode]

19
apps/weechat/exec.conf Normal file
View File

@ -0,0 +1,19 @@
#
# weechat -- exec.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[command]
default_options = ""
purge_delay = 0
shell = "${env:SHELL}"
[color]
flag_finished = lightred
flag_running = lightgreen

14
apps/weechat/fifo.conf Normal file
View File

@ -0,0 +1,14 @@
#
# weechat -- fifo.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[file]
enabled = on
path = "%h/weechat_fifo"

95
apps/weechat/fset.conf Normal file
View File

@ -0,0 +1,95 @@
#
# weechat -- fset.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[look]
auto_unmark = off
condition_catch_set = "${count} >= 1"
export_help_default = on
format_number = 1
marked_string = "*"
scroll_horizontal = 10
show_plugins_desc = off
sort = "~name"
unmarked_string = " "
use_color_value = off
use_keys = on
use_mute = off
[format]
export_help = "# ${description2}"
export_option = "/set ${name} ${quoted_value}"
export_option_null = "/unset ${name}"
option1 = ""
option2 = "${marked} ${name} ${type} ${value2}${newline} ${empty_name} ${_default_value}${color:darkgray} -- ${min}..${max}${newline} ${empty_name} ${description}"
[color]
default_value = default
default_value_selected = white
description = default
description_selected = white
file = default
file_changed = brown
file_changed_selected = yellow
file_selected = white
help_default_value = white
help_description = default
help_name = white
help_quotes = darkgray
help_values = default
index = cyan
index_selected = lightcyan
line_marked_bg1 = default
line_marked_bg2 = default
line_selected_bg1 = blue
line_selected_bg2 = red
marked = brown
marked_selected = yellow
max = default
max_selected = white
min = default
min_selected = white
name = default
name_changed = brown
name_changed_selected = yellow
name_selected = white
option = default
option_changed = brown
option_changed_selected = yellow
option_selected = white
parent_name = default
parent_name_selected = white
parent_value = cyan
parent_value_selected = lightcyan
quotes = darkgray
quotes_changed = default
quotes_changed_selected = white
quotes_selected = default
section = default
section_changed = brown
section_changed_selected = yellow
section_selected = white
string_values = default
string_values_selected = white
title_count_options = cyan
title_current_option = lightcyan
title_filter = yellow
title_marked_options = lightgreen
title_sort = white
type = green
type_selected = lightgreen
unmarked = default
unmarked_selected = white
value = cyan
value_changed = brown
value_changed_selected = yellow
value_selected = lightcyan
value_undef = magenta
value_undef_selected = lightmagenta

158
apps/weechat/irc.conf Normal file
View File

@ -0,0 +1,158 @@
#
# weechat -- irc.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[look]
buffer_open_before_autojoin = on
buffer_open_before_join = off
buffer_switch_autojoin = on
buffer_switch_join = on
color_nicks_in_names = off
color_nicks_in_nicklist = off
color_nicks_in_server_messages = on
color_pv_nick_like_channel = on
ctcp_time_format = "%a, %d %b %Y %T %z"
display_away = local
display_ctcp_blocked = on
display_ctcp_reply = on
display_ctcp_unknown = on
display_host_join = on
display_host_join_local = on
display_host_quit = on
display_join_message = "329,332,333,366"
display_old_topic = on
display_pv_away_once = on
display_pv_back = on
display_pv_warning_address = off
highlight_channel = "$nick"
highlight_pv = "$nick"
highlight_server = "$nick"
highlight_tags_restrict = "irc_privmsg,irc_notice"
item_channel_modes_hide_args = "k"
item_display_server = buffer_plugin
item_nick_modes = on
item_nick_prefix = on
join_auto_add_chantype = off
msgbuffer_fallback = current
new_channel_position = none
new_pv_position = none
nick_completion_smart = speakers
nick_mode = prefix
nick_mode_empty = off
nicks_hide_password = "nickserv"
notice_as_pv = auto
notice_welcome_redirect = on
notice_welcome_tags = ""
notify_tags_ison = "notify_message"
notify_tags_whois = "notify_message"
part_closes_buffer = off
pv_buffer = independent
pv_tags = "notify_private"
raw_messages = 256
server_buffer = merge_with_core
smart_filter = on
smart_filter_chghost = on
smart_filter_delay = 5
smart_filter_join = on
smart_filter_join_unmask = 30
smart_filter_mode = "+"
smart_filter_nick = on
smart_filter_quit = on
temporary_servers = off
topic_strip_colors = off
[color]
input_nick = lightcyan
item_channel_modes = default
item_lag_counting = default
item_lag_finished = yellow
item_nick_modes = default
message_chghost = brown
message_join = green
message_kick = red
message_quit = red
mirc_remap = "1,-1:darkgray"
nick_prefixes = "y:lightred;q:lightred;a:lightcyan;o:lightgreen;h:lightmagenta;v:yellow;*:lightblue"
notice = green
reason_kick = default
reason_quit = default
topic_current = default
topic_new = white
topic_old = default
[network]
autoreconnect_delay_growing = 2
autoreconnect_delay_max = 600
ban_mask_default = "*!$ident@$host"
colors_receive = on
colors_send = on
lag_check = 60
lag_max = 1800
lag_min_show = 500
lag_reconnect = 300
lag_refresh_interval = 1
notify_check_ison = 1
notify_check_whois = 5
sasl_fail_unavailable = on
send_unknown_commands = off
whois_double_nick = off
[msgbuffer]
[ctcp]
[ignore]
[server_default]
addresses = ""
anti_flood_prio_high = 2
anti_flood_prio_low = 2
autoconnect = off
autojoin = ""
autoreconnect = on
autoreconnect_delay = 10
autorejoin = off
autorejoin_delay = 30
away_check = 0
away_check_max_nicks = 25
capabilities = ""
charset_message = message
command = ""
command_delay = 0
connection_timeout = 60
ipv6 = on
local_hostname = ""
msg_kick = ""
msg_part = "WeeChat ${info:version}"
msg_quit = "WeeChat ${info:version}"
nicks = "daniel,daniel1,daniel2,daniel3,daniel4"
nicks_alternate = on
notify = ""
password = ""
proxy = ""
realname = ""
sasl_fail = continue
sasl_key = ""
sasl_mechanism = plain
sasl_password = ""
sasl_timeout = 15
sasl_username = ""
split_msg_max_length = 512
ssl = off
ssl_cert = ""
ssl_dhkey_size = 2048
ssl_fingerprint = ""
ssl_password = ""
ssl_priorities = "NORMAL:-VERS-SSL3.0"
ssl_verify = on
usermode = ""
username = "daniel"
[server]

36
apps/weechat/logger.conf Normal file
View File

@ -0,0 +1,36 @@
#
# weechat -- logger.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[look]
backlog = 20
backlog_conditions = ""
[color]
backlog_end = default
backlog_line = default
[file]
auto_log = on
color_lines = off
flush_delay = 120
fsync = off
info_lines = off
mask = "$plugin.$name.weechatlog"
name_lower_case = on
nick_prefix = ""
nick_suffix = ""
path = "%h/logs/"
replacement_char = "_"
time_format = "%Y-%m-%d %H:%M:%S"
[level]
[mask]

14
apps/weechat/lua.conf Normal file
View File

@ -0,0 +1,14 @@
#
# weechat -- lua.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[look]
check_license = off
eval_keep_context = on

14
apps/weechat/perl.conf Normal file
View File

@ -0,0 +1,14 @@
#
# weechat -- perl.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[look]
check_license = off
eval_keep_context = on

14
apps/weechat/python.conf Normal file
View File

@ -0,0 +1,14 @@
#
# weechat -- python.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[look]
check_license = off
eval_keep_context = on

55
apps/weechat/relay.conf Normal file
View File

@ -0,0 +1,55 @@
#
# weechat -- relay.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[look]
auto_open_buffer = on
raw_messages = 256
[color]
client = cyan
status_active = lightblue
status_auth_failed = lightred
status_connecting = yellow
status_disconnected = lightred
status_waiting_auth = brown
text = default
text_bg = default
text_selected = white
[network]
allow_empty_password = off
allowed_ips = ""
bind_address = ""
clients_purge_delay = 0
compression_level = 6
ipv6 = on
max_clients = 5
password = ""
ssl_cert_key = "%h/ssl/relay.pem"
ssl_priorities = "NORMAL:-VERS-SSL3.0"
totp_secret = ""
totp_window = 0
websocket_allowed_origins = ""
[irc]
backlog_max_minutes = 1440
backlog_max_number = 256
backlog_since_last_disconnect = on
backlog_since_last_message = off
backlog_tags = "irc_privmsg"
backlog_time_format = "[%H:%M] "
[weechat]
commands = ""
[port]
[path]

56
apps/weechat/script.conf Normal file
View File

@ -0,0 +1,56 @@
#
# weechat -- script.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[look]
columns = "%s %n %V %v %u | %d | %t"
diff_color = on
diff_command = "auto"
display_source = on
quiet_actions = on
sort = "i,p,n"
translate_description = on
use_keys = on
[color]
status_autoloaded = cyan
status_held = white
status_installed = lightcyan
status_obsolete = lightmagenta
status_popular = yellow
status_running = lightgreen
status_unknown = lightred
text = default
text_bg = default
text_bg_selected = red
text_date = default
text_date_selected = white
text_delimiters = default
text_description = default
text_description_selected = white
text_extension = default
text_extension_selected = white
text_name = cyan
text_name_selected = lightcyan
text_selected = white
text_tags = brown
text_tags_selected = yellow
text_version = magenta
text_version_loaded = default
text_version_loaded_selected = white
text_version_selected = lightmagenta
[scripts]
autoload = on
cache_expire = 1440
download_timeout = 30
hold = ""
path = "%h/script"
url = "https://weechat.org/files/plugins.xml.gz"

33
apps/weechat/spell.conf Normal file
View File

@ -0,0 +1,33 @@
#
# weechat -- spell.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[color]
misspelled = lightred
suggestion = default
suggestion_delimiter_dict = cyan
suggestion_delimiter_word = cyan
[check]
commands = "away,command,cycle,kick,kickban,me,msg,notice,part,query,quit,topic"
default_dict = ""
during_search = off
enabled = off
real_time = off
suggestions = -1
word_min_length = 2
[dict]
[look]
suggestion_delimiter_dict = " / "
suggestion_delimiter_word = ","
[option]

14
apps/weechat/tcl.conf Normal file
View File

@ -0,0 +1,14 @@
#
# weechat -- tcl.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[look]
check_license = off
eval_keep_context = on

67
apps/weechat/trigger.conf Normal file
View File

@ -0,0 +1,67 @@
#
# weechat -- trigger.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[look]
enabled = on
monitor_strip_colors = off
[color]
flag_command = lightgreen
flag_conditions = yellow
flag_post_action = lightblue
flag_regex = lightcyan
flag_return_code = lightmagenta
regex = white
replace = cyan
trigger = green
trigger_disabled = red
[trigger]
beep.arguments = ""
beep.command = "/print -beep"
beep.conditions = "${tg_displayed} && (${tg_highlight} || ${tg_msg_pv})"
beep.enabled = on
beep.hook = print
beep.post_action = none
beep.regex = ""
beep.return_code = ok
cmd_pass.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth"
cmd_pass.command = ""
cmd_pass.conditions = ""
cmd_pass.enabled = on
cmd_pass.hook = modifier
cmd_pass.post_action = none
cmd_pass.regex = "==^((/(msg|m|quote) +(-server +[^ ]+ +)?nickserv +(id|identify|set +password|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+|recover +[^ ]+) +)|/oper +[^ ]+ +|/quote +pass +|/set +[^ ]*password[^ ]* +|/secure +(passphrase|decrypt|set +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}"
cmd_pass.return_code = ok
cmd_pass_register.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth"
cmd_pass_register.command = ""
cmd_pass_register.conditions = ""
cmd_pass_register.enabled = on
cmd_pass_register.hook = modifier
cmd_pass_register.post_action = none
cmd_pass_register.regex = "==^(/(msg|m|quote) +nickserv +register +)([^ ]+)(.*)==${re:1}${hide:*,${re:3}}${re:4}"
cmd_pass_register.return_code = ok
msg_auth.arguments = "5000|irc_message_auth"
msg_auth.command = ""
msg_auth.conditions = ""
msg_auth.enabled = on
msg_auth.hook = modifier
msg_auth.post_action = none
msg_auth.regex = "==^(.*(id|identify|set +password|register|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+|recover +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}"
msg_auth.return_code = ok
server_pass.arguments = "5000|input_text_display;5000|history_add"
server_pass.command = ""
server_pass.conditions = ""
server_pass.enabled = on
server_pass.hook = modifier
server_pass.post_action = none
server_pass.regex = "==^(/(server|connect) .*-(sasl_)?password=)([^ ]+)(.*)==${re:1}${hide:*,${re:4}}${re:5}"
server_pass.return_code = ok

674
apps/weechat/weechat.conf Normal file
View File

@ -0,0 +1,674 @@
#
# weechat -- weechat.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[debug]
[startup]
command_after_plugins = ""
command_before_plugins = ""
display_logo = on
display_version = on
sys_rlimit = ""
[look]
align_end_of_lines = message
align_multiline_words = on
bar_more_down = "++"
bar_more_left = "<<"
bar_more_right = ">>"
bar_more_up = "--"
bare_display_exit_on_input = on
bare_display_time_format = "%H:%M"
buffer_auto_renumber = on
buffer_notify_default = all
buffer_position = end
buffer_search_case_sensitive = off
buffer_search_force_default = off
buffer_search_regex = off
buffer_search_where = prefix_message
buffer_time_format = "%H:%M:%S"
buffer_time_same = ""
color_basic_force_bold = off
color_inactive_buffer = on
color_inactive_message = on
color_inactive_prefix = on
color_inactive_prefix_buffer = on
color_inactive_time = off
color_inactive_window = on
color_nick_offline = off
color_pairs_auto_reset = 5
color_real_white = off
command_chars = ""
command_incomplete = off
confirm_quit = off
confirm_upgrade = off
day_change = on
day_change_message_1date = "-- %a, %d %b %Y --"
day_change_message_2dates = "-- %%a, %%d %%b %%Y (%a, %d %b %Y) --"
eat_newline_glitch = off
emphasized_attributes = ""
highlight = ""
highlight_regex = ""
highlight_tags = ""
hotlist_add_conditions = "${away} || ${buffer.num_displayed} == 0 || ${info:relay_client_count,weechat,connected} > 0"
hotlist_buffer_separator = ", "
hotlist_count_max = 2
hotlist_count_min_msg = 2
hotlist_names_count = 3
hotlist_names_length = 0
hotlist_names_level = 12
hotlist_names_merged_buffers = off
hotlist_prefix = "H: "
hotlist_remove = merged
hotlist_short_names = on
hotlist_sort = group_time_asc
hotlist_suffix = ""
hotlist_unique_numbers = on
input_cursor_scroll = 20
input_share = none
input_share_overwrite = off
input_undo_max = 32
item_away_message = on
item_buffer_filter = "*"
item_buffer_zoom = "!"
item_mouse_status = "M"
item_time_format = "%H:%M"
jump_current_to_previous_buffer = on
jump_previous_buffer_when_closing = on
jump_smart_back_to_buffer = on
key_bind_safe = on
key_grab_delay = 800
mouse = off
mouse_timer_delay = 100
nick_color_force = ""
nick_color_hash = djb2
nick_color_hash_salt = ""
nick_color_stop_chars = "_|["
nick_prefix = ""
nick_suffix = ""
paste_auto_add_newline = on
paste_bracketed = on
paste_bracketed_timer_delay = 10
paste_max_lines = 1
prefix_action = " *"
prefix_align = right
prefix_align_max = 0
prefix_align_min = 0
prefix_align_more = "+"
prefix_align_more_after = on
prefix_buffer_align = right
prefix_buffer_align_max = 0
prefix_buffer_align_more = "+"
prefix_buffer_align_more_after = on
prefix_error = "=!="
prefix_join = "-->"
prefix_network = "--"
prefix_quit = "<--"
prefix_same_nick = ""
prefix_same_nick_middle = ""
prefix_suffix = "|"
quote_nick_prefix = "<"
quote_nick_suffix = ">"
quote_time_format = "%H:%M:%S"
read_marker = line
read_marker_always_show = off
read_marker_string = "- "
save_config_on_exit = on
save_config_with_fsync = off
save_layout_on_exit = none
scroll_amount = 3
scroll_bottom_after_switch = off
scroll_page_percent = 100
search_text_not_found_alert = on
separator_horizontal = "-"
separator_vertical = ""
tab_width = 1
time_format = "%a, %d %b %Y %T"
window_auto_zoom = off
window_separator_horizontal = on
window_separator_vertical = on
window_title = ""
word_chars_highlight = "!\u00A0,-,_,|,alnum"
word_chars_input = "!\u00A0,-,_,|,alnum"
[palette]
[color]
bar_more = lightmagenta
chat = default
chat_bg = default
chat_buffer = white
chat_channel = white
chat_day_change = cyan
chat_delimiters = green
chat_highlight = yellow
chat_highlight_bg = magenta
chat_host = cyan
chat_inactive_buffer = default
chat_inactive_window = default
chat_nick = lightcyan
chat_nick_colors = "cyan,magenta,green,brown,lightblue,default,lightcyan,lightmagenta,lightgreen,blue"
chat_nick_offline = default
chat_nick_offline_highlight = default
chat_nick_offline_highlight_bg = blue
chat_nick_other = cyan
chat_nick_prefix = green
chat_nick_self = white
chat_nick_suffix = green
chat_prefix_action = white
chat_prefix_buffer = brown
chat_prefix_buffer_inactive_buffer = default
chat_prefix_error = yellow
chat_prefix_join = lightgreen
chat_prefix_more = lightmagenta
chat_prefix_network = magenta
chat_prefix_quit = lightred
chat_prefix_suffix = green
chat_read_marker = magenta
chat_read_marker_bg = default
chat_server = brown
chat_tags = red
chat_text_found = yellow
chat_text_found_bg = lightmagenta
chat_time = default
chat_time_delimiters = brown
chat_value = cyan
chat_value_null = blue
emphasized = yellow
emphasized_bg = magenta
input_actions = lightgreen
input_text_not_found = red
item_away = yellow
nicklist_away = cyan
nicklist_group = green
separator = blue
status_count_highlight = magenta
status_count_msg = brown
status_count_other = default
status_count_private = green
status_data_highlight = lightmagenta
status_data_msg = yellow
status_data_other = default
status_data_private = lightgreen
status_filter = green
status_more = yellow
status_mouse = green
status_name = white
status_name_ssl = lightgreen
status_nicklist_count = default
status_number = yellow
status_time = default
[completion]
base_word_until_cursor = on
command_inline = on
default_template = "%(nicks)|%(irc_channels)"
nick_add_space = on
nick_case_sensitive = off
nick_completer = ": "
nick_first_only = off
nick_ignore_chars = "[]`_-^"
partial_completion_alert = on
partial_completion_command = off
partial_completion_command_arg = off
partial_completion_count = on
partial_completion_other = off
partial_completion_templates = "config_options"
[history]
display_default = 5
max_buffer_lines_minutes = 0
max_buffer_lines_number = 4096
max_commands = 100
max_visited_buffers = 50
[proxy]
[network]
connection_timeout = 60
gnutls_ca_file = "/etc/ssl/certs/ca-certificates.crt"
gnutls_handshake_timeout = 30
proxy_curl = ""
[plugin]
autoload = "*"
debug = off
extension = ".so,.dll"
path = "%h/plugins"
save_config_on_unload = on
[bar]
buflist.color_bg = default
buflist.color_delim = default
buflist.color_fg = default
buflist.conditions = ""
buflist.filling_left_right = vertical
buflist.filling_top_bottom = columns_vertical
buflist.hidden = off
buflist.items = "buflist"
buflist.position = left
buflist.priority = 0
buflist.separator = on
buflist.size = 0
buflist.size_max = 0
buflist.type = root
fset.color_bg = default
fset.color_delim = cyan
fset.color_fg = default
fset.conditions = "${buffer.full_name} == fset.fset"
fset.filling_left_right = vertical
fset.filling_top_bottom = horizontal
fset.hidden = off
fset.items = "fset"
fset.position = top
fset.priority = 0
fset.separator = on
fset.size = 3
fset.size_max = 3
fset.type = window
input.color_bg = default
input.color_delim = cyan
input.color_fg = default
input.conditions = ""
input.filling_left_right = vertical
input.filling_top_bottom = horizontal
input.hidden = off
input.items = "[input_prompt]+(away),[input_search],[input_paste],input_text"
input.position = bottom
input.priority = 1000
input.separator = off
input.size = 1
input.size_max = 0
input.type = window
nicklist.color_bg = default
nicklist.color_delim = cyan
nicklist.color_fg = default
nicklist.conditions = "${nicklist}"
nicklist.filling_left_right = vertical
nicklist.filling_top_bottom = columns_vertical
nicklist.hidden = on
nicklist.items = "buffer_nicklist"
nicklist.position = right
nicklist.priority = 200
nicklist.separator = on
nicklist.size = 0
nicklist.size_max = 10
nicklist.type = window
status.color_bg = 0
status.color_delim = cyan
status.color_fg = default
status.conditions = ""
status.filling_left_right = vertical
status.filling_top_bottom = horizontal
status.hidden = off
status.items = "[time],[buffer_last_number],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_zoom+buffer_filter,scroll,[lag],[hotlist],completion"
status.position = bottom
status.priority = 500
status.separator = off
status.size = 1
status.size_max = 0
status.type = window
title.color_bg = 0
title.color_delim = cyan
title.color_fg = default
title.conditions = ""
title.filling_left_right = vertical
title.filling_top_bottom = horizontal
title.hidden = off
title.items = "buffer_title"
title.position = top
title.priority = 500
title.separator = off
title.size = 1
title.size_max = 0
title.type = window
[layout]
[notify]
perl.highmon = none
[filter]
[key]
ctrl-? = "/input delete_previous_char"
ctrl-A = "/input move_beginning_of_line"
ctrl-B = "/input move_previous_char"
ctrl-C_ = "/input insert \x1F"
ctrl-Cb = "/input insert \x02"
ctrl-Cc = "/input insert \x03"
ctrl-Ci = "/input insert \x1D"
ctrl-Co = "/input insert \x0F"
ctrl-Cv = "/input insert \x16"
ctrl-D = "/input delete_next_char"
ctrl-E = "/input move_end_of_line"
ctrl-F = "/input move_next_char"
ctrl-H = "/input delete_previous_char"
ctrl-I = "/input complete_next"
ctrl-J = "/input return"
ctrl-K = "/input delete_end_of_line"
ctrl-L = "/window refresh"
ctrl-M = "/input return"
ctrl-N = "/buffer +1"
ctrl-P = "/buffer -1"
ctrl-R = "/input search_text_here"
ctrl-Sctrl-U = "/input set_unread"
ctrl-T = "/input transpose_chars"
ctrl-U = "/input delete_beginning_of_line"
ctrl-W = "/input delete_previous_word"
ctrl-X = "/input switch_active_buffer"
ctrl-Y = "/input clipboard_paste"
meta-meta-OP = "/bar scroll buflist * b"
meta-meta-OQ = "/bar scroll buflist * e"
meta-meta2-11~ = "/bar scroll buflist * b"
meta-meta2-12~ = "/bar scroll buflist * e"
meta-meta2-1~ = "/window scroll_top"
meta-meta2-23~ = "/bar scroll nicklist * b"
meta-meta2-24~ = "/bar scroll nicklist * e"
meta-meta2-4~ = "/window scroll_bottom"
meta-meta2-5~ = "/window scroll_up"
meta-meta2-6~ = "/window scroll_down"
meta-meta2-7~ = "/window scroll_top"
meta-meta2-8~ = "/window scroll_bottom"
meta-meta2-A = "/buffer -1"
meta-meta2-B = "/buffer +1"
meta-meta2-C = "/buffer +1"
meta-meta2-D = "/buffer -1"
meta-- = "/filter toggle @"
meta-/ = "/input jump_last_buffer_displayed"
meta-0 = "/buffer *10"
meta-1 = "/buffer *1"
meta-2 = "/buffer *2"
meta-3 = "/buffer *3"
meta-4 = "/buffer *4"
meta-5 = "/buffer *5"
meta-6 = "/buffer *6"
meta-7 = "/buffer *7"
meta-8 = "/buffer *8"
meta-9 = "/buffer *9"
meta-< = "/input jump_previously_visited_buffer"
meta-= = "/filter toggle"
meta-> = "/input jump_next_visited_buffer"
meta-OA = "/input history_global_previous"
meta-OB = "/input history_global_next"
meta-OC = "/input move_next_word"
meta-OD = "/input move_previous_word"
meta-OF = "/input move_end_of_line"
meta-OH = "/input move_beginning_of_line"
meta-OP = "/bar scroll buflist * -100%"
meta-OQ = "/bar scroll buflist * +100%"
meta-Oa = "/input history_global_previous"
meta-Ob = "/input history_global_next"
meta-Oc = "/input move_next_word"
meta-Od = "/input move_previous_word"
meta2-11^ = "/bar scroll buflist * -100%"
meta2-11~ = "/bar scroll buflist * -100%"
meta2-12^ = "/bar scroll buflist * +100%"
meta2-12~ = "/bar scroll buflist * +100%"
meta2-15~ = "/buffer -1"
meta2-17~ = "/buffer +1"
meta2-18~ = "/window -1"
meta2-19~ = "/window +1"
meta2-1;3A = "/buffer -1"
meta2-1;3B = "/buffer +1"
meta2-1;3C = "/buffer +1"
meta2-1;3D = "/buffer -1"
meta2-1;3F = "/window scroll_bottom"
meta2-1;3H = "/window scroll_top"
meta2-1;3P = "/bar scroll buflist * b"
meta2-1;3Q = "/bar scroll buflist * e"
meta2-1;5A = "/input history_global_previous"
meta2-1;5B = "/input history_global_next"
meta2-1;5C = "/input move_next_word"
meta2-1;5D = "/input move_previous_word"
meta2-1;5P = "/bar scroll buflist * -100%"
meta2-1;5Q = "/bar scroll buflist * +100%"
meta2-1~ = "/input move_beginning_of_line"
meta2-200~ = "/input paste_start"
meta2-201~ = "/input paste_stop"
meta2-20~ = "/bar scroll title * -30%"
meta2-21~ = "/bar scroll title * +30%"
meta2-23;3~ = "/bar scroll nicklist * b"
meta2-23;5~ = "/bar scroll nicklist * -100%"
meta2-23^ = "/bar scroll nicklist * -100%"
meta2-23~ = "/bar scroll nicklist * -100%"
meta2-24;3~ = "/bar scroll nicklist * e"
meta2-24;5~ = "/bar scroll nicklist * +100%"
meta2-24^ = "/bar scroll nicklist * +100%"
meta2-24~ = "/bar scroll nicklist * +100%"
meta2-3~ = "/input delete_next_char"
meta2-4~ = "/input move_end_of_line"
meta2-5;3~ = "/window scroll_up"
meta2-5~ = "/window page_up"
meta2-6;3~ = "/window scroll_down"
meta2-6~ = "/window page_down"
meta2-7~ = "/input move_beginning_of_line"
meta2-8~ = "/input move_end_of_line"
meta2-A = "/input history_previous"
meta2-B = "/input history_next"
meta2-C = "/input move_next_char"
meta2-D = "/input move_previous_char"
meta2-F = "/input move_end_of_line"
meta2-G = "/window page_down"
meta2-H = "/input move_beginning_of_line"
meta2-I = "/window page_up"
meta2-Z = "/input complete_previous"
meta2-[E = "/buffer -1"
meta-_ = "/input redo"
meta-a = "/input jump_smart"
meta-b = "/input move_previous_word"
meta-d = "/input delete_next_word"
meta-f = "/input move_next_word"
meta-h = "/input hotlist_clear"
meta-jmeta-f = "/buffer -"
meta-jmeta-l = "/buffer +"
meta-jmeta-r = "/server raw"
meta-jmeta-s = "/server jump"
meta-j01 = "/buffer *1"
meta-j02 = "/buffer *2"
meta-j03 = "/buffer *3"
meta-j04 = "/buffer *4"
meta-j05 = "/buffer *5"
meta-j06 = "/buffer *6"
meta-j07 = "/buffer *7"
meta-j08 = "/buffer *8"
meta-j09 = "/buffer *9"
meta-j10 = "/buffer *10"
meta-j11 = "/buffer *11"
meta-j12 = "/buffer *12"
meta-j13 = "/buffer *13"
meta-j14 = "/buffer *14"
meta-j15 = "/buffer *15"
meta-j16 = "/buffer *16"
meta-j17 = "/buffer *17"
meta-j18 = "/buffer *18"
meta-j19 = "/buffer *19"
meta-j20 = "/buffer *20"
meta-j21 = "/buffer *21"
meta-j22 = "/buffer *22"
meta-j23 = "/buffer *23"
meta-j24 = "/buffer *24"
meta-j25 = "/buffer *25"
meta-j26 = "/buffer *26"
meta-j27 = "/buffer *27"
meta-j28 = "/buffer *28"
meta-j29 = "/buffer *29"
meta-j30 = "/buffer *30"
meta-j31 = "/buffer *31"
meta-j32 = "/buffer *32"
meta-j33 = "/buffer *33"
meta-j34 = "/buffer *34"
meta-j35 = "/buffer *35"
meta-j36 = "/buffer *36"
meta-j37 = "/buffer *37"
meta-j38 = "/buffer *38"
meta-j39 = "/buffer *39"
meta-j40 = "/buffer *40"
meta-j41 = "/buffer *41"
meta-j42 = "/buffer *42"
meta-j43 = "/buffer *43"
meta-j44 = "/buffer *44"
meta-j45 = "/buffer *45"
meta-j46 = "/buffer *46"
meta-j47 = "/buffer *47"
meta-j48 = "/buffer *48"
meta-j49 = "/buffer *49"
meta-j50 = "/buffer *50"
meta-j51 = "/buffer *51"
meta-j52 = "/buffer *52"
meta-j53 = "/buffer *53"
meta-j54 = "/buffer *54"
meta-j55 = "/buffer *55"
meta-j56 = "/buffer *56"
meta-j57 = "/buffer *57"
meta-j58 = "/buffer *58"
meta-j59 = "/buffer *59"
meta-j60 = "/buffer *60"
meta-j61 = "/buffer *61"
meta-j62 = "/buffer *62"
meta-j63 = "/buffer *63"
meta-j64 = "/buffer *64"
meta-j65 = "/buffer *65"
meta-j66 = "/buffer *66"
meta-j67 = "/buffer *67"
meta-j68 = "/buffer *68"
meta-j69 = "/buffer *69"
meta-j70 = "/buffer *70"
meta-j71 = "/buffer *71"
meta-j72 = "/buffer *72"
meta-j73 = "/buffer *73"
meta-j74 = "/buffer *74"
meta-j75 = "/buffer *75"
meta-j76 = "/buffer *76"
meta-j77 = "/buffer *77"
meta-j78 = "/buffer *78"
meta-j79 = "/buffer *79"
meta-j80 = "/buffer *80"
meta-j81 = "/buffer *81"
meta-j82 = "/buffer *82"
meta-j83 = "/buffer *83"
meta-j84 = "/buffer *84"
meta-j85 = "/buffer *85"
meta-j86 = "/buffer *86"
meta-j87 = "/buffer *87"
meta-j88 = "/buffer *88"
meta-j89 = "/buffer *89"
meta-j90 = "/buffer *90"
meta-j91 = "/buffer *91"
meta-j92 = "/buffer *92"
meta-j93 = "/buffer *93"
meta-j94 = "/buffer *94"
meta-j95 = "/buffer *95"
meta-j96 = "/buffer *96"
meta-j97 = "/buffer *97"
meta-j98 = "/buffer *98"
meta-j99 = "/buffer *99"
meta-k = "/input grab_key_command"
meta-l = "/window bare"
meta-m = "/mute mouse toggle"
meta-n = "/window scroll_next_highlight"
meta-p = "/window scroll_previous_highlight"
meta-r = "/input delete_line"
meta-s = "/mute spell toggle"
meta-u = "/window scroll_unread"
meta-wmeta-meta2-A = "/window up"
meta-wmeta-meta2-B = "/window down"
meta-wmeta-meta2-C = "/window right"
meta-wmeta-meta2-D = "/window left"
meta-wmeta2-1;3A = "/window up"
meta-wmeta2-1;3B = "/window down"
meta-wmeta2-1;3C = "/window right"
meta-wmeta2-1;3D = "/window left"
meta-wmeta-b = "/window balance"
meta-wmeta-s = "/window swap"
meta-x = "/input zoom_merged_buffer"
meta-z = "/window zoom"
ctrl-_ = "/input undo"
[key_search]
ctrl-I = "/input search_switch_where"
ctrl-J = "/input search_stop_here"
ctrl-M = "/input search_stop_here"
ctrl-Q = "/input search_stop"
ctrl-R = "/input search_switch_regex"
meta2-A = "/input search_previous"
meta2-B = "/input search_next"
meta-c = "/input search_switch_case"
[key_cursor]
ctrl-J = "/cursor stop"
ctrl-M = "/cursor stop"
meta-meta2-A = "/cursor move area_up"
meta-meta2-B = "/cursor move area_down"
meta-meta2-C = "/cursor move area_right"
meta-meta2-D = "/cursor move area_left"
meta2-1;3A = "/cursor move area_up"
meta2-1;3B = "/cursor move area_down"
meta2-1;3C = "/cursor move area_right"
meta2-1;3D = "/cursor move area_left"
meta2-A = "/cursor move up"
meta2-B = "/cursor move down"
meta2-C = "/cursor move right"
meta2-D = "/cursor move left"
@chat(python.*):D = "hsignal:slack_cursor_delete"
@chat(python.*):L = "hsignal:slack_cursor_linkarchive"
@chat(python.*):M = "hsignal:slack_cursor_message"
@chat(python.*):R = "hsignal:slack_cursor_reply"
@chat(python.*):T = "hsignal:slack_cursor_thread"
@item(buffer_nicklist):K = "/window ${_window_number};/kickban ${nick}"
@item(buffer_nicklist):b = "/window ${_window_number};/ban ${nick}"
@item(buffer_nicklist):k = "/window ${_window_number};/kick ${nick}"
@item(buffer_nicklist):q = "/window ${_window_number};/query ${nick};/cursor stop"
@item(buffer_nicklist):w = "/window ${_window_number};/whois ${nick}"
@chat:Q = "hsignal:chat_quote_time_prefix_message;/cursor stop"
@chat:m = "hsignal:chat_quote_message;/cursor stop"
@chat:q = "hsignal:chat_quote_prefix_message;/cursor stop"
[key_mouse]
@bar(buflist):ctrl-wheeldown = "hsignal:buflist_mouse"
@bar(buflist):ctrl-wheelup = "hsignal:buflist_mouse"
@bar(input):button2 = "/input grab_mouse_area"
@bar(nicklist):button1-gesture-down = "/bar scroll nicklist ${_window_number} +100%"
@bar(nicklist):button1-gesture-down-long = "/bar scroll nicklist ${_window_number} e"
@bar(nicklist):button1-gesture-up = "/bar scroll nicklist ${_window_number} -100%"
@bar(nicklist):button1-gesture-up-long = "/bar scroll nicklist ${_window_number} b"
@chat(fset.fset):button1 = "/window ${_window_number};/fset -go ${_chat_line_y}"
@chat(fset.fset):button2* = "hsignal:fset_mouse"
@chat(fset.fset):wheeldown = "/fset -down 5"
@chat(fset.fset):wheelup = "/fset -up 5"
@chat(python.*):button2 = "hsignal:slack_mouse"
@chat(script.scripts):button1 = "/window ${_window_number};/script go ${_chat_line_y}"
@chat(script.scripts):button2 = "/window ${_window_number};/script go ${_chat_line_y};/script installremove -q ${script_name_with_extension}"
@chat(script.scripts):wheeldown = "/script down 5"
@chat(script.scripts):wheelup = "/script up 5"
@item(buffer_nicklist):button1 = "/window ${_window_number};/query ${nick}"
@item(buffer_nicklist):button1-gesture-left = "/window ${_window_number};/kick ${nick}"
@item(buffer_nicklist):button1-gesture-left-long = "/window ${_window_number};/kickban ${nick}"
@item(buffer_nicklist):button2 = "/window ${_window_number};/whois ${nick}"
@item(buffer_nicklist):button2-gesture-left = "/window ${_window_number};/ban ${nick}"
@item(buflist):button1* = "hsignal:buflist_mouse"
@item(buflist):button2* = "hsignal:buflist_mouse"
@item(buflist2):button1* = "hsignal:buflist_mouse"
@item(buflist2):button2* = "hsignal:buflist_mouse"
@item(buflist3):button1* = "hsignal:buflist_mouse"
@item(buflist3):button2* = "hsignal:buflist_mouse"
@bar:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%"
@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%"
@chat:button1 = "/window ${_window_number}"
@chat:button1-gesture-left = "/window ${_window_number};/buffer -1"
@chat:button1-gesture-left-long = "/window ${_window_number};/buffer 1"
@chat:button1-gesture-right = "/window ${_window_number};/buffer +1"
@chat:button1-gesture-right-long = "/window ${_window_number};/input jump_last_buffer"
@chat:ctrl-wheeldown = "/window scroll_horiz -window ${_window_number} +10%"
@chat:ctrl-wheelup = "/window scroll_horiz -window ${_window_number} -10%"
@chat:wheeldown = "/window scroll_down -window ${_window_number}"
@chat:wheelup = "/window scroll_up -window ${_window_number}"
@*:button3 = "/cursor go ${_x},${_y}"

49
apps/weechat/xfer.conf Normal file
View File

@ -0,0 +1,49 @@
#
# weechat -- xfer.conf
#
# WARNING: It is NOT recommended to edit this file by hand,
# especially if WeeChat is running.
#
# Use /set or similar command to change settings in WeeChat.
#
# For more info, see: https://weechat.org/doc/quickstart
#
[look]
auto_open_buffer = on
progress_bar_size = 20
pv_tags = "notify_private"
[color]
status_aborted = lightred
status_active = lightblue
status_connecting = yellow
status_done = lightgreen
status_failed = lightred
status_waiting = lightcyan
text = default
text_bg = default
text_selected = white
[network]
blocksize = 65536
fast_send = on
own_ip = ""
port_range = ""
send_ack = on
speed_limit_recv = 0
speed_limit_send = 0
timeout = 300
[file]
auto_accept_chats = off
auto_accept_files = off
auto_accept_nicks = ""
auto_check_crc32 = off
auto_rename = on
auto_resume = on
convert_spaces = on
download_path = "%h/xfer"
download_temporary_suffix = ".part"
upload_path = "~"
use_nick_in_filename = on

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash
#!/usr/bin/env sh
source "$DOTFILES_PATH/de/bar/bar.bash" --just-vars
. "$DOTFILES_PATH/apps/de/polybar/run" --just-vars
LAUNCHER_FONT="$BAR_FONT"
LAUNCHER_FONT_SIZE="$BAR_FONT_SIZE"
@ -10,10 +10,7 @@ BACKGROUND_COLOR=$(xrq background)
FOREGROUND_COLOR=$(xrq foreground)
GAP=$(xrq internalBorder)
# load a per-device config last so anything can be overridden
if [ -a "$EDFP/app-launcher" ]; then
source "$EDFP/app-launcher"
fi
. maybe_source_env_file app-launcher
rofi \
-combi-modi run,window \

5
bin/archive Executable file
View File

@ -0,0 +1,5 @@
#!/usr/bin/env bash
archive_name="$(basename "${1}").tar.zstd"
tar --zstd -cvf "${archive_name}" "${@}"
echo "Archive created at: ${archive_name} "

5
bin/archive.moon Executable file
View File

@ -0,0 +1,5 @@
#!/usr/bin/env moon
archive_name = "#{string.gsub arg[1], "(.*/)(.*)", "%2"}.tar.zstd"
os.execute "tar --zstd -cvf '#{archive_name}' '#{table.concat arg, "' '"}'"
print "Archive created at: #{archive_name}"

View File

@ -1,3 +1,6 @@
#!/usr/bin/env bash
pacaur -Syyu --noconfirm --noedit
# TODO: update kernel with a flag?
# yes | pacman -Syu && kexec -l --initrd=/boot/initramfs-linux.img /boot/vmlinuz-linux && kexec -e

5
bin/clip Executable file
View File

@ -0,0 +1,5 @@
#!/usr/bin/env bash
xclip -selection primary
xclip -selection primary -out | xclip -selection clipboard
xclip -selection primary -out | xclip -selection secondary

5
bin/clipstatus Executable file
View File

@ -0,0 +1,5 @@
#!/usr/bin/env sh
echo "Primary : $(xclip -out -selection primary)"
echo "Secondary: $(xclip -out -selection primary)"
echo "Clipboard: $(xclip -out -selection clipboard)"

3
bin/compress Executable file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
zstd "$@"

3
bin/decompress Executable file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
unzstd "$@"

30
bin/dotfiles-make-env Executable file
View File

@ -0,0 +1,30 @@
#!/usr/bin/env bash
echo "Not implemented yet!"; exit 1
edfp="$ENV_PATH/$1"
mkdir -p "$edfp/"
mkdir -p "$edfp/.hidden/bash.d/"
mkdir -p "$edfp/bin/"
mkdir -p "$edfp/x/"
mkdir -p "$edfp/sway/waybar"
mkdir -p "$edfp/sway/config.d"
mkdir -p "$HOME/.bin/"
touches=(
"$edfp/bash"
"$edfp/x/init"
"$edfp/x/profile"
"$edfp/x/resources"
"$edfp/vim"
"$edfp/bspwm"
"$edfp/polybar"
"$edfp/app-launcher"
"$edfp/workdock"
)
for t in "${touches[@]}"; do
touch "$t"
done
chmod 700 -R "$edfp"

5
bin/dotfiles-update Executable file
View File

@ -0,0 +1,5 @@
#!/usr/bin/env bash
# TODO: implement
echo "Not implemented"

73
bin/email-via-mailgun-smtp Executable file
View File

@ -0,0 +1,73 @@
#!/usr/bin/env bash
err() {
errpre=""
errpost=""
if test -t 1; then
ncolors=$(tput colors)
if test -n "$ncolors" && test $ncolors -ge 8; then
errpre="$(tput setaf 1)"
errpost="$(tput setaf 7)"
fi
fi
>&2 echo "${errpre}ERROR: $@${errpost}"; usage; exit 1
}
warn() {
pre=""
post=""
if test -t 1; then
ncolors=$(tput colors)
if test -n "$ncolors" && test $ncolors -ge 8; then
pre="$(tput setaf 3)"
post="$(tput setaf 7)"
fi
fi
>&2 echo "${pre}WARNING: $@${post}"
}
usage() { >&2 cat <<USAGEDOC
usage:
email-via-mailgun-smtp [recipient] [subject] [username] [password] <<< 'Hello, world!'
email-via-mailgun-smtp will read all the input from stdin and use the contents as the body of the email.
recipient will default to DEFAULT_MAILGUN_SMTP_RECIPIENT if not set
username will default to DEFAULT_MAILGUN_SMTP_USERNAME if not set
password will default to DEFAULT_MAILGUN_SMTP_PASSWORD if not set
subject will default to DEFAULT_MAILGUN_SMTP_SUBJECT if not set
USAGEDOC
}
recipient="${1:-$DEFAULT_MAILGUN_SMTP_RECIPIENT}"; shift
[[ -z $recipient ]] && err 'No recipient provided.'
subject="${1:-$DEFAULT_MAILGUN_SMTP_SUBJECT}"; shift
[[ -z $subject ]] && warn 'No subject provided. Leaving blank.'
username="${1:-$DEFAULT_MAILGUN_SMTP_USERNAME}"; shift
[[ -z $username ]] && err 'No username provided.'
password="${1:-$DEFAULT_MAILGUN_SMTP_PASSWORD}"; shift
[[ -z $password ]] && err 'No password provided.'
warn "Reading email body from stdin..."
body=""
while read -r line; do
body="${body}\n${line}"
done
[[ -z $body ]] && err 'Body was blank.'
echo "Recipient: $recipient"
>&2 echo "Finished reading body. Sending email..."
swaks --auth \
--server smtp.mailgun.org \
--au "$username" \
--ap "$password" \
--to "$recipient" \
--h-Subject: "$subject" \
--body "$body"

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash
SOURCE=$(realpath "$1")
DEST=$(realpath -m "$2")
SOURCE=$(realpath "$1") # this one exists
DEST=$(realpath -m "$2") # this is the link to what exists
ln -s "$SOURCE" "$DEST"

18
bin/fsw
View File

@ -40,21 +40,32 @@ ${I}${I}${I}'.*' /etc/secrets \$HOME/.secrets
USAGE
}
dbg() {
if [[ ! -z ${FSW_DEBUG+x} ]]; then
echo -e "[debug] fsw: $@"
fi
}
if [[ $1 = '-h' ]] || [[ $1 = '--help' ]] || [[ -z $1 ]]; then
help
exit 0
fi
FSW_EVENTS="${FSW_EVENTS:-close_write}"
dbg "Events: $FSW_EVENTS"
SHELL_COMMAND="${1}"; shift
dbg "Command: $SHELL_COMMAND"
FILTER="${1}"; shift
dbg "Filter: $FILTER"
dbg "Directory: ${1}"
DIRS=("${1:-.}"); shift
if [[ -e $FILTER ]]; then
# TODO: this is a sad hack/workaround
echo "It looks like your filter is an actual file. I'll just watch that for you."
DIRS=("${FILTER}")
fi
while [[ ! -z $1 ]]; do
while [[ ! -z $1 ]] && $(realpath $1) &> /dev/null; do
dbg "Directory: ${1}"
DIRS+=("$1"); shift
done
inotifywait -m -e "${FSW_EVENTS}" -r "${DIRS[@]}" 2>&1 \
@ -62,12 +73,15 @@ inotifywait -m -e "${FSW_EVENTS}" -r "${DIRS[@]}" 2>&1 \
| while read -r dir events filename; do
if [[ "$dir $events" = "Watches established." ]]; then
echo "Ready."
dbg "Directory: ${DIRS[@]}"
else
export FSW_FILENAME="$filename"
export FSW_DIR="$dir"
export FSW_PATH="$dir$filename"
export FSW_FILE_EVENTS="$events"
export FSW_EVENT="$events $dir$filename"
<<< "$FSW_PATH" grep -P "$FILTER" > /dev/null 2>&1 && eval "${SHELL_COMMAND}"
dbg "Event:\n $(date)\n $FSW_PATH\n $FILTER\n $FSW_EVENT\n $dir $events $filename\n ${SHELL_COMMAND}"
dbg "Filtered Event: $(<<< "$FSW_PATH" grep -P "$FILTER")"
<<< "$FSW_PATH" grep -P "$FILTER" > /dev/null 2>&1 && eval "${SHELL_COMMAND}"
fi
done

Some files were not shown because too many files have changed in this diff Show More