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…
Reference in a new issue