scwrypts v3 refactor

This commit is contained in:
Wryn (yage) Wagner 2023-06-27 16:53:59 -06:00
parent 02ed7d615a
commit 1a64551465
57 changed files with 590 additions and 501 deletions

1
bin/altaria/default Symbolic link
View File

@ -0,0 +1 @@
homedock

View File

@ -1,22 +1,18 @@
#!/bin/zsh
source ${0:a:h}/xorg.zsh
xrandr --output HDMI-0 --mode 3840x2160; sleep 1
xrandr \
--output DP-0 \
--off \
--output DP-2 \
--output HDMI-0 \
--primary \
--mode 3840x2160 \
--rotate normal \
--pos 0x0 \
;
sleep 2;
xrandr --output DP-2 --mode 3840x2160 --rate 120;
pkill compton
$DOTWRYN/bin/set-background random
$DOTWRYN/bin/play-sound login
xset dpms 0 0 0 && xset s noblank && xset s off \
&& notify-send 'DPMS' 'disabled screen blank'
scwrypts desktop/screen-blank -- disable
scwrypts desktop/i3/set-background -- roy-art.jpg
scwrypts desktop/play-sound -- gamedock

View File

@ -1,24 +0,0 @@
#!/bin/zsh
source ${0:a:h}/xorg.zsh
xrandr --output HDMI-0 --mode 3840x2160; sleep 1
xrandr \
--output DP-0 \
--mode 3840x2160 \
--rotate normal \
--pos 0x0 \
--output DP-2 \
--primary \
--mode 3840x2160 \
--rotate normal \
--left-of DP-0 \
;
(pkill compton; sleep 1; compton;) &
$DOTWRYN/bin/set-background purple.jpg
$DOTWRYN/bin/play-sound login
xset dpms 0 0 0 && xset s noblank && xset s off \
&& notify-send 'DPMS' 'disabled screen blank'

20
bin/altaria/homedock Executable file
View File

@ -0,0 +1,20 @@
#!/bin/zsh
source ${0:a:h}/xorg.zsh
xrandr \
--output DP-0 \
--primary \
--mode 1920x1080 \
--rotate normal \
--pos 0x0 \
--output HDMI-0 \
--mode 1920x1080 \
--rotate normal \
--pos 0x0 \
;
(pkill compton; sleep 1; compton;) &
scwrypts desktop/screen-blank -- disable
scwrypts desktop/i3/set-background -- purple.jpg
scwrypts desktop/play-sound -- login

View File

@ -1,2 +1,3 @@
#!/bin/zsh
source $HOME/.config/wryn/env.zsh
[ ! $DISPLAY ] && export DISPLAY=:0

View File

@ -1,19 +0,0 @@
#!/bin/zsh
source $HOME/.config/wryn/env.zsh
case $1 in
up )
xbacklight + 10 \
|| gmux_backlight +100
;;
down )
xbacklight - 10 \
|| gmux_backlight -100
;;
* )
echo 'must specify "up" or "down"'
exit 1
;;
esac
$DOTWRYN/bin/play-sound backlight

1
bin/butterfree/default Symbolic link
View File

@ -0,0 +1 @@
undock

View File

@ -1,17 +0,0 @@
#!/bin/zsh
source $HOME/.config/wryn/env.zsh
#####################################################################
GET_COLORSCHEME_HEX() {
[ $1 ] && [[ $1 -le 15 ]] && [[ $1 -ge 0 ]] \
|| __FAIL 1 'must provide ANSI color number 0-15'
grep "^color$1" "$DOTWRYN/colorschemes/kitty.main" \
| awk '{print $2}' \
| sed 's/ //g; s/#//g' \
| tr '[:lower:]' '[:upper:]'
}
#####################################################################
[ ! $1 ] && return 0
GET_COLORSCHEME_HEX $@

View File

@ -1,5 +0,0 @@
#!/bin/zsh
i3-nagbar \
-t warning \
-m 'Do you really want to exit i3?' \
-B 'Yes' "notify-send 'system' 'exiting i3...' -i face-tired; i3-msg exit"

View File

@ -1,25 +1,25 @@
#!/bin/zsh
source "$HOME/.config/wryn/env.zsh"
case $1 in
next ) $DOTWRYN/bin/media next ;;
prev ) $DOTWRYN/bin/media prev ;;
play ) $DOTWRYN/bin/media play ;;
#next ) scwrypts desktop/media -- next ;;
#prev ) scwrypts desktop/media -- prev ;;
#play ) scwrypts desktop/media -- play ;;
volumeup ) $DOTWRYN/bin/pulseaudio sink up ;;
volumedown ) $DOTWRYN/bin/pulseaudio sink down ;;
volumemute ) $DOTWRYN/bin/pulseaudio sink mute ;;
micmute ) $DOTWRYN/bin/pulseaudio source mute ;;
volumeup ) scwrypts desktop/pulseaudio -- sink up ;;
volumedown ) scwrypts desktop/pulseaudio -- sink down ;;
volumemute ) scwrypts desktop/pulseaudio -- sink mute ;;
micmute ) scwrypts desktop/pulseaudio -- source mute ;;
backlightup ) $DOTWRYN/bin/backlight up ;;
backlightdown ) $DOTWRYN/bin/backlight down ;;
backlightup ) scwrypts desktop/backlight -- up ;;
backlightdown ) scwrypts desktop/backlight -- down ;;
lock ) $DOTWRYN/bin/i3lock ;;
lock ) scwrypts desktop/i3/lock -- ;;
bgrandomize ) $DOTWRYN/bin/set-background random ;;
bgrandomize ) scwrypts desktop/i3/set-background -- random ;;
alternateterm ) $DOTWRYN/bin/kitty-alternate-theme ;;
alternateterm ) scwrypts desktop/kitty-alternate-theme -- ;;
logout ) $DOTWRYN/bin/i3-logout ;;
logout ) scwrypts desktop/i3/logout -- ;;
launch )
local PROGRAM
@ -28,15 +28,16 @@ case $1 in
messages ) PROGRAM=android-messages-desktop ;;
voice ) PROGRAM=google-voice-desktop ;;
ytmusic ) PROGRAM=youtubemusic-nativefier ;;
scrcpy ) PROGRAM=scrcpy ;;
discord ) PROGRAM=discord ARGS+=(-a) ;;
spotify ) PROGRAM=spotify ARGS+=(-c Spotify) ;;
1pass ) PROGRAM=1password ARGS+=(-c 1Password) ;;
discord ) PROGRAM=discord ARGS+=(-a --has-statusbar-icon) ;;
obs ) PROGRAM=obs ARGS+=(-c '^obs' -n -l --has-statusbar-icon) ;;
pavuctrl ) PROGRAM=pavucontrol ARGS+=(-s 0.5 -c '^Pavucontrol') ;;
obs ) PROGRAM=obs ARGS+=(-c '^obs') ;;
scrcpy ) PROGRAM=scrcpy ARGS+=(-n -l) ;;
spotify ) PROGRAM=spotify ARGS+=(-c Spotify) ;;
* ) PROGRAM=$2 ;;
esac
scwrypts i3/launch-or-show --env local -- $PROGRAM ${ARGS[@]}
scwrypts i3/launch-or-show -- $PROGRAM ${ARGS[@]}
;;
esac

