mirror of
https://github.com/ben-grande/qusal.git
synced 2024-10-01 02:35:49 -04:00
bdd4c789c1
Echo can interpret operand as an option and checking every variable to be echoed is troublesome while with printf, if the format specifier is present before the operand, printing as string can be enforced.
79 lines
2.1 KiB
Bash
Executable File
79 lines
2.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
|
#
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
## Write KWin rules for window of specific domain to be in specific activity.
|
|
# shellcheck disable=SC1090,SC2317
|
|
set -eu
|
|
|
|
file="${XDG_CONFIG_HOME:=${HOME}/.config}/kwinrulesrc"
|
|
|
|
usage(){
|
|
printf '%s\n' "Usage: ${0##*/} <group> <activity>
|
|
Example: ${0##*/} personal personal
|
|
Example: ${0##*/} fun personal
|
|
Example: ${0##*/} work work
|
|
If domain is work, dvm-work, disp-work and work-something will all be present
|
|
in the work activity" >&2
|
|
exit 1
|
|
}
|
|
|
|
writeconf(){
|
|
group="$1"
|
|
key="$2"
|
|
value="$3"
|
|
|
|
group_id="$(grep -B1 -e "^Description=${group}$" -- "${file}" | head -1 |
|
|
tr -d "[" | tr -d "]")"
|
|
if test -z "${group_id}"; then
|
|
highest_id="$(grep -e "\[[0-9]\+\]" -- "${file}" | tr -d "[" | tr -d "]" |
|
|
sort | tail -1)"
|
|
if test -n "${highest_id}"; then
|
|
group_id="$((highest_id+1))"
|
|
else
|
|
group_id="0"
|
|
fi
|
|
fi
|
|
|
|
kwriteconfig --file "${file}" --group "${group_id}" --key "${key}" \
|
|
"${value}"
|
|
}
|
|
|
|
writeconf_group(){
|
|
chosen_group="$1"
|
|
chosen_activity="$2"
|
|
writeconf "${chosen_group}" Description "${chosen_group}"
|
|
if test -n "${chosen_activity}"; then
|
|
chosen_activity_id="$(kactivities-cli --list-activities |
|
|
awk -v activity="${chosen_activity}" '$3 ~ activity {print $2}')"
|
|
if test -z "${chosen_activity_id}"; then
|
|
printf '%s\n' "Invalid activity name: ${chosen_activity}"
|
|
exit 1
|
|
fi
|
|
writeconf "${chosen_group}" activity "${chosen_activity_id}"
|
|
writeconf "${chosen_group}" activityrule 2
|
|
fi
|
|
|
|
## Regex: https://doc.qt.io/qt-6/qregularexpression.html
|
|
writeconf "${chosen_group}" title \
|
|
"^\\[(disp-|dvm-)?${chosen_group}(-\\S+)?\\] .*"
|
|
writeconf "${chosen_group}" titlematch 3
|
|
writeconf "${chosen_group}" wmclass "${chosen_group}"
|
|
writeconf "${chosen_group}" wmclasscomplete false
|
|
writeconf "${chosen_group}" wmclassmatch 2
|
|
}
|
|
|
|
case "${1-}" in
|
|
""|-h|--?help) usage;;
|
|
*) ;;
|
|
esac
|
|
case "${2-}" in
|
|
"") usage;;
|
|
*) ;;
|
|
esac
|
|
|
|
writeconf_group "${1}" "${2}"
|
|
dbus-send --type=signal /KWin org.kde.KWin.reloadConfig
|