From a200c1eb223a33b0b317b9e4a67bd351421c814a Mon Sep 17 00:00:00 2001 From: yage Date: Sat, 23 Dec 2023 10:20:10 -0700 Subject: [PATCH] v3.9.1 ===================================================================== --- Changes ------------------------------ - Moved personal-environment specific scwrypts to wrynegade/dotwryn --- zsh/system/i3/create-local-font-override | 102 ----------------- zsh/system/i3/launch-or-show | 136 ----------------------- 2 files changed, 238 deletions(-) delete mode 100755 zsh/system/i3/create-local-font-override delete mode 100755 zsh/system/i3/launch-or-show diff --git a/zsh/system/i3/create-local-font-override b/zsh/system/i3/create-local-font-override deleted file mode 100755 index 15fd59a..0000000 --- a/zsh/system/i3/create-local-font-override +++ /dev/null @@ -1,102 +0,0 @@ -#!/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/zsh/system/i3/launch-or-show b/zsh/system/i3/launch-or-show deleted file mode 100755 index 47a360f..0000000 --- a/zsh/system/i3/launch-or-show +++ /dev/null @@ -1,136 +0,0 @@ -#!/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-9]\+$' || { - 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 $@