View File

@ -1,38 +0,0 @@
#!/bin/zsh
# note: requires i3lock-color
which i3lock >/dev/null 2>&1 || {
notify-send 'i3lock-color' 'could not find installation of i3lock'
}
source $HOME/.config/wryn/env.zsh
source $DOTWRYN/bin/get-colorscheme-hex
#####################################################################
RADIUS=$(xrandr | grep 'connected primary' | sed 's/.* \([0-9]\+\)x.*/\1/' | awk '{print int($1*0.08)}')
ARGS=(
--ignore-empty-password
--force-clock
--pass-screen-keys
--pass-media-keys
--pass-volume-keys
--pass-power-keys
--verif-text=''
--wrong-text=''
)
[ $NOBLUR ] && ARGS+=(--color=$(GET_COLORSCHEME_HEX 0)69) || ARGS+=(--blur=11)
[ $RADIUS ] && ARGS+=(--radius=$RADIUS)
i3lock ${ARGS[@]} \
--insidever-color=$(GET_COLORSCHEME_HEX 6) \
--ringver-color=$(GET_COLORSCHEME_HEX 10) \
--insidewrong-color=$(GET_COLORSCHEME_HEX 1) \
--ringwrong-color=$(GET_COLORSCHEME_HEX 9) \
--inside-color=$(GET_COLORSCHEME_HEX 0) \
--ring-color=$(GET_COLORSCHEME_HEX 2) \
--time-color=$(GET_COLORSCHEME_HEX 7) \
--date-color=$(GET_COLORSCHEME_HEX 15) \
--keyhl-color=$(GET_COLORSCHEME_HEX 11) \
--bshl-color=$(GET_COLORSCHEME_HEX 13) \
|| notify-send 'i3lock-color' 'something went wrong; unable to lock' \
;

View File

@ -1,15 +0,0 @@
#!/bin/zsh
source "$HOME/.config/wryn/env.zsh"
function _SET_THEME() {
local THEME="$1"
local LOCAL_THEME="$HOME/.config/kitty/theme.conf"
rm -- $LOCAL_THEME
ln -s "$DOTWRYN/colorschemes/kitty.$THEME" "$LOCAL_THEME"
}
_SET_THEME alternate
i3-sensible-terminal &
sleep 0.1
_SET_THEME main

View File

@ -1,32 +0,0 @@
#!/bin/zsh
source "$HOME/.config/wryn/env.zsh"
which canberra-gtk-play >/dev/null 2>&1 || {
notify-send 'canberra-gtk-play' "unable to play '$1'; is canberra-gtk-play installed?"
exit 1
}
PLAY() { canberra-gtk-play -f "$SFX_PATH/$1"; }
SFX_FILE=''
case $1 in
volume ) SFX_FILE=yaru-message.oga ;;
mute ) SFX_FILE=smooth-dialog-warning.oga ;;
backlight ) SFX_FILE=yaru-audio-volume-change.oga ;;
login ) SFX_FILE=yaru-desktop-login.oga ;;
logout ) SFX_FILE=smooth-desktop-login.oga ;;
notify ) SFX_FILE=yaru-complete.oga ;;
undock ) SFX_FILE=yaru-desktop-login.oga ;;
homedock ) SFX_FILE=homedock.oga ;;
gamedock ) SFX_FILE=gamedock.oga ;;
* ) SFX_FILE="$1"
;;
esac
[ ! -f "$SFX_PATH/$SFX_FILE" ] && {
notify-send 'canberra-gtk-play' "no such sfx file or alias '$1'" \
exit 2
}
canberra-gtk-play -f "$SFX_PATH/$SFX_FILE" \
|| notify-send 'canberra-gtk-play' "unable to play '$1'"

View File

@ -1,43 +0,0 @@
#!/bin/zsh
source $HOME/.config/wryn/env.zsh
#####################################################################
USAGE="$0 (sink|source) (up|down|mute)"
function ERROR() {
local ERROR_CODE=$1
local MESSAGE="$2"
echo -e "$MESSAGE\n\nUSAGE : $USAGE\n" >&2
exit $ERROR_CODE
}
#####################################################################
DEVICE="$1"
COMMAND="$2"
case $DEVICE in
sink ) AMIXER_DEVICE=Master ;;
source ) AMIXER_DEVICE=Capture ;;
* ) ERROR 1 "Unsupported device '$DEVICE'" ;;
esac
DEFAULT_DEVICE="@DEFAULT_$(echo $DEVICE | tr '[:lower:]' '[:upper:]')@"
case $COMMAND in
up )
pactl set-$DEVICE-volume $DEFAULT_DEVICE +10%
$DOTWRYN/bin/play-sound volume
;;
down )
pactl set-$DEVICE-volume $DEFAULT_DEVICE -10%
$DOTWRYN/bin/play-sound volume
;;
mute )
pactl set-$DEVICE-mute $DEFAULT_DEVICE toggle
$DOTWRYN/bin/play-sound mute
notify-send "default $DEVICE" "$(amixer sget $AMIXER_DEVICE | grep -q '\[on\]' && echo unmuted || echo muted)"
;;
* ) ERROR "Unsupported command '$COMMAND'" ;;
esac

View File

@ -1,14 +0,0 @@
#!/bin/zsh
source "$HOME/.config/wryn/env.zsh"
[ ! -d $WALLPAPER_PATH ] && exit 1
case $1 in
random )
feh --recursive --randomize --bg-fill $WALLPAPER_PATH
;;
* )
[ ! -f $WALLPAPER_PATH/$1 ] && exit 2
feh --bg-fill $WALLPAPER_PATH/$1
;;
esac

