toggles: refactor to have config

Config is in $XDG_CONFIG_HOME/caelestia/scripts.json
Selector is a jq selector using hyprland client data
Spawn is a command passed to uwsm app
Action is either spawn, move, or both
Extra cond is an extra shell command to check whether to do action (for easy disabling just put false or empty action)
This commit is contained in:
2 * r + 2 * t
2025-04-03 21:41:26 +11:00
parent 9464e34727
commit f8a6e84aa9
8 changed files with 107 additions and 40 deletions
+51
View File
@@ -0,0 +1,51 @@
{
"toggles": {
"communication": {
"apps": [
{
"selector": ".class == \"equibop\"",
"spawn": "equibop",
"action": "spawn move"
},
{
"selector": ".class == \"whatsapp\"",
"spawn": "firefox --name whatsapp -P whatsapp 'https://web.whatsapp.com'",
"action": "move",
"extraCond": "grep -q 'Name=whatsapp' ~/.mozilla/firefox/profiles.ini"
}
]
},
"music": {
"apps": [
{
"selector": ".class == \"Spotify\" or .initialTitle == \"Spotify\" or .initialTitle == \"Spotify Free\"",
"spawn": "spotify-adblock.desktop",
"action": "spawn move"
},
{
"selector": ".class == \"feishin\"",
"spawn": "feishin",
"action": "move"
}
]
},
"sysmon": {
"apps": [
{
"selector": ".class == \"btop\" and .title == \"btop\" and .workspace.name == \"special:sysmon\"",
"spawn": "foot -a 'btop' -T 'btop' -- btop",
"action": "spawn"
}
]
},
"todo": {
"apps": [
{
"selector": ".class == \"Todoist\"",
"spawn": "todoist",
"action": "spawn move"
}
]
}
}
}