main
1#!/usr/bin/env bash
2set -euo pipefail
3
4# Toggle or set color scheme
5# Usage: toggle-color-scheme [light|dark]
6# Without argument: toggles between light and dark
7# With argument: sets to specified scheme
8
9# Get current color scheme from dconf
10current_scheme=$(dconf read /org/gnome/desktop/interface/color-scheme | tr -d "'")
11
12# Determine new scheme
13if [ $# -eq 0 ]; then
14 # No argument: toggle
15 if [[ "$current_scheme" == "prefer-dark" ]]; then
16 new_scheme="prefer-light"
17 else
18 new_scheme="prefer-dark"
19 fi
20 echo "Toggling from $current_scheme to $new_scheme"
21else
22 # Argument provided: set to specific scheme
23 case "$1" in
24 light)
25 new_scheme="prefer-light"
26 ;;
27 dark)
28 new_scheme="prefer-dark"
29 ;;
30 *)
31 echo "Invalid argument: $1"
32 echo "Usage: $0 [light|dark]"
33 exit 1
34 ;;
35 esac
36 echo "Setting color scheme to $new_scheme"
37fi
38
39# Set new color scheme via dconf
40dconf write /org/gnome/desktop/interface/color-scheme "'$new_scheme'"
41
42# Trigger niri screen transition for smooth visual effect
43if command -v niri &> /dev/null; then
44 niri msg action do-screen-transition
45fi
46
47echo "Color scheme is now $new_scheme"