1
bin/umbreon/default Symbolic link
View File

@ -0,0 +1 @@
undock

View File

@ -1,23 +0,0 @@
#!/bin/zsh
source ${0:a:h}/xorg.zsh
MOBILE=1
ARGS=()
[[ $MOBILE -eq 1 ]] && {
ARGS+=(--output DP-3 --mode 1920x1080 --pos 0x0 --primary)
ARGS+=(--output eDP-1 --mode 1920x1200 --right-of DP-3)
} || {
ARGS+=(--output DP-3-1 --mode 1920x1080 --pos 0x0 --primary)
ARGS+=(--output eDP-1 --off)
}
xrandr ${ARGS[@]}
xset dpms 0 0 0 && xset s noblank && xset s off \
&& notify-send 'DPMS' 'disabled screen blank'
(pkill compton; sleep 0.5; compton;) &
$DOTWRYN/bin/set-background random
$DOTWRYN/bin/play-sound gamedock

View File

@ -1,20 +1,17 @@
#!/bin/zsh
source ${0:a:h}/xorg.zsh
ARGS=($(ALL_OTHER_DISPLAYS_OFF eDP-1))
xrandr \
xrandr ${ARGS[@]} \
--output eDP-1 \
--primary \
--auto \
--mode 960x600 \
--rotate normal \
--rate 60 \
--pos 0x0 \
--rotate normal \
;
pkill compton
xset dpms 0 0 0 && xset s noblank && xset s off \
&& notify-send 'DPMS' 'disabled screen blank'
$DOTWRYN/bin/set-background random
$DOTWRYN/bin/play-sound gamedock
scwrypts desktop/screen-blank -- disable
scwrypts desktop/i3/set-background -- link-vs-gdizz.jpg
scwrypts desktop/play-sound -- gamedock

View File

@ -1,23 +1,17 @@
#!/bin/zsh
source ${0:a:h}/xorg.zsh
ARGS=($(ALL_OTHER_DISPLAYS_OFF eDP-1))
xrandr \
xrandr ${ARGS[@]} \
--output eDP-1 \
--primary \
--auto \
--mode 1920x1200 \
--rotate normal \
--pos 0x0 \
--output DP-3-1 \
--off \
--output DP-3 \
--off \
--rotate normal \
;
xset +dpms && xset s blank && xset s on \
&& notify-send 'DPMS' 'enabled screen blank'
(pkill compton; sleep 0.5; compton;) &
$DOTWRYN/bin/set-background random
$DOTWRYN/bin/play-sound gamedock
scwrypts desktop/screen-blank -- enable
scwrypts desktop/i3/set-background -- random
scwrypts desktop/play-sound -- gamedock

View File

@ -1,3 +1,10 @@
#!/bin/zsh
source $HOME/.config/wryn/env.zsh
[ ! $DISPLAY ] && export DISPLAY=:0
ALL_OTHER_DISPLAYS_OFF() {
for OUTPUT in $(xrandr | grep connect | grep -v $1 | awk '{print $1;}')
do
echo --output $OUTPUT --off
done
}

View File

