Init
This commit is contained in:
		
						commit
						d6985ded7e
					
				
					 18 changed files with 348 additions and 0 deletions
				
			
		
							
								
								
									
										3
									
								
								.envrc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.envrc
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| use nix | ||||
| 
 | ||||
| printf '\nPlease set and export $BASHLY_SOURCE_DIR\n\n' | ||||
							
								
								
									
										4
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| .target | ||||
| output/ | ||||
| 
 | ||||
| autostart-manage/lib/send_completions.sh | ||||
							
								
								
									
										20
									
								
								Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | |||
| target: | ||||
| 	@echo "Enter target directory:" | ||||
| 	@read target; \
 | ||||
| 	echo $$target > .target | ||||
| 
 | ||||
| get-target: | ||||
| 	$(eval TARGET := $(shell cat .target)) | ||||
| 
 | ||||
| output-dir: | ||||
| 	mkdir -p ./output | ||||
| 
 | ||||
| generate: get-target output-dir | ||||
| 	BASHLY_SOURCE_DIR=$(TARGET) bashly generate | ||||
| 	 | ||||
| completions: generate | ||||
| 	BASHLY_SOURCE_DIR=$(TARGET) bashly add --force completions_script ./output/_$(TARGET) | ||||
| 
 | ||||
| deploy: completions | ||||
| 	cp -f ./output/$(TARGET) ~/.local/bin/ | ||||
| 	cp -f ./output/_$(TARGET) ~/.config/completionsrc.d/ | ||||
							
								
								
									
										99
									
								
								autostart-manage/bashly.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								autostart-manage/bashly.yml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,99 @@ | |||
| name: autostart-manage | ||||
| help: Manage autostart | ||||
| version: 0.1.0 | ||||
| 
 | ||||
