diff --git a/colorschemes/active.main b/colorschemes/active.main index d036125..bda895c 120000 --- a/colorschemes/active.main +++ b/colorschemes/active.main @@ -1 +1 @@ -/home/w0ryn/.wryn/colorschemes/winter.conf \ No newline at end of file +/home/w0ryn/.wryn/colorschemes/main.conf \ No newline at end of file diff --git a/colorschemes/active.main.alacritty b/colorschemes/active.main.alacritty index b0537c0..48f2efd 100644 --- a/colorschemes/active.main.alacritty +++ b/colorschemes/active.main.alacritty @@ -1,26 +1,27 @@ ---- # yamllint disable rule:colons # do not edit; generated by scwrypts -colors: - primary: - background: '0x000505' - foreground: '0xE0F7FF' - cursor: - cursor: '0xAAD7E6' - normal: - black: '0x02140D' - red: '0xD05023' - green: '0x027B9B' - yellow: '0x7B70AF' - blue: '0x3D8890' - magenta: '0x68D3F0' - cyan: '0x50A3B5' - white: '0xDEB88D' - bright: - black: '0x02DB88' - red: '0xD38677' - green: '0x618C98' - yellow: '0x7D72FE' - blue: '0x1ABCDD' - magenta: '0xBBE3EE' - cyan: '0x86ABB3' - white: '0xFEE3CD' +[colors.cursor] +cursor = '0xE0D0FF' + +[colors.primary] +background = '0x000505' +foreground = '0xCFC2E9' + +[colors.normal] +black = '0x000505' +red = '0xC80064' +green = '0x00C864' +yellow = '0x6400C8' +blue = '0x007D96' +magenta = '0x9600FA' +cyan = '0x00FAC8' +white = '0x7E707E' + +[colors.bright] +black = '0x424253' +red = '0x640032' +green = '0x006432' +yellow = '0x320064' +blue = '0x00324B' +magenta = '0x640096' +cyan = '0x009664' +white = '0xC0B0C0' diff --git a/colorschemes/active.main.alacritty.yml b/colorschemes/active.main.alacritty.yml new file mode 100644 index 0000000..597f9bc --- /dev/null +++ b/colorschemes/active.main.alacritty.yml @@ -0,0 +1,26 @@ +--- # yamllint disable rule:colons +# do not edit; generated by scwrypts +colors: + primary: + background: '0x000505' + foreground: '0xCFC2E9' + cursor: + cursor: '0xE0D0FF' + normal: + black: '0x000505' + red: '0xC80064' + green: '0x00C864' + yellow: '0x6400C8' + blue: '0x007D96' + magenta: '0x9600FA' + cyan: '0x00FAC8' + white: '0x7E707E' + bright: + black: '0x424253' + red: '0x640032' + green: '0x006432' + yellow: '0x320064' + blue: '0x00324B' + magenta: '0x640096' + cyan: '0x009664' + white: '0xC0B0C0' diff --git a/colorschemes/active.main.getty b/colorschemes/active.main.getty index 310a65b..1d3c0a4 100644 --- a/colorschemes/active.main.getty +++ b/colorschemes/active.main.getty @@ -2,6 +2,6 @@ # source this file to apply colorscheme to linux getty [[ "$TERM" =~ ^linux$ ]] || return 0 -/bin/echo -e " ]P0000505 ]P1D05023 ]P2027B9B ]P37B70AF ]P43D8890 ]P568D3F0 ]P650A3B5 ]P7E0F7FF ]P8D38677 ]P9618C98 ]PA7D72FE ]PB1ABCDD ]PCBBE3EE ]PD86ABB3 ]PEDEB88D ]PFFEE3CD " +/bin/echo -e " ]P0000505 ]P1C80064 ]P200C864 ]P36400C8 ]P4007D96 ]P59600FA ]P600FAC8 ]P7CFC2E9 ]P8640032 ]P9006432 ]PA320064 ]PB00324B ]PC640096 ]PD009664 ]PE7E707E ]PFC0B0C0 " [ ! $NO_CLEAR ] && clear return 0 diff --git a/config/alacritty.toml b/config/alacritty.toml new file mode 100644 index 0000000..4b4c4b2 --- /dev/null +++ b/config/alacritty.toml @@ -0,0 +1,20 @@ +import = [ + "/home/w0ryn/.config/alacritty/theme.toml", + "/home/w0ryn/.config/alacritty/local.toml", + ] + +[font.bold] +family = "Monaspace Argon" + +[font.glyph_offset] +x = 0 +y = 1 + +[font.italic] +family = "Monaspace Radon" + +[font.normal] +family = "Monaspace Neon" + +[window] +opacity = 0.8 diff --git a/config/alacritty.yaml b/config/alacritty.yaml index b310339..3384caf 100644 --- a/config/alacritty.yaml +++ b/config/alacritty.yaml @@ -1,11 +1,22 @@ --- # yamllint disable rule:colons +# DEPRECATED; please refer to alacritty.toml import: - ~/.config/alacritty/theme.yml - ~/.config/alacritty/local.yml window: - opacity: 0.7 + opacity: 0.8 font: + glyph_offset: + x: 0 + y: 1 + normal: family: Monaspace Neon + + bold: + family: Monaspace Argon + + italic: + family: Monaspace Radon diff --git a/config/scwrypts/config.zsh b/config/scwrypts/config.zsh index 870c5e1..b5bab72 100644 --- a/config/scwrypts/config.zsh +++ b/config/scwrypts/config.zsh @@ -8,5 +8,8 @@ SCWRYPTS_ENV_SHORTCUT='' # CTRL + / source "$HOME/.wryn/scwrypts/dotwryn/dotwryn.scwrypts.zsh" source "$HOME/.wryn/scwrypts/ssh/ssh.scwrypts.zsh" +[ -f "$HOME/Projects/yage/home/code/scwrypts/yagehome.scwrypts.zsh" ] \ + && source "$HOME/Projects/yage/home/code/scwrypts/yagehome.scwrypts.zsh" + [ -f "$HOME/.config/scwrypts/config.local.zsh" ] \ && source "$HOME/.config/scwrypts/config.local.zsh" diff --git a/config/scwrypts/dotfiles.zsh b/config/scwrypts/dotfiles.zsh index 4e2370c..8d03430 100644 --- a/config/scwrypts/dotfiles.zsh +++ b/config/scwrypts/dotfiles.zsh @@ -10,34 +10,36 @@ SYMLINKS=" # -------------------------------------------------------------------------- # fully qualified path ~/.config/THE-REST # -------------------------------------------------------------------------- -$DOTWRYN/bin/i3-utils i3/utils -$DOTWRYN/colorschemes/active.main kitty/theme.conf -$DOTWRYN/colorschemes/active.main.alacritty alacritty/theme.yml -$DOTWRYN/colorschemes/active.main.getty wryn/tty-colorscheme -$DOTWRYN/config/alacritty.yaml alacritty/alacritty.yml -$DOTWRYN/config/bat.conf bat/config -$DOTWRYN/config/code-activator.conf code-activator-zsh/settings.zsh -$DOTWRYN/config/compton.conf compton/compton.conf -$DOTWRYN/config/git.conf git/config -$DOTWRYN/config/htop.conf htop/htoprc -$DOTWRYN/config/i3.conf i3/config -$DOTWRYN/config/i3status.conf i3status/config -$DOTWRYN/config/kitty.conf kitty/kitty.conf -$DOTWRYN/config/mssqlcli.conf mssqlci/config -$DOTWRYN/config/pgcli.conf pgcli/config -$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/vundle.zsh scwrypts/vundle.zsh -$DOTWRYN/config/tmux.conf tmux/tmux.conf -$DOTWRYN/config/xcompose.conf X11/xcompose -$DOTWRYN/config/xconfig.conf X11/xconfig -$DOTWRYN/config/xinitrc.i3 X11/xinitrc -$DOTWRYN/config/xinitrc.i3 ../.xinitrc -$DOTWRYN/bin/scwrypts ../.local/bin/scwrypts -$DOTWRYN/bin/vim ../.local/bin/vim -$DOTWRYN/bin/$(hostnamectl --static) ../.$(hostnamectl --static) +$DOTWRYN/bin/i3-utils i3/utils +$DOTWRYN/colorschemes/active.main kitty/theme.conf +$DOTWRYN/colorschemes/active.main.alacritty alacritty/theme.toml +$DOTWRYN/colorschemes/active.main.alacritty.yml alacritty/theme.yml +$DOTWRYN/colorschemes/active.main.getty wryn/tty-colorscheme +$DOTWRYN/config/alacritty.toml alacritty/alacritty.toml +$DOTWRYN/config/alacritty.yaml alacritty/alacritty.yml +$DOTWRYN/config/bat.conf bat/config +$DOTWRYN/config/code-activator.conf code-activator-zsh/settings.zsh +$DOTWRYN/config/compton.conf compton/compton.conf +$DOTWRYN/config/git.conf git/config +$DOTWRYN/config/htop.conf htop/htoprc +$DOTWRYN/config/i3.conf i3/config +$DOTWRYN/config/i3status.conf i3status/config +$DOTWRYN/config/kitty.conf kitty/kitty.conf +$DOTWRYN/config/mssqlcli.conf mssqlci/config +$DOTWRYN/config/pgcli.conf pgcli/config +$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/vundle.zsh scwrypts/vundle.zsh +$DOTWRYN/config/tmux.conf tmux/tmux.conf +$DOTWRYN/config/xcompose.conf X11/xcompose +$DOTWRYN/config/xconfig.conf X11/xconfig +$DOTWRYN/config/xinitrc.i3 X11/xinitrc +$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 diff --git a/scwrypts/dotwryn/desktop/i3/create-local-font-override b/scwrypts/dotwryn/desktop/i3/create-local-font-override new file mode 100755 index 0000000..15fd59a --- /dev/null +++ b/scwrypts/dotwryn/desktop/i3/create-local-font-override @@ -0,0 +1,102 @@ +#!/bin/zsh +DEPENDENCIES+=( + diff +) +REQUIRED_ENV+=( + I3__MODEL_CONFIG +) + +CHECK_ENVIRONMENT +##################################################################### + +REGEX_FONT='^\(font [^0-9]*\)\(.*\)' +REGEX_DMENU="^\\(.*dmenu_run .*-fn '[^0-9]*\\)\\([0-9]*\\)'" +REGEX_BORDER='^\(for_window.*border pixel \)\(.*\)' + +INSTALL() { + local USAGE=" + usage: [...options...] + + options + -f, --force force replacement of existing i3config + -n, --no-link if output config and template are the same, don't create link + + -h, --help print this message and exit + + environment + I3__MODEL_CONFIG fully-qualified path to sourced i3config + I3__GLOBAL_FONT_SIZE global font size + I3__DMENU_FONT_SIZE (optional) font size for 'dmenu' command + I3__BORDER_PIXEL_SIZE (optional) pixel-width of window borders + + I3 provides no way to include dynamic variables in your config. + The main difference I want between my i3 configurations is font-size + to match the current monitor. Since i3-msg provides no way to change + font size, I run this command to update those variables on a local + copy of my sourced config + " + local FORCE=0 + local AUTOLINK=1 + while [[ $# -gt 0 ]] + do + case $1 in + -f | --force ) FORCE=1 ;; + -n | --no-link ) AUTOLINK=0 ;; + -h | --help ) USAGE; exit 0 ;; + esac + shift 1 + done + + STATUS 'reading local i3config' + [[ ^$I3__MODEL_CONFIG$ =~ ^$HOME/.config/i3/config$ ]] && { + STATUS "model configuration is default configuration" + I3__MODEL_CONFIG="$I3__MODEL_CONFIG.template" + [ ! -f "$I3__MODEL_CONFIG" ] && { + STATUS "creating template" + cp "$HOME/.config/i3/config" "$I3__MODEL_CONFIG.template" + } + STATUS "referring to '$I3__MODEL_CONFIG'" + } + local CONFIG=$(cat "$I3__MODEL_CONFIG") + [ ! $CONFIG ] && FAIL 1 "failed to read config at '$I3__MODEL_CONFIG'" + + local CONFIG_FILE="$HOME/.config/i3/config" + [ ! -d $(dirname "$CONFIG_FILE") ] && mkdir -p "$(dirname "$CONFIG_FILE")" + + [ -f "$CONFIG_FILE" ] && mv "$CONFIG_FILE" "$CONFIG_FILE.bak" + + [ $I3__GLOBAL_FONT_SIZE ] && { + STATUS "setting global font size to '$I3__GLOBAL_FONT_SIZE'" + CONFIG=$(echo $CONFIG | sed "s/$REGEX_FONT/\\1$I3__GLOBAL_FONT_SIZE/") + } + + [ $I3__DMENU_FONT_SIZE ] && { + STATUS "setting dmenu font size to '$I3__DMENU_FONT_SIZE'" + CONFIG=$(echo $CONFIG | sed "s/$REGEX_DMENU/\\1$I3__DMENU_FONT_SIZE'/") + } + + [ $I3__BORDER_PIXEL_SIZE ] && { + STATUS "setting border pixel size to '$I3__BORDER_PIXEL_SIZE'" + CONFIG=$(echo $CONFIG | sed "s/$REGEX_BORDER/\\1$I3__BORDER_PIXEL_SIZE/") + } + + echo $CONFIG > "$CONFIG_FILE" + [ -f "$CONFIG_FILE.bak" ] \ + && diff "$CONFIG_FILE" "$CONFIG_FILE.bak" -q >/dev/null \ + && mv "$CONFIG_FILE.bak" "$CONFIG_FILE" \ + && INFO "no changes were made" \ + ; + + [[ $AUTOLINK -eq 1 ]] \ + && diff "$CONFIG_FILE" "$I3__MODEL_CONFIG" -q >/dev/null \ + && rm "$CONFIG_FILE" \ + && ln -s "$I3__MODEL_CONFIG" "$CONFIG_FILE" \ + && INFO "output is the same as model, i3config has been linked to model" \ + ; + + [[ $FORCE -eq 1 ]] && rm "$CONFIG.bak" >/dev/null 2>&1 + return 0 +} + +##################################################################### +INSTALL $@ diff --git a/scwrypts/dotwryn/desktop/i3/launch-or-show b/scwrypts/dotwryn/desktop/i3/launch-or-show new file mode 100755 index 0000000..87391c2 --- /dev/null +++ b/scwrypts/dotwryn/desktop/i3/launch-or-show @@ -0,0 +1,136 @@ +#!/bin/zsh +DEPENDENCIES+=( + i3-msg + xdotool + xrandr +) +REQUIRED_ENV+=() + +use system/desktop/notify + +CHECK_ENVIRONMENT +##################################################################### + +LAUNCH_OR_SHOW() { + INFO $@ + local USAGE=" + usage: [client-class] [...options...] + + options + -c, --client if different from the executable name, xprop CLIENT_CLASS + + -s, --scale (default: 0.8 or 0.5 if screen width >3000px) + -x, --x-offset (default: 0.0) + -y, --y-offset (default: 0.0) + + -a, --always-launch invoke executable even if client-class exists + -n, --no-resize don't resize the window (ignores -sxy flags) + -l, --no-center leave the window wherever it was last positioned + + --has-statusbar-icon (default: false) use if program has a statusbar icon + + -h, --help print this message and exit + + Makes it easy to bind appications to key shortcuts without having to + spin up redundant instances or cycle through the scratchpad queue. + + Performs a variety of tasks based on states: + 1) starts and application + 2) adds all instances of the specified application to the scratchpad + 3) (toggle) hides all visible instances + 4) (toggle) shows all scratchpad-hidden instances + " + local APPLICATION CLIENT_CLASS + + local XFFSET=0.0 + local YFFSET=0.0 + local SCALE=0.8 + [[ $(xrandr | grep primary | awk '{print $4;}' | sed 's/x.*//') -gt 3000 ]] \ + && SCALE=0.5 + + local ALWAYS_LAUNCH=0 + local RESIZE=1 + local MOVE=1 + local MIN_ACTIVE=1 + + while [[ $# -gt 0 ]] + do + case $1 in + -c | --client ) CLIENT_CLASS="$2"; shift 1 ;; + -x | --x-offset ) XFFSET=$2; shift 1 ;; + -y | --y-offset ) YFFSET=$2; shift 1 ;; + -s | --scale ) SCALE=$2; shift 1 ;; + + -a | --always-launch ) ALWAYS_LAUNCH=1 ;; + -n | --no-resize ) RESIZE=0 ;; + -l | --no-center ) MOVE=0 ;; + + --has-statusbar-icon ) MIN_ACTIVE=2 ;; + + -h | --help ) USAGE; exit 0 ;; + + * ) + [ ! $APPLICATION ] && APPLICATION="$1" \ + || ERROR "extra positional argument '$1'" + esac + shift 1 + done + + [ ! $APPLICATION ] && ERROR 'path-executable required' + [ ! $CLIENT_CLASS ] && CLIENT_CLASS=$APPLICATION + + [ $APPLICATION ] && { + __CHECK_DEPENDENCY $APPLICATION || { + ERROR "$APPLICATION is not installed" + NOTIFY "ERROR: $APPLICATION not found" + } + } + + CHECK_ERRORS + + xrandr | grep primary | awk '{print $4;}' | grep -q '^[0-9x+]\+$' || { + xrandr --output $(xrandr | grep ' connected' | awk '{print $1;}' | head -n1) --primary + } + + local CURRENTLY_ACTIVE=$(xdotool search --onlyvisible --classname $CLIENT_CLASS 2>/dev/null | wc -l) + + local LAUNCH_APP=$ALWAYS_LAUNCH + STATUS "looking for window process ids" + xdotool search --class $CLIENT_CLASS || LAUNCH_APP=1 + + [[ $LAUNCH_APP -eq 1 ]] && { + STATUS 'launching application' + i3-msg "exec --no-startup-id $APPLICATION;" + sleep .5 + } + + STATUS 'getting target window size' + WINDOW_SIZE=$(\ + xrandr \ + | grep 'connected primary' \ + | sed 's/.*connected primary \([^x]*\)x\([^+]*\).*/\1 \2/' \ + | awk -v f=$SCALE -v x=$XFFSET -v y=$YFFSET \ + '{print int($1*f+x)," ",int($2*f+y);}'\ + ) + INFO "window size: $WINDOW_SIZE" + + STATUS 'moving window to scratchpad' + i3-msg "[class=$CLIENT_CLASS] move scratchpad" + + [[ $RESIZE -eq 1 ]] \ + && STATUS 'resizing window' \ + && i3-msg "[class=$CLIENT_CLASS] resize set $WINDOW_SIZE" + + [[ $CURRENTLY_ACTIVE -lt $MIN_ACTIVE ]] && { + STATUS 'pulling window from scratchpad to foreground' + i3-msg "[class=$CLIENT_CLASS] scratchpad show" + } + + STATUS 'moving window to center of current screen' + [[ $MOVE -eq 1 ]] && i3-msg "[class=$CLIENT_CLASS] move position center" + + return 0 +} + +##################################################################### +LAUNCH_OR_SHOW $@ diff --git a/scwrypts/dotwryn/lib/desktop/colorscheme.module.zsh b/scwrypts/dotwryn/lib/desktop/colorscheme.module.zsh index 6324e3f..c2323ef 100644 --- a/scwrypts/dotwryn/lib/desktop/colorscheme.module.zsh +++ b/scwrypts/dotwryn/lib/desktop/colorscheme.module.zsh @@ -181,6 +181,36 @@ _LIST_THEMES() { _GENERATE_THEME__alacritty() { STATUS "generating $ACTIVE_THEME_NAME.alacritty" + echo "# do not edit; generated by scwrypts +[colors.cursor] +cursor = '0x$CURSOR' + +[colors.primary] +background = '0x$BACKGROUND' +foreground = '0x$FOREGROUND' + +[colors.normal] +black = '0x$BLACK' +red = '0x$RED' +green = '0x$GREEN' +yellow = '0x$YELLOW' +blue = '0x$BLUE' +magenta = '0x$MAGENTA' +cyan = '0x$CYAN' +white = '0x$WHITE' + +[colors.bright] +black = '0x$BRIGHT_BLACK' +red = '0x$BRIGHT_RED' +green = '0x$BRIGHT_GREEN' +yellow = '0x$BRIGHT_YELLOW' +blue = '0x$BRIGHT_BLUE' +magenta = '0x$BRIGHT_MAGENTA' +cyan = '0x$BRIGHT_CYAN' +white = '0x$BRIGHT_WHITE' +" | sed '$d' > "$ACTIVE_THEME.alacritty" + + # backwards yaml compatibility echo "--- # yamllint disable rule:colons # do not edit; generated by scwrypts colors: @@ -207,12 +237,12 @@ colors: magenta: '0x$BRIGHT_MAGENTA' cyan: '0x$BRIGHT_CYAN' white: '0x$BRIGHT_WHITE' -" | sed '$d' > "$ACTIVE_THEME.alacritty" +" | sed '$d' > "$ACTIVE_THEME.alacritty.yml" } _SET_THEME__alacritty() { - local LOCAL_THEME="$HOME/.config/alacritty/theme.yml" - ln -sf "$ACTIVE_THEME.alacritty" "$LOCAL_THEME" + ln -sf "$ACTIVE_THEME.alacritty" "$HOME/.config/alacritty/theme.toml" + ln -sf "$ACTIVE_THEME.alacritty.yml" "$HOME/.config/alacritty/theme.yml" # backwards yaml compatibility } ##################################################################### diff --git a/scwrypts/dotwryn/lib/media/audio.module.zsh b/scwrypts/dotwryn/lib/media/audio.module.zsh index b1ccf2f..10b903b 100644 --- a/scwrypts/dotwryn/lib/media/audio.module.zsh +++ b/scwrypts/dotwryn/lib/media/audio.module.zsh @@ -26,6 +26,8 @@ MEDIA__PLAY_SFX() { ;; esac + [ ! -f $SFX_FILE ] && SFX_FILE="$DESKTOP__SFX_PATH/$SFX_FILE" + [ -f $SFX_FILE ] \ && STATUS "detected file '$SFX_FILE'" \ || NOTIFY_FAIL 1 "unable to locate sfx file '$1'" \