@ -1,14 +1,5 @@
#!/bin/zsh
_HOSTNAME=$(hostnamectl --static)
case $_HOSTNAME in
butterfree ) DEFAULT=undock ;;
altaria ) DEFAULT=hdmi4k ;;
umbreon ) DEFAULT=undock ;;
esac
LAYOUT="$DOTWRYN/bin/$_HOSTNAME/$DEFAULT"
LAYOUT="$DOTWRYN/bin/$(hostnamectl --static)/default"
[ -f $LAYOUT ] && {
until xrandr -q >/dev/null 2>&1; do sleep .1; done
$LAYOUT

View File

@ -4,9 +4,6 @@
export DOTWRYN="$HOME/.wryn"
export SFX_PATH="$HOME/Media/sfx"
export WALLPAPER_PATH="$HOME/Pictures/bg"
export SOURCE_PACKAGES="$HOME/.local/share/source-packages"
export DOTWRYN_UTILS="$DOTWRYN/zsh/plugins/scwrypts/zsh/lib/utils/utils.module.zsh"
@ -61,7 +58,7 @@ for e in \
"local.$(hostnamectl --static).secret" \
"local.$(hostnamectl --static)" \
"local"
do export SCWRYPTS_ENV="$e"; [ -f "$HOME/.config/scwrypts/environments/$e" ] && break; done
do export SCWRYPTS_ENV="$e"; [ -f "$HOME/.config/scwrypts/environments/scwrypts/$e" ] && break; done
# z

View File

@ -4,7 +4,7 @@
set $alt Mod1
set $mod Mod4
font pango:DejaVuSansMono Nerd Font 20
font pango:DejaVuSansM Nerd Font 20
################################################################################
## Custom Utility ##############################################################
@ -78,16 +78,16 @@ bindsym $mod+Shift+f focus parent; fullscreen; focus child
bindsym $mod+BackSpace open
bindsym $mod+1 workspace number "1"
bindsym $mod+2 workspace number "2"
bindsym $mod+3 workspace number "3"
bindsym $mod+4 workspace number "4"
bindsym $mod+5 workspace number "5"
bindsym $mod+6 workspace number "6"
bindsym $mod+7 workspace number "7"
bindsym $mod+8 workspace number "8"
bindsym $mod+9 workspace number "9"
bindsym $mod+0 workspace number "0"
bindsym $mod+1 workspace number "1"; bar mode dock
bindsym $mod+2 workspace number "2"; bar mode hide
bindsym $mod+3 workspace number "3"; bar mode dock
bindsym $mod+4 workspace number "4"; bar mode hide
bindsym $mod+5 workspace number "5"; bar mode dock
bindsym $mod+6 workspace number "6"; bar mode hide
bindsym $mod+7 workspace number "7"; bar mode dock
bindsym $mod+8 workspace number "8"; bar mode hide
bindsym $mod+9 workspace number "9"; bar mode dock
bindsym $mod+0 workspace number "0"; bar mode hide
bindsym $mod+Shift+1 move container to workspace number "1"
bindsym $mod+Shift+2 move container to workspace number "2"

View File

@ -5,5 +5,7 @@
SCWRYPTS_SHORTCUT='' # CTRL + W
SCWRYPTS_ENV_SHORTCUT='' # CTRL + /
source "$HOME/.wryn/scwrypts/dotwryn.scwrypts.zsh"
[ -f "$HOME/.config/scwrypts/config.local.zsh" ] \
&& source "$HOME/.config/scwrypts/config.local.zsh"

View File

@ -26,12 +26,6 @@ $DOTWRYN/config/pylint.conf pylintrc
$DOTWRYN/config/ripgrep.conf ripgrep/config
$DOTWRYN/config/scwrypts/config.zsh scwrypts/config.zsh
$DOTWRYN/config/scwrypts/dotfiles.zsh scwrypts/dotfiles.zsh
$DOTWRYN/config/scwrypts/env/local scwrypts/environments/local
$DOTWRYN/config/scwrypts/env/local.altaria scwrypts/environments/local.altaria
$DOTWRYN/config/scwrypts/env/local.blaziken scwrypts/environments/local.blaziken
$DOTWRYN/config/scwrypts/env/local.butterfree scwrypts/environments/local.butterfree
$DOTWRYN/config/scwrypts/env/local.gardevoir scwrypts/environments/local.gardevoir
$DOTWRYN/config/scwrypts/env/local.umbreon scwrypts/environments/local.umbreon
$DOTWRYN/config/scwrypts/vundle.zsh scwrypts/vundle.zsh
$DOTWRYN/config/tmux.conf tmux/tmux.conf
$DOTWRYN/config/xcompose.conf X11/xcompose
@ -41,4 +35,17 @@ $DOTWRYN/config/xinitrc.i3 ../.xinitrc
$DOTWRYN/bin/scwrypts ../.local/bin/scwrypts
$DOTWRYN/bin/vim ../.local/bin/vim
$DOTWRYN/bin/$(hostnamectl --static) ../.$(hostnamectl --static)
$DOTWRYN/config/scwrypts/environments/scwrypts/local scwrypts/environments/scwrypts/local
$DOTWRYN/config/scwrypts/environments/scwrypts/local.altaria scwrypts/environments/scwrypts/local.altaria
$DOTWRYN/config/scwrypts/environments/scwrypts/local.blaziken scwrypts/environments/scwrypts/local.blaziken
$DOTWRYN/config/scwrypts/environments/scwrypts/local.butterfree scwrypts/environments/scwrypts/local.butterfree
$DOTWRYN/config/scwrypts/environments/scwrypts/local.gardevoir scwrypts/environments/scwrypts/local.gardevoir
$DOTWRYN/config/scwrypts/environments/scwrypts/local.umbreon scwrypts/environments/scwrypts/local.umbreon
$DOTWRYN/config/scwrypts/environments/dotwryn/local scwrypts/environments/dotwryn/local
$DOTWRYN/config/scwrypts/environments/dotwryn/local.altaria scwrypts/environments/dotwryn/local.altaria
$DOTWRYN/config/scwrypts/environments/dotwryn/local.blaziken scwrypts/environments/dotwryn/local.blaziken
$DOTWRYN/config/scwrypts/environments/dotwryn/local.butterfree scwrypts/environments/dotwryn/local.butterfree
$DOTWRYN/config/scwrypts/environments/dotwryn/local.gardevoir scwrypts/environments/dotwryn/local.gardevoir
$DOTWRYN/config/scwrypts/environments/dotwryn/local.umbreon scwrypts/environments/dotwryn/local.umbreon
"

View File

@ -1,53 +0,0 @@
#!/bin/zsh
#####################################################################
### scwrypts runtime configuration ##################################
#####################################################################
# whether or not to deploy to production (0 = dev (default), 1 = prod)
export IN_PRODUCTION=
#####################################################################
# standard AWS environment variables used by awscli and other tools
export AWS_ACCOUNT=
export AWS_PROFILE=
export AWS_REGION=
# fully-qualified path to mount the EFS drive
export AWS__EFS__LOCAL_MOUNT_POINT=
# details for a directus instance
export DIRECTUS__API_TOKEN=
export DIRECTUS__BASE_URL=
# details for discord bot
export DISCORD__BOT_TOKEN=
export DISCORD__DEFAULT_AVATAR_URL=
export DISCORD__DEFAULT_CHANNEL_ID=
# custom i3 configuration settings
export I3__BORDER_PIXEL_SIZE=3
export I3__DMENU_FONT_SIZE=18
export I3__GLOBAL_FONT_SIZE=16
export I3__MODEL_CONFIG=
# linear.app project management configuration
export LINEAR__API_TOKEN=
# s3 bucket name and filesystem targets for media backups
export MEDIA_SYNC__S3_BUCKET=
export MEDIA_SYNC__TARGETS=(_____ .porn_____ Documents_____ Media_____ Pictures_____)_____
# redis connection credentials
export REDIS_AUTH=
export REDIS_HOST=
export REDIS_PORT=
# twilio account / credentials
export TWILIO__ACCOUNT_SID=
export TWILIO__API_KEY=
export TWILIO__API_SECRET=
export TWILIO__DEFAULT_PHONE_FROM=
export TWILIO__DEFAULT_PHONE_TO=
#####################################################################

View File

@ -0,0 +1,11 @@
#!/bin/zsh
#####################################################################
### scwrypts runtime configuration (group 'dotwryn') ################
#####################################################################
# directory containing sound effects
export DESKTOP__SFX_PATH="$HOME/Media/sfx"
export DESKTOP__WALLPAPER_PATH="$HOME/Pictures/bg"
# home server data
export WRYN__SERVER_HOSTNAMES=

View File

@ -0,0 +1,11 @@
#!/bin/zsh
#####################################################################
### scwrypts runtime configuration (group 'dotwryn') ################
#####################################################################
# directory containing sound effects
export DESKTOP__SFX_PATH="$HOME/Media/sfx" # from local
export DESKTOP__WALLPAPER_PATH="$HOME/Pictures/bg" # from local
# home server data
export WRYN__SERVER_HOSTNAMES=

View File

@ -0,0 +1,11 @@
#!/bin/zsh
#####################################################################
### scwrypts runtime configuration (group 'dotwryn') ################
#####################################################################
# directory containing sound effects
export DESKTOP__SFX_PATH="$HOME/Media/sfx" # from local
export DESKTOP__WALLPAPER_PATH="$HOME/Pictures/bg" # from local
# home server data
export WRYN__SERVER_HOSTNAMES=

View File

@ -0,0 +1,11 @@
#!/bin/zsh
#####################################################################
### scwrypts runtime configuration (group 'dotwryn') ################
#####################################################################
# directory containing sound effects
export DESKTOP__SFX_PATH="$HOME/Media/sfx" # from local
export DESKTOP__WALLPAPER_PATH="$HOME/Pictures/bg" # from local
# home server data
export WRYN__SERVER_HOSTNAMES=

View File

@ -0,0 +1,11 @@
#!/bin/zsh
#####################################################################
### scwrypts runtime configuration (group 'dotwryn') ################
#####################################################################
# directory containing sound effects
export DESKTOP__SFX_PATH="$HOME/Media/sfx" # from local
export DESKTOP__WALLPAPER_PATH="$HOME/Pictures/bg" # from local
# home server data
export WRYN__SERVER_HOSTNAMES=

View File

@ -0,0 +1,11 @@
#!/bin/zsh
#####################################################################
### scwrypts runtime configuration (group 'dotwryn') ################
#####################################################################
# directory containing sound effects
export DESKTOP__SFX_PATH="$HOME/Media/sfx" # from local
export DESKTOP__WALLPAPER_PATH="$HOME/Pictures/bg" # from local
# home server data
export WRYN__SERVER_HOSTNAMES=

View File

@ -1,20 +1,6 @@
#!/bin/zsh
#####################################################################
### scwrypts runtime configuration ##################################
#####################################################################
# whether or not to deploy to production (0 = dev (default), 1 = prod)
export IN_PRODUCTION=
#####################################################################
# directory containing sound effects
export DESKTOP__SFX_PATH="$HOME/Media/sfx"
export DESKTOP__WALLPAPER_PATH="$HOME/Pictures/bg"
# home server data
export WRYN__SERVER_HOSTNAMES=
### scwrypts runtime configuration (group 'scwrypts') ###############
#####################################################################
# standard AWS environment variables used by awscli and other tools
@ -62,5 +48,3 @@ export TWILIO__API_KEY=
export TWILIO__API_SECRET=
export TWILIO__DEFAULT_PHONE_FROM=
export TWILIO__DEFAULT_PHONE_TO=
#####################################################################

View File

@ -1,20 +1,6 @@
#!/bin/zsh
#####################################################################
### scwrypts runtime configuration ##################################
#####################################################################
# whether or not to deploy to production (0 = dev (default), 1 = prod)
export IN_PRODUCTION=
#####################################################################
# directory containing sound effects
export DESKTOP__SFX_PATH="$HOME/Media/sfx" # from local
export DESKTOP__WALLPAPER_PATH="$HOME/Pictures/bg" # from local
# home server data
export WRYN__SERVER_HOSTNAMES=
### scwrypts runtime configuration (group 'scwrypts') ###############
#####################################################################
# standard AWS environment variables used by awscli and other tools
@ -71,5 +57,3 @@ export TWILIO__API_KEY=
export TWILIO__API_SECRET=
export TWILIO__DEFAULT_PHONE_FROM=
export TWILIO__DEFAULT_PHONE_TO=
#####################################################################

View File

@ -1,20 +1,6 @@
#!/bin/zsh
#####################################################################
### scwrypts runtime configuration ##################################
#####################################################################
# whether or not to deploy to production (0 = dev (default), 1 = prod)
export IN_PRODUCTION=
#####################################################################
# directory containing sound effects
export DESKTOP__SFX_PATH="$HOME/Media/sfx" # from local
export DESKTOP__WALLPAPER_PATH="$HOME/Pictures/bg" # from local
# home server data
export WRYN__SERVER_HOSTNAMES=
### scwrypts runtime configuration (group 'scwrypts') ###############
#####################################################################
# standard AWS environment variables used by awscli and other tools
@ -68,5 +54,3 @@ export TWILIO__API_KEY=
export TWILIO__API_SECRET=
export TWILIO__DEFAULT_PHONE_FROM=
export TWILIO__DEFAULT_PHONE_TO=
#####################################################################

View File

@ -1,20 +1,6 @@
#!/bin/zsh
#####################################################################
### scwrypts runtime configuration ##################################
#####################################################################
# whether or not to deploy to production (0 = dev (default), 1 = prod)
export IN_PRODUCTION=
#####################################################################
# directory containing sound effects
export DESKTOP__SFX_PATH="$HOME/Media/sfx" # from local
export DESKTOP__WALLPAPER_PATH="$HOME/Pictures/bg" # from local
# home server data
export WRYN__SERVER_HOSTNAMES=
### scwrypts runtime configuration (group 'scwrypts') ###############
#####################################################################
# standard AWS environment variables used by awscli and other tools
@ -69,5 +55,3 @@ export TWILIO__API_KEY=
export TWILIO__API_SECRET=
export TWILIO__DEFAULT_PHONE_FROM=
export TWILIO__DEFAULT_PHONE_TO=
#####################################################################

View File

@ -1,20 +1,6 @@
#!/bin/zsh
#####################################################################
### scwrypts runtime configuration ##################################
#####################################################################
# whether or not to deploy to production (0 = dev (default), 1 = prod)
export IN_PRODUCTION=
#####################################################################
# directory containing sound effects
export DESKTOP__SFX_PATH="$HOME/Media/sfx" # from local
export DESKTOP__WALLPAPER_PATH="$HOME/Pictures/bg" # from local
# home server data
export WRYN__SERVER_HOSTNAMES=
### scwrypts runtime configuration (group 'scwrypts') ###############
#####################################################################
# standard AWS environment variables used by awscli and other tools
@ -66,5 +52,3 @@ export TWILIO__API_KEY=
export TWILIO__API_SECRET=
export TWILIO__DEFAULT_PHONE_FROM=
export TWILIO__DEFAULT_PHONE_TO=
#####################################################################

View File

@ -1,20 +1,6 @@
#!/bin/zsh
#####################################################################
### scwrypts runtime configuration ##################################
#####################################################################
# whether or not to deploy to production (0 = dev (default), 1 = prod)
export IN_PRODUCTION=
#####################################################################
# directory containing sound effects
export DESKTOP__SFX_PATH="$HOME/Media/sfx" # from local
export DESKTOP__WALLPAPER_PATH="$HOME/Pictures/bg" # from local
# home server data
export WRYN__SERVER_HOSTNAMES=
### scwrypts runtime configuration (group 'scwrypts') ###############
#####################################################################
# standard AWS environment variables used by awscli and other tools
@ -67,5 +53,3 @@ export TWILIO__API_KEY=
export TWILIO__API_SECRET=
export TWILIO__DEFAULT_PHONE_FROM=
export TWILIO__DEFAULT_PHONE_TO=
#####################################################################

View File

@ -0,0 +1,4 @@
#!/bin/zsh
export DESKTOP__SFX_PATH=
export DESKTOP__WALLPAPER_PATH=
export WRYN__SERVER_HOSTNAMES=

View File

@ -0,0 +1,4 @@
DESKTOP__SFX_PATH | directory containing sound effects
DESKTOP__DESKTOP_PATH | directory containing desktop background images
WRYN__SERVER_HOSTNAMES | home server data

73
scwrypts/desktop/backlight Executable file
View File

@ -0,0 +1,73 @@
#!/bin/zsh
DEPENDENCIES+=()
REQUIRED_ENV+=()
use desktop/notify --group dotwryn
CHECK_ENVIRONMENT
#####################################################################
{
command -v xbacklight && UTIL=xbacklight
command -v gmux_backlight && UTIL=gmux_backlight
command -v enlighten && UTIL=enlighten
} >/dev/null 2>&1
[[ $UTIL =~ ^enlighten$ ]] && {
CURRENT_PERCENT=$(enlighten | sed 's/.*(//;s/%.*//')
[[ $CURRENT_PERCENT -gt 60 ]] && DELTA=20
[[ $CURRENT_PERCENT -le 60 ]] && DELTA=10
[[ $CURRENT_PERCENT -le 40 ]] && DELTA=5
[[ $CURRENT_PERCENT -le 10 ]] && DELTA=1
}
case $1 in
up )
case $UTIL in
xbacklight ) xbacklight + 10 ;;
gmux_backlight ) gmux_backlight +100 ;;
enlighten )
[[ $CURRENT_PERCENT -ge 99 ]] && NOTIFY_SEND 'at maximum brightness' && exit 0
enlighten +${DELTA}%
;;
esac
;;
down )
case $UTIL in
xbacklight ) xbacklight - 10 ;;
gmux_backlight ) gmux_backlight -100 ;;
enlighten )
[[ $CURRENT_PERCENT -le 1 ]] && NOTIFY_SEND 'at minimum brightness' && exit 0
[[ $CURRENT_PERCENT -le 2 ]] && ARGS='=1%' || ARGS="-${DELTA}%"
enlighten "$ARGS"
;;
esac
;;
set )
[ ! $2 ] && FAIL 1 'no value provided to set'
case $UTIL in
xbacklight ) xbacklight -set $2 ;;
gmux_backlight ) gmux_backlight $2 ;;
enlighten ) enlighten "=$2" ;;
esac
;;
min | minimum )
case $UTIL in
enlighten ) enlighten '=1%' ;;
esac
;;
max | maximum )
case $UTIL in
enlighten ) enlighten '=100%' ;;
esac
;;
query | '' )
case $UTIL in
enlighten ) NOTIFY_SUCCESS "current brightness : $(enlighten)" ;;
esac
;;
* ) NOTIFY_FAIL 1 "operation '$1' not supported" ;;
esac