| dependencies: | ||||
|   yq: | ||||
|     command: [tomlq] | ||||
|     help: please install yq (https://github.com/kislyuk/yq) | ||||
| 
 | ||||
| environment_variables: | ||||
| - name: HOSTNAME | ||||
|   help: The hostname to use. We will try to get the value automatically. | ||||
| 
 | ||||
| commands: | ||||
|   - name: completions | ||||
|     help: Generate bash completions | ||||
| 
 | ||||
|   - name: list | ||||
|     help: List available programs | ||||
|   - name: info | ||||
|     help: Get the current status of all programs | ||||
|   - name: sync | ||||
|     help: Remove all programs from autostart and the re-enable all | ||||
|   - name: enable | ||||
|     help: Add a single program to autostart | ||||
|     args: | ||||
|       - name: program | ||||
|         required: true | ||||
|         help: Program to add to autostart | ||||
|     completions: | ||||
|       - $(autostart-manage list) | ||||
|     filename: systemctl.sh | ||||
|   - name: disable | ||||
|     help: Remove a single program from autostart | ||||
|     args: | ||||
|       - name: program | ||||
|         required: true | ||||
|         help: Program to add to autostart | ||||
|     completions: | ||||
|       - $(autostart-manage list) | ||||
|     filename: systemctl.sh | ||||
|   - name: restart | ||||
|     help: Restart programs from autostart | ||||
|     args: | ||||
|       - name: program | ||||
|         help: Program to add to autostart | ||||
|         default: "*" | ||||
|     completions: | ||||
|       - $(autostart-manage list) | ||||
|     filename: systemctl.sh | ||||
|   - name: start | ||||
|     help: Start programs from autostart | ||||
|     args: | ||||
|       - name: program | ||||
|         help: Program to start to autostart | ||||
|         default: "*" | ||||
|     completions: | ||||
|       - $(autostart-manage list) | ||||
|     filename: systemctl.sh | ||||
|   - name: status | ||||
|     help: Check status of programs from autostart | ||||
|     args: | ||||
|       - name: program | ||||
|         help: Program to check status on | ||||
|         default: "*" | ||||
|     completions: | ||||
|       - $(autostart-manage list) | ||||
|     filename: systemctl.sh | ||||
|   - name: stop | ||||
|     help: Stop programs from autostart | ||||
|     args: | ||||
|       - name: program | ||||
|         help: Program to stop | ||||
|         default: "*" | ||||
|     completions: | ||||
|       - $(autostart-manage list) | ||||
|     filename: systemctl.sh | ||||
|   - name: log | ||||
|     help: Show the log for a single program from autostart | ||||
|     args: | ||||
|       - name: program | ||||
|         required: true | ||||
|         help: Program to log | ||||
|     completions: | ||||
|       - $(autostart-manage list) | ||||
|   - name: exec | ||||
|     help: Execute a single program from autostart | ||||
|     args: | ||||
|       - name: program | ||||
|         required: true | ||||
|         help: Program to execute | ||||
|     completions: | ||||
|       - $(autostart-manage list) | ||||
|   - name: run | ||||
|     help: Run all programs | ||||
|   - name: run-wayland | ||||
|     help: Run all the wayland specific tasks and all programs | ||||
|   - name: run-xorg | ||||
|     help: Run all the xorg specific tasks and all programs | ||||
							
								
								
									
										3
									
								
								autostart-manage/completions_command.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								autostart-manage/completions_command.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| send_completions | ||||
							
								
								
									
										7
									
								
								autostart-manage/exec_command.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								autostart-manage/exec_command.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,7 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| program=${args[program]:?} | ||||
| 
 | ||||
| cmd=$(_get_autostart_cmd "$program") | ||||
| sleep "$(_get_autostart_delay "$program")" | ||||
| bash -c "$cmd" | ||||
							
								
								
									
										9
									
								
								autostart-manage/info_command.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								autostart-manage/info_command.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| autostart_units=() | ||||
| while IFS='' read -r line | ||||
| do | ||||
| 	autostart_units+=("$line") | ||||
| done < <(_list) | ||||
| 
 | ||||
| _echo_table "${autostart_units[@]}" | column -t -s$'\t' --table-columns 'Unit,Enabled?,Active?,Command' | ||||
							
								
								
									
										42
									
								
								autostart-manage/lib/colors.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								autostart-manage/lib/colors.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,42 @@ | |||
| ## Color functions [@bashly-upgrade colors] | ||||
| ## This file is a part of Bashly standard library | ||||
| ## | ||||
| ## Usage: | ||||
| ## Use any of the functions below to color or format a portion of a string. | ||||
| ## | ||||
| ##   echo "before $(red this is red) after" | ||||
| ##   echo "before $(green_bold this is green_bold) after" | ||||
| ## | ||||
| ## Color output will be disabled if `NO_COLOR` environment variable is set | ||||
| ## in compliance with https://no-color.org/ | ||||
| ## | ||||
| print_in_color() { | ||||
|   local color="$1" | ||||
|   shift | ||||
|   if [[ -z ${NO_COLOR+x} ]]; then | ||||
|     printf "$color%b\e[0m\n" "$*" | ||||
|   else | ||||
|     printf "%b\n" "$*" | ||||
|   fi | ||||
| } | ||||
| 
 | ||||
| red() { print_in_color "\e[31m" "$*"; } | ||||
| green() { print_in_color "\e[32m" "$*"; } | ||||
| yellow() { print_in_color "\e[33m" "$*"; } | ||||
| blue() { print_in_color "\e[34m" "$*"; } | ||||
| magenta() { print_in_color "\e[35m" "$*"; } | ||||
| cyan() { print_in_color "\e[36m" "$*"; } | ||||
| bold() { print_in_color "\e[1m" "$*"; } | ||||
| underlined() { print_in_color "\e[4m" "$*"; } | ||||
| red_bold() { print_in_color "\e[1;31m" "$*"; } | ||||
| green_bold() { print_in_color "\e[1;32m" "$*"; } | ||||
| yellow_bold() { print_in_color "\e[1;33m" "$*"; } | ||||
| blue_bold() { print_in_color "\e[1;34m" "$*"; } | ||||
| magenta_bold() { print_in_color "\e[1;35m" "$*"; } | ||||
| cyan_bold() { print_in_color "\e[1;36m" "$*"; } | ||||
| red_underlined() { print_in_color "\e[4;31m" "$*"; } | ||||
| green_underlined() { print_in_color "\e[4;32m" "$*"; } | ||||
| yellow_underlined() { print_in_color "\e[4;33m" "$*"; } | ||||
| blue_underlined() { print_in_color "\e[4;34m" "$*"; } | ||||
| magenta_underlined() { print_in_color "\e[4;35m" "$*"; } | ||||
| cyan_underlined() { print_in_color "\e[4;36m" "$*"; } | ||||
							
								
								
									
										57
									
								
								autostart-manage/lib/common.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								autostart-manage/lib/common.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,57 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| _systemctl () { | ||||
| 	systemctl --user "${@:2}" "autostart@$1.service" | ||||
| } | ||||
| 
 | ||||
| _query_autostart_toml() { | ||||
| 	tomlq -r --arg host "$HOSTNAME" \ | ||||
|     '.hosts[$host].groups as $groups | .apps | to_entries[] | select( | ||||
|         (.value.hosts | contains([$host])) or | ||||
|         ([.value.group] | inside($groups)) | ||||
|     ) | '"$1" \ | ||||
|     "$XDG_CONFIG_HOME/autostart.toml" | ||||
| } | ||||
| 
 | ||||
