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"