View File

@ -0,0 +1,10 @@
#!/bin/zsh
DEPENDENCIES+=()
REQUIRED_ENV+=()
use desktop/colorscheme --group dotwryn
CHECK_ENVIRONMENT
#####################################################################
GET_COLORSCHEME_HEX $@

40
scwrypts/desktop/i3/lock Executable file
View File

@ -0,0 +1,40 @@
#!/bin/zsh
DEPENDENCIES+=(
i3lock
)
REQUIRED_ENV+=()
use desktop/colorscheme --group dotwryn
use desktop/notify --group dotwryn
CHECK_ENVIRONMENT
#####################################################################
ARGS=(
--ignore-empty-password
--force-clock
--pass-screen-keys
--pass-media-keys
--pass-volume-keys
--pass-power-keys
--verif-text=''
--wrong-text=''
--blur=11
--insidever-color=$(GET_COLORSCHEME_HEX 6)
--ringver-color=$(GET_COLORSCHEME_HEX 10)
--insidewrong-color=$(GET_COLORSCHEME_HEX 1)
--ringwrong-color=$(GET_COLORSCHEME_HEX 9)
--inside-color=$(GET_COLORSCHEME_HEX 0)
--ring-color=$(GET_COLORSCHEME_HEX 2)
--time-color=$(GET_COLORSCHEME_HEX 7)
--date-color=$(GET_COLORSCHEME_HEX 15)
--keyhl-color=$(GET_COLORSCHEME_HEX 11)
--bshl-color=$(GET_COLORSCHEME_HEX 13)
)
RADIUS=$(xrandr | grep 'connected primary' | sed 's/.* \([0-9]\+\)x.*/\1/' | awk '{print int($1*0.08)}')
[ $RADIUS ] && ARGS+=(--radius=$RADIUS)
i3lock ${ARGS[@]} \
|| NOTIFY_ERROR 'i3lock-color' 'something went wrong; unable to lock' \
;