| _list () { | ||||
| 	_query_autostart_toml '.value.alias // .key' | ||||
| } | ||||
| 
 | ||||
| _autostart_run_graphical () { | ||||
| 	pass x # Try to unlock yubikey asap | ||||
| 
 | ||||
| 	start-audio pipewire | ||||
| 	wait-for-service "network-online.target" | ||||
| 
 | ||||
| 	# Execute only if not already running | ||||
| 	# Don't match keepassxc-proxy | ||||
| 	if ! (pgrep -l keepassxc | grep -v prox) >/dev/null | ||||
| 	then | ||||
| 		if pass x | ||||
| 		then | ||||
| 			(pass keepass | head -n 1 | keepassxc --pw-stdin ~/sync/passwords.kdbx) & | ||||
| 		fi | ||||
| 	fi | ||||
| 
 | ||||
| 	autoinstall graphical | ||||
| 	autostart-manage run | ||||
| } | ||||
| 
 | ||||
| _echo_table () { | ||||
| 	for unit in "$@" | ||||
| 	do | ||||
| 		printf "%s\t%s\t%s\t%s\n" \ | ||||
| 			"$unit" \ | ||||
| 			"$(_systemctl "$unit" is-enabled)" \ | ||||
| 			"$(_systemctl "$unit" is-active)" \ | ||||
| 			"$(_get_autostart_cmd "$unit")" | ||||
| 	done | ||||
| } | ||||
| 
 | ||||
| _get_autostart_cmd () { | ||||
| 	_query_autostart_toml 'select((.key == "'"$1"'") or (.value.alias == "'"$1"'")) | .value.command' | ||||
| } | ||||
| 
 | ||||
| _get_autostart_delay () { | ||||
| 	_query_autostart_toml 'select((.key == "'"$1"'") or (.value.alias == "'"$1"'")) | .value.delay // 0' | ||||
| } | ||||
							
								
								
									
										3
									
								
								autostart-manage/list_command.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								autostart-manage/list_command.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| _list | ||||
							
								
								
									
										3
									
								
								autostart-manage/log_command.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								autostart-manage/log_command.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| journalctl --user -fu "autostart@${args[program]:?}.service" | ||||
							
								
								
									
										3
									
								
								autostart-manage/run_command.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								autostart-manage/run_command.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| systemctl --user start autostart.target | ||||
							
								
								
									
										5
									
								
								autostart-manage/run_wayland_command.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								autostart-manage/run_wayland_command.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| _autostart_run_graphical | ||||
| 
 | ||||
| killall -SIGUSR2 waybar | ||||
							
								
								
									
										12
									
								
								autostart-manage/run_xorg_command.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								autostart-manage/run_xorg_command.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,12 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| feh --bg-fill "$XDG_PICTURES_DIR/wallpaper/active_wallpaper" | ||||
