From bdfdb4673eadcd4d7459a44af3e59f2c397a54fd Mon Sep 17 00:00:00 2001 From: Rutherther <rutherther@protonmail.com> Date: Fri, 16 Aug 2024 18:11:30 +0200 Subject: [PATCH] feat: add gtk theme --- home/home-configuration.scm | 16 +++- home/modules/ruther/home/services/gtk.scm | 93 +++++++++++++++++++++++ home/modules/ruther/home/themes.scm | 83 ++++++++++++++++++++ 3 files changed, 189 insertions(+), 3 deletions(-) create mode 100644 home/modules/ruther/home/services/gtk.scm create mode 100644 home/modules/ruther/home/themes.scm diff --git a/home/home-configuration.scm b/home/home-configuration.scm index d2542c7..81e59c9 100644 --- a/home/home-configuration.scm +++ b/home/home-configuration.scm @@ -4,19 +4,22 @@ ;; need to capture the channels being used, as returned by "guix describe". ;; See the "Replicating Guix" section in the manual. -(use-modules (gnu home) +(use-modules (guix packages) + (guix gexp) + (gnu home) (gnu packages) (gnu packages gnupg) (gnu packages shellutils) (gnu services) - (guix gexp) (gnu home services fontutils) (gnu home services desktop) (gnu home services shells) (gnu home services gnupg) (gnu home services sound) (gnu home services) - (ruther home dwl wm)) + (ruther home dwl wm) + (ruther home themes) + (ruther home services gtk)) (home-environment ;; Below is the list of packages that will show up in your @@ -83,6 +86,13 @@ (bash-profile (list (local-file "dotfiles/.bash_profile" "bash_profile"))))) + (service home-gtk-service-type + (let ((theme (make-graphite-gtk-theme #:theme "orange" #:color "dark"))) + (home-gtk-configuration + (theme-package theme) + (theme-name (assoc-ref (package-properties theme) 'theme-name)) + (font-name "Ubuntu 12")))) + (service home-zsh-service-type (home-zsh-configuration (zshrc (list diff --git a/home/modules/ruther/home/services/gtk.scm b/home/modules/ruther/home/services/gtk.scm new file mode 100644 index 0000000..bdf962e --- /dev/null +++ b/home/modules/ruther/home/services/gtk.scm @@ -0,0 +1,93 @@ +(define-module (ruther home services gtk) + #:use-module (gnu services configuration) + #:use-module (gnu services) + #:use-module (guix packages) + #:use-module (guix gexp) + #:use-module (gnu home services) + #:export (home-gtk-configuration + home-gtk-service-type)) + +(define (serialize-string name value) + (format #f "~a=~a~%" name value)) +;; So... it will make the gtk files +;; +;; ~/.gtkrc-2.0 + +;; gtk-icon-theme-name = theme-name +;; gtk-theme-name = theme-name +;; gtk-font-name = font-name + + +;; $XDG_CONFIG_HOME/gtk-3.0/settings.ini + +;; [Settings] +;; gtk-icon-theme-name = theme-name +;; gtk-theme-name = theme-name +;; gtk-font-name = font-name +;; (gtk-config-file ) + +(define (gtk2-config-file name theme font) + `(,name + "gtk-icon-theme-name = \"" ,theme "\"\n" + "gtk-theme-name = \"" ,theme "\"\n" + "gtk-font-name = \"" ,font "\"\n")) + +(define (gtk-config-file name prefix theme font) + `(,name + "[Settings]\n" + "gtk-icon-theme-name = " ,theme "\n" + "gtk-theme-name = " ,theme "\n" + "gtk-font-name = " ,font "\n")) + +(define (gtk4-css-import-file theme-package theme-name) + `("gtk.css" + "@import url(\"file://" ,theme-package "/share/themes/" ,theme-name "/gtk-4.0/gtk.css\");")) + +(define-configuration home-gtk-configuration + (theme-package + package + "The package with theme under share/themes/{theme-name}") + (theme-name + string + "The name of the theme in the package") + (font-name + (string "DejaVu Sans 12") + "Name of the font to use")) + +(define (add-gtk-theme-package config) + (list + (home-gtk-configuration-theme-package config))) + +(define (add-gtk-config-file config) + `((".gtkrc-2.0" + ,(apply mixed-text-file (gtk2-config-file + "gtkrc-2.0" + (home-gtk-configuration-theme-name config) + (home-gtk-configuration-font-name config)))) + (".config/gtk-3.0/settings.ini" + ,(apply mixed-text-file (gtk-config-file + "settings.ini" + "[Settings]" + (home-gtk-configuration-theme-name config) + (home-gtk-configuration-font-name config)))) + (".config/gtk-4.0/settings.ini" + ,(apply mixed-text-file (gtk-config-file + "settings.ini" + "[Settings]" + (home-gtk-configuration-theme-name config) + (home-gtk-configuration-font-name config)))) + (".config/gtk-4.0/gtk.css" + ,(apply mixed-text-file (gtk4-css-import-file + (home-gtk-configuration-theme-package config) + (home-gtk-configuration-theme-name config)))))) + +(define-public home-gtk-service-type + (service-type (name 'home-gtk) + (extensions + (list (service-extension + home-files-service-type + add-gtk-config-file) + (service-extension + home-profile-service-type + add-gtk-theme-package))) + (description "Create gtk theme configuration files for gtk2 and gtk3"))) diff --git a/home/modules/ruther/home/themes.scm b/home/modules/ruther/home/themes.scm new file mode 100644 index 0000000..888b5ab --- /dev/null +++ b/home/modules/ruther/home/themes.scm @@ -0,0 +1,83 @@ +(define-module (ruther home themes) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages) + #:use-module (gnu packages bash) + #:use-module (gnu packages gnome) + #:use-module (gnu packages web) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module (guix build utils) + #:use-module (guix gexp) + #:use-module (guix build-system gnu) + #:use-module (guix download) + #:use-module (guix git-download) + + #:export (make-graphite-gtk-theme)) + +; (make-graphite-theme #:theme "orange" #:color "dark") +(define* (make-graphite-gtk-theme #:key + theme + (color "standard") + (size "standard")) + (package + (name (string-append "graphite-" theme "-" color "-" size "-theme")) + (version "2024-07-15") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vinceliuice/Graphite-gtk-theme") + (commit version))) + (sha256 + (base32 "1fmbfyf5j9mi31r84x8vb1z82jfg9cqcg27q7n579l65n3zybpck")))) + (build-system gnu-build-system) + (inputs + (list gnome-themes-extra)) + (native-inputs + (list sassc)) + (properties + `((theme-name . ,(string-append "Graphite-" theme "-" (string-titlecase color))))) + (arguments + `(#:phases (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (delete 'check) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (invoke + "bash" + "install.sh" + "-t" ,theme + "-c" ,color + "-d" (string-append (assoc-ref %outputs "out") "/share/themes")) + ))))) + ;; (arguments + ;; (list + ;; #:builder + ;; (with-imported-modules '((guix build utils)) + ;; #~(begin + ;; (use-modules (guix build utils)) + ;; ;; (setenv "PATH" (string-join (map (lambda (x) (string-append (cdr x) "/bin")) %build-inputs) ":")) + ;; (display (invoke "ls")) + ;; (invoke "bash" "install.sh"))) + ;; ;; (with-imported-modules '((guix build utils)) + + ;; ;; ;; #~(begin + ;; ;; ;; (use-modules (guix build utils)) + + ;; ;; ;; #$(with-build-variables #$inputs #$outputs + ;; ;; ;; (setenv "PATH" (string-join (map (lambda (x) (string-append x "/bin")) %build-inputs)) ":") + ;; ;; ;; (invoke "bash" + ;; ;; ;; "-t" #$theme + ;; ;; ;; "-c" #$color + ;; ;; ;; "install.sh" + ;; ;; ;; "-d" (string-append #$output "/share/themes"))) + ;; ;; ;; ) + ;; ;; ) + ;; )) + (synopsis "Graphite gtk theme") + (description "Graphite gtk theme") + (home-page "https://github.com/vinceliuice/Graphite-gtk-theme") + (license license:gpl3))) + +;; (make-graphite-gtk-theme #:theme "orange" #:color "dark") -- 2.48.1