16
scwrypts/desktop/i3/logout Executable file
View File

@ -0,0 +1,16 @@
#!/bin/zsh
DEPENDENCIES+=(
i3-nagbar
)
REQUIRED_ENV+=()
use desktop/notify --group dotwryn
CHECK_ENVIRONMENT
#####################################################################
i3-nagbar \
-t warning \
-m 'Do you really want to exit i3?' \
-B 'Yes' "notify-send 'system' 'exiting i3...' -i face-tired; i3-msg exit" \
|| NOTIFY_ERROR 'unable to launch i3-nagbar'

View File

@ -0,0 +1,27 @@
#!/bin/zsh
DEPENDENCIES+=()
REQUIRED_ENV+=(
DESKTOP__WALLPAPER_PATH
)
CHECK_ENVIRONMENT
#####################################################################
[ ! -d $WALLPAPER_PATH ] \
&& FAIL 1 "no such directory for DESKTOP__WALLPAPER_PATH='$DESKTOP__WALLPAPER_PATH'"
SELECTION="$1"
[ ! $SELECTION ] && SELECTION=random
case $SELECTION in
random )
feh --recursive --randomize --bg-fill $WALLPAPER_PATH
;;
* )
[ ! -f $DESKTOP__WALLPAPER_PATH/$SELECTION ] \
&& FAIL 2 "no such wallpaper '$SELECTION' in wallpaper path"
feh --bg-fill $DESKTOP__WALLPAPER_PATH/$SELECTION
;;
esac

View File