| 
 | ||||
| "$HOME/.config/polybar/launch.sh" & | ||||
| "$HOME/.config/bspwm/focus-voip.py" & | ||||
| 
 | ||||
| numlockx on | ||||
| xsetroot -cursor_name left_ptr | ||||
| xrdb "$HOME/.Xresources" | ||||
| 
 | ||||
| _autostart_run_graphical | ||||
							
								
								
									
										14
									
								
								autostart-manage/sync_command.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								autostart-manage/sync_command.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| rm "$HOME/.config/systemd/user/autostart.target.wants/"* | ||||
| 
 | ||||
| autostart_units=() | ||||
| while IFS='' read -r line | ||||
| do | ||||
| 	autostart_units+=("$line") | ||||
| done < <(_list) | ||||
| 
 | ||||
| for unit in "${autostart_units[@]}" | ||||
| do | ||||
| 	_systemctl "$unit" add-wants autostart.target | ||||
| done | ||||
							
								
								
									
										9
									
								
								autostart-manage/systemctl.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								autostart-manage/systemctl.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| systemctl_args=("$action") | ||||
| if [[ $action == "enable" ]]; then | ||||
| 	systemctl_args=("add-wants" "autostart.target") | ||||
| fi | ||||
| 
 | ||||
| #shellcheck disable=SC2068 | ||||
| _systemctl "${args[program]:?}" "${systemctl_args[@]}" | ||||
							
								
								
									
										49
									
								
								settings.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								settings.yml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,49 @@ | |||
| # The path to bashly.yml | ||||
| config_path: "%{source_dir}/bashly.yml" | ||||
| 
 | ||||
| # The path to use for creating the bash script | ||||
| target_dir: output | ||||
| 
 | ||||
| # The path to use for common library files, relative to source_dir | ||||
| lib_dir: lib | ||||
| 
 | ||||
| # The path to use for command files, relative to source_dir | ||||
| # When set to nil (~), command files will be placed directly under source_dir | ||||
| # When set to any other string, command files will be placed under this | ||||
| # directory, and each command will get its own subdirectory | ||||
| commands_dir: ~ | ||||
| 
 | ||||
| # Configure the bash options that will be added to the initialize function: | ||||
| # strict: true       Bash strict mode (set -euo pipefail) | ||||
| # strict: false      Only exit on errors (set -e) | ||||
| # strict: ''         Do not add any 'set' directive | ||||
| # strict: <string>   Add any other custom 'set' directive | ||||
| strict: true | ||||
| 
 | ||||
| # When true, the generated script will use tab indentation instead of spaces | ||||
| # (every 2 leading spaces will be converted to a tab character) | ||||
| tab_indent: true | ||||
| 
 | ||||
| # When true, the generated script will consider any argument in the form of | ||||
| # `-abc` as if it is `-a -b -c`. | ||||
| compact_short_flags: true | ||||
| 
 | ||||
| # Set to 'production' or 'development': | ||||
| # env: production    Generate a smaller script, without file markers | ||||
| # env: development   Generate with file markers | ||||
| env: development | ||||
| 
 | ||||
| # The extension to use when reading/writing partial script snippets | ||||
| partials_extension: sh | ||||
| 
 | ||||
| # Display various usage elements in color by providing the name of the color | ||||
| # function. The value for each property is a name of a function that is | ||||
| # available in your script, for example: `green` or `bold`. | ||||
| # You can run `bashly add colors` to add a standard colors library. | ||||
| # This option cannot be set via environment variables. | ||||
| usage_colors: | ||||
|   caption: blue | ||||
|   command: green | ||||
|   arg: red | ||||
|   flag: yellow | ||||
|   environment_variable: cyan | ||||
							
								
								
									
										6
									
								
								shell.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								shell.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| with import <nixpkgs> {}; | ||||
| mkShell { | ||||
| 	nativeBuildInputs = [ | ||||
| 		bashly | ||||
| 	]; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue