diff --git a/modules/graphical/default.nix b/modules/graphical/default.nix index 390a416c..b8bbf58e 100644 --- a/modules/graphical/default.nix +++ b/modules/graphical/default.nix @@ -107,6 +107,13 @@ in # Conflict override since multiple DEs set this option programs.ssh.askPassword = pkgs.lib.mkForce (lib.getExe pkgs.ksshaskpass.out); + xdg.portal = { + enable = true; + extraPortals = with pkgs; [ + xdg-desktop-portal-gtk + ]; + }; + environment.systemPackages = with pkgs; [ catppuccin-sddm @@ -125,6 +132,13 @@ in # OCF IRC halloy + + # Themes + adw-gtk3 + libsForQt5.qt5ct + kdePackages.qt6ct + kdePackages.qtstyleplugin-kvantum + rose-pine-kvantum ]; fonts.packages = with pkgs; [ @@ -133,6 +147,12 @@ in noto-fonts-cjk-sans ]; + environment.sessionVariables = { + QT_QPA_PLATFORMTHEME = "qt5ct"; + }; + + programs.dconf.enable = true; + services = { desktopManager.cosmic = { enable = true; @@ -224,21 +244,43 @@ in COSMIC_THEME_FILE="$HOME/.config/cosmic/com.system76.CosmicTheme.Mode/v1/is_dark" COSMIC_BG_FILE="$HOME/.config/cosmic/com.system76.CosmicBackground/v1/all" OCF_THEME_FILE="$HOME/remote/.config/ocf/theme" + KVANTUM_THEME_FILE="$HOME/.config/Kvantum/kvantum.kvconfig" + mkdir -p "$(dirname "$KVANTUM_THEME_FILE")" + + # Ensure kvantum knows where to find the rose pine themes + ln -sfT ${pkgs.rose-pine-kvantum}/share/Kvantum/themes/rose-pine-moon-iris "$HOME/.config/Kvantum/rose-pine-moon-iris" || true + ln -sfT ${pkgs.rose-pine-kvantum}/share/Kvantum/themes/rose-pine-dawn-iris "$HOME/.config/Kvantum/rose-pine-dawn-iris" || true + + # Initialize kvantum.kvconfig if not present (skel only covers new users) + if [ ! -f "$KVANTUM_THEME_FILE" ]; then + kvantum_default_theme="rose-pine-moon-iris" + if [ -f "$OCF_THEME_FILE" ] && [ "$(cat "$OCF_THEME_FILE")" = "light" ]; then + kvantum_default_theme="rose-pine-dawn-iris" + fi + printf '[General]\ntheme=%s\n' "$kvantum_default_theme" > "$KVANTUM_THEME_FILE" + fi sync_theme() { if [ -f "$COSMIC_THEME_FILE" ]; then content=$(cat "$COSMIC_THEME_FILE") mkdir -p "$(dirname "$OCF_THEME_FILE")" + if [ "$content" = "true" ]; then echo "dark" > "$OCF_THEME_FILE" - sed -i -E 's/bg-(light|dark)/bg-dark/g' $COSMIC_BG_FILE + sed -i -E 's/bg-(light|dark)/bg-dark/g' "$COSMIC_BG_FILE" gsettings set org.gnome.desktop.interface color-scheme prefer-dark - sed -i 's/theme = "rose-pine-dawn"/theme = "rose-pine"/' $HOME/.config/halloy/config.toml + sed -i 's/theme = "rose-pine-dawn"/theme = "rose-pine"/' "$HOME/.config/halloy/config.toml" + # QT Themes + sed -i 's/^theme=.*/theme=rose-pine-moon-iris/' "$KVANTUM_THEME_FILE" + kvantummanager --set "rose-pine-moon-iris" || true else echo "light" > "$OCF_THEME_FILE" - sed -i -E 's/bg-(light|dark)/bg-light/g' $COSMIC_BG_FILE + sed -i -E 's/bg-(light|dark)/bg-light/g' "$COSMIC_BG_FILE" gsettings set org.gnome.desktop.interface color-scheme prefer-light - sed -i 's/theme = "rose-pine"/theme = "rose-pine-dawn"/' $HOME/.config/halloy/config.toml + sed -i 's/theme = "rose-pine"/theme = "rose-pine-dawn"/' "$HOME/.config/halloy/config.toml" + # QT Themes + sed -i 's/^theme=.*/theme=rose-pine-dawn-iris/' "$KVANTUM_THEME_FILE" + kvantummanager --set "rose-pine-dawn-iris" || true fi pkill -USR1 halloy || true fi diff --git a/modules/graphical/skel/.config/Kvantum/kvantum.kvconfig b/modules/graphical/skel/.config/Kvantum/kvantum.kvconfig new file mode 100644 index 00000000..f27dfde8 --- /dev/null +++ b/modules/graphical/skel/.config/Kvantum/kvantum.kvconfig @@ -0,0 +1,2 @@ +[General] +theme=rose-pine-moon-iris diff --git a/modules/graphical/skel/.config/cosmic/com.system76.CosmicTk/v1/apply_theme_global b/modules/graphical/skel/.config/cosmic/com.system76.CosmicTk/v1/apply_theme_global new file mode 100644 index 00000000..f32a5804 --- /dev/null +++ b/modules/graphical/skel/.config/cosmic/com.system76.CosmicTk/v1/apply_theme_global @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/modules/graphical/skel/.config/qt5ct/qt5ct.conf b/modules/graphical/skel/.config/qt5ct/qt5ct.conf new file mode 100644 index 00000000..5bf442cb --- /dev/null +++ b/modules/graphical/skel/.config/qt5ct/qt5ct.conf @@ -0,0 +1,2 @@ +[Appearance] +style=kvantum diff --git a/modules/graphical/skel/.config/qt6ct/qt6ct.conf b/modules/graphical/skel/.config/qt6ct/qt6ct.conf new file mode 100644 index 00000000..940c4de1 --- /dev/null +++ b/modules/graphical/skel/.config/qt6ct/qt6ct.conf @@ -0,0 +1,2 @@ +[Appearance] +style=kvantum \ No newline at end of file