@ -0,0 +1,14 @@
#!/bin/zsh
DEPENDENCIES+=()
REQUIRED_ENV+=()
use desktop/colorscheme --group dotwryn
CHECK_ENVIRONMENT
#####################################################################
SET_THEME alternate
i3-sensible-terminal &
PID=$!
sleep 0.1
SET_THEME main
wait $!

10
scwrypts/desktop/play-sound Executable file
View File

@ -0,0 +1,10 @@
#!/bin/zsh
DEPENDENCIES+=()
REQUIRED_ENV+=()
use media/audio --group dotwryn
CHECK_ENVIRONMENT
#####################################################################
MEDIA__PLAY_SFX $@

46
scwrypts/desktop/pulseaudio Executable file
View File

@ -0,0 +1,46 @@
#!/bin/zsh
source $HOME/.config/wryn/env.zsh
DEPENDENCIES+=(
pactl
)
REQUIRED_ENV+=()
use desktop/notify --group dotwryn
use media/audio --group dotwryn
#####################################################################
DEVICE="$1"
COMMAND="$2"
case $DEVICE in
sink ) AMIXER_DEVICE=Master ;;
source ) AMIXER_DEVICE=Capture ;;
* ) NOTIFY_FAIL 1 "Unsupported device '$DEVICE'" ;;
esac
DEFAULT_DEVICE="@DEFAULT_$(echo $DEVICE | tr '[:lower:]' '[:upper:]')@"
case $COMMAND in
up )
pactl set-$DEVICE-volume $DEFAULT_DEVICE +10% \
|| NOTIFY_ERROR "pactl error with set-$DEVICE-volume"
MEDIA__PLAY_SFX volume
;;
down )
pactl set-$DEVICE-volume $DEFAULT_DEVICE -10% \
|| NOTIFY_ERROR "pactl error with set-$DEVICE-volume"
MEDIA__PLAY_SFX volume
;;
mute )
pactl set-$DEVICE-mute $DEFAULT_DEVICE toggle \
&& NOTIFY_SUCCESS "default $DEVICE" "$(amixer sget $AMIXER_DEVICE | grep -q '\[on\]' && echo unmuted || echo muted)" \
|| NOTIFY_ERROR "pactl error with set-$DEVICE-mute"
MEDIA__PLAY_SFX mute
;;
* ) NOTIFY_FAIL 1 "Unsupported command '$COMMAND'" ;;
esac

52
scwrypts/desktop/screen-blank Executable file
View File

@ -0,0 +1,52 @@
#!/bin/zsh
DEPENDENCIES+=(xset)
REQUIRED_ENV+=()
use desktop/notify --group dotwryn
CHECK_ENVIRONMENT
#####################################################################
case $1 in
enable | disable | query | toggle ) ACTION="$1" ;;
* )
[ ! $1 ] && ACTION=toggle
echo $ACTION
;;
esac
[[ $ACTION =~ ^toggle$ ]] && {
xset -q | grep -qi 'prefer blanking: *no' \
&& ACTION='enable' || ACTION='disable'
}
[ ! $ACTION ] && NOTIFY_FAIL 1 "unknown screen blank action '$1'"
case $ACTION in
enable ) : \
&& STATUS 'enabling screen blank' \
&& xset +dpms \
&& xset s blank \
&& xset s on \
&& NOTIFY_SUCCESS 'enabled screen blank' \
|| NOTIFY_FAIL 2 'error enabling screen blank'
;;
disable ) : \
&& STATUS 'disabling screen blank' \
&& xset dpms 0 0 0 \
&& xset s noblank \
&& xset s off \
&& NOTIFY_SUCCESS 'disabled screen blank' \
|| NOTIFY_FAIL 2 'error disabling screen blank'
;;
query )
xset -q | grep -qi 'prefer blanking: *no' \
&& CURRENT_STATE='disabled' || CURRENT_STATE='enabled'
[ ! $CURRENT_STATE ] && NOTIFY_FAIL 3 'unable to determine current setting'
NOTIFY_SUCCESS "screen blank is currently \\033[0;34m$CURRENT_STATE"
;;
esac

View File

@ -0,0 +1,7 @@
SCWRYPTS_GROUPS+=(dotwryn)
export SCWRYPTS_TYPE__dotwryn=zsh
export SCWRYPTS_ROOT__dotwryn="$DOTWRYN/scwrypts"
export SCWRYPTS_COLOR__dotwryn='\033[0;31m'
[ $DOTWRYN ] || source "$HOME/.config/wryn/env.zsh"

View File

@ -1,6 +1,12 @@
#!/bin/zsh
source "$HOME/.config/wryn/env.zsh"
RELOAD_ZSH_UTILS
DEPENDENCIES+=(
hostnamectl
)
REQUIRED_ENV+=(
WRYN__SERVER_HOSTNAMES
)
CHECK_ENVIRONMENT
#####################################################################
SESSION='update'
@ -14,11 +20,11 @@ CHECK_SESSION() {
}
UPDATE_ALL() {
__STATUS "starting '$@'"
for SERVER in $(echo $SERVER_LIST); do UPDATE $SERVER "$@"; done
STATUS "starting '$@'"
for SERVER in ${WRYN__SERVER_HOSTNAMES[@]}; do UPDATE $SERVER "$@"; done
WAIT_FOR_UPDATES \
&& __SUCCESS "'$@' finished across all servers" \
|| __FAIL 69 'user abort' \
&& SUCCESS "'$@' finished across all servers" \
|| FAIL 69 'user abort' \
;
}
@ -28,7 +34,7 @@ UPDATE() {
[[ $2 =~ ^reboot ]] && [[ $SERVER_HOST =~ $LOCAL_HOST ]] && return 0
[[ $SERVER_HOST =~ $LOCAL_HOST ]] || {
COMMAND="ssh -t $SERVER_HOST.lan 'source ~/.zshrc >/dev/null 2>&1; $COMMAND'"
COMMAND="ssh -t $SERVER_HOST.local 'source ~/.zshrc >/dev/null 2>&1; $COMMAND'"
}
tmux new-window -t $SESSION -n $SERVER_HOST "source ~/.zshrc >/dev/null 2>&1; $COMMAND"
@ -54,30 +60,24 @@ CURRENT_SESSION=$(\
#####################################################################
CHECK_SESSION && __FAIL 1 'update currently in progress'
CHECK_SESSION && FAIL 1 'update currently in progress'
tmux new -d -s $SESSION "echo 'updating all systems'; echo '(leave this window open)'; while true; do sleep 30; done"
__yN 'after update, do you want to reboot all machines?' && REBOOT=1 || REBOOT=0
__REMINDER
__REMINDER 'manual action is required; (in another tab) connect to tmux:'
__REMINDER "tmux a -t $SESSION"
__REMINDER
__REMINDER 'to stop the update at any time, run:'
__REMINDER "tmux kill-session -t $SESSION"
__REMINDER
yN 'after update, do you want to reboot all machines?' && REBOOT=1 || REBOOT=0
REMINDER
REMINDER 'manual action is required; (in another tab) connect to tmux:'
REMINDER "tmux a -t $SESSION"
REMINDER
REMINDER 'to stop the update at any time, run:'
REMINDER "tmux kill-session -t $SESSION"
REMINDER
[ $CURRENT_SESSION ] && {
__SUCCESS 'currently in a tmux session; opening new window...'
SUCCESS 'currently in a tmux session; opening new window...'
tmux new-window -t $CURRENT_SESSION "unset TMUX; tmux a -t $SESSION"
}
SERVER_LIST=$(
ls "$DOTWRYN/config/scwrypts/env/" \
| sed 's/^local//; s/^\.//' \
| grep . \
)
UPDATE_ALL 'yay -Syu'
UPDATE_ALL 'cd ~/.wryn; git pull --autostash'
UPDATE_ALL '~/.wryn/bin/scwrypts config update'
@ -88,10 +88,10 @@ UPDATE_ALL 'command -v i3-msg >/dev/null 2>&1 || exit 0; ~/.wryn/bin/scwrypts i3
[[ $REBOOT -eq 1 ]] && UPDATE_ALL 'reboot || sudo reboot'
tmux kill-session -t $SESSION >/dev/null 2>&1
CHECK_SESSION && __WARNING "unable to close tmux session '$SESSION'"
CHECK_SESSION && WARNING "unable to close tmux session '$SESSION'"
__SUCCESS
__SUCCESS 'finished system update accross all servers'
__SUCCESS
SUCCESS
SUCCESS 'finished system update accross all servers'
SUCCESS
[[ $REBOOT -eq 1 ]] && { __STATUS 'rebooting host machine'; sleep 3; reboot || sudo reboot; }
[[ $REBOOT -eq 1 ]] && { STATUS 'rebooting host machine'; sleep 3; reboot || sudo reboot; }

View File

@ -0,0 +1,27 @@
#####################################################################
DEPENDENCIES+=(
awk sed tr
)
REQUIRED_ENV+=()
#####################################################################
GET_COLORSCHEME_HEX() {
[ $1 ] && [[ $1 -le 15 ]] && [[ $1 -ge 0 ]] \
|| FAIL 1 'must provide ANSI color number 0-15'
grep "^color$1 " "$DOTWRYN/colorschemes/kitty.main" \
| awk '{print $2}' \
| sed 's/ //g; s/#//g' \
| tr '[:lower:]' '[:upper:]' \
;
}
SET_THEME() {
local THEME="$DOTWRYN/colorschemes/kitty.$1"
[ ! -f "$THEME" ] && FAIL 1 "no such theme '$1'"
local LOCAL_THEME="$HOME/.config/kitty/theme.conf"
rm -- $LOCAL_THEME
ln -s "$THEME" "$LOCAL_THEME"
}

View File

@ -0,0 +1,19 @@
#####################################################################
DEPENDENCIES+=(
notify-send
)
REQUIRED_ENV+=()
#####################################################################
NOTIFY_SEND() { notify-send "$SCWRYPT_GROUP : $SCWRYPT_NAME" "$1"; }
_NOTIFY() {
NOTIFY_SEND "$1 : ${*:2}"
$1 ${@:2}
}
NOTIFY_SUCCESS() { _NOTIFY SUCCESS $@; }
NOTIFY_ERROR() { _NOTIFY ERROR $@; }
NOTIFY_FAIL() { _NOTIFY FAIL $@; }

View File

@ -0,0 +1,38 @@
#####################################################################
DEPENDENCIES+=(
canberra-gtk-play
)
REQUIRED_ENV+=()
use desktop/notify --group dotwryn
#####################################################################
MEDIA__PLAY_SFX() {
local SFX_FILE
case $1 in
volume ) SFX_FILE=$DESKTOP__SFX_PATH/yaru-message.oga ;;
mute ) SFX_FILE=$DESKTOP__SFX_PATH/smooth-dialog-warning.oga ;;
backlight ) SFX_FILE=$DESKTOP__SFX_PATH/yaru-audio-volume-change.oga ;;
login ) SFX_FILE=$DESKTOP__SFX_PATH/yaru-desktop-login.oga ;;
logout ) SFX_FILE=$DESKTOP__SFX_PATH/smooth-desktop-login.oga ;;
notify ) SFX_FILE=$DESKTOP__SFX_PATH/yaru-complete.oga ;;
undock ) SFX_FILE=$DESKTOP__SFX_PATH/yaru-desktop-login.oga ;;
homedock ) SFX_FILE=$DESKTOP__SFX_PATH/homedock.oga ;;
gamedock ) SFX_FILE=$DESKTOP__SFX_PATH/gamedock.oga ;;
* ) SFX_FILE="$1"
;;
esac
[ -f $SFX_FILE ] \
&& STATUS "detected file '$SFX_FILE'" \
|| NOTIFY_FAIL 1 "unable to locate sfx file '$1'" \
;
STATUS 'starting playback'
canberra-gtk-play -f "$SFX_FILE" \
&& SUCCESS "finished output of '$SFX_FILE'" \
|| NOTIFY_FAIL 1 "something went wrong playing file '$SFX_FILE'"
}

View File

@ -31,8 +31,7 @@ UPDATE() {
}
VIM_INSTALL() {
"$DOTWRYN/bin/scwrypts" --env local --no-log \
zsh/git/package/install -- \
scwrypts -n packages/install -- \
--target-url 'https://github.com/vim/vim.git' \
--local-name 'vim' \
--update \

@ -1 +1 @@
Subproject commit 854e69c134da89f41e9149dc3263b6bd86acb947
Subproject commit 3b60a916f035dd94ea3c779ed36489356026dddd

@ -1 +1 @@
Subproject commit 6c546ebb6fac66b28e1c1d5588a88ca5f78798aa
Subproject commit 4baacd9c3244690945189d935a6f4a57db438187