dotfiles/oni/home/config/rincewind.scm
Tom Willemse 17d3bfce41 Add opacity-rule option for picom
Use this option to specify that anything containing “(Meeting) | Microsoft
Teams” (which should be in the title of MS Teams when in a meeting) should have
100% opacity, and also that anything containing “freerdp” should have 100%
opacity.

For Teams I really only need it to be opaque once a meeting starts, I don't care
the rest of the time.

For XFreeRDP I've tried matching on ‘class_g’, ‘name’, nothing seems to work.
Using ‘opacity-rule’ finally seems to have an effect.

The rules both use ‘*’ to match anywhere in the name, and ‘?’ to specify that
the match should be case-insensitive.
2023-03-30 09:55:48 -07:00

244 lines
9.4 KiB
Scheme

(define-module (oni home config rincewind)
#:use-module ((gnu home services guix)
#:select (home-channels-service-type))
#:use-module ((gnu home)
#:select (home-environment))
#:use-module ((gnu packages emacs)
#:select (emacs-next))
#:use-module ((gnu packages emacs-xyz)
#:select (emacs-litable
emacs-org-roam
emacs-vterm))
#:use-module ((gnu packages file-systems)
#:select (tmsu))
#:use-module ((gnu packages linux)
#:select (fakeroot))
#:use-module ((gnu packages music)
#:select (easytag))
#:use-module ((gnu packages video)
#:select (mpv
mpv-mpris))
#:use-module ((gnu packages)
#:select (specification->package+output))
#:use-module ((gnu services)
#:select (service
simple-service))
#:use-module ((guix channels)
#:select (channel
make-channel-introduction
openpgp-fingerprint))
#:use-module ((oni home config common)
#:select (home-redshift-service
;; home-xbindkeys-service
home-zsh-service
home-guile-service
home-xmodmap-service
home-openssh-service
home-kitty-service))
#:use-module ((oni home services dunst)
#:select (home-dunst-default-service))
#:use-module ((oni home services emacs)
#:select (home-emacs-service-type
home-emacs-configuration))
#:use-module ((oni home services environment)
#:select (home-environment-service))
#:use-module ((oni home services flameshot)
#:select (home-flameshot-service-type))
#:use-module ((oni home services kdeconnect)
#:select (home-kdeconnect-service-type))
#:use-module ((oni home services mpd)
#:select (home-mpd-service-type
home-mpd-configuration
<home-mpd-audio-output>
home-mpc-update-service-type
home-mpd-notify-service-type))
#:use-module ((oni home services picom)
#:select (home-picom-service-type
home-picom-configuration))
#:use-module ((oni home services polybar)
#:select (home-polybar-service-type
home-polybar-configuration))
#:use-module ((oni home services rofi)
#:select (home-rofi-default-service))
#:use-module ((oni home services stumpwm)
#:select (home-stumpwm-service-type
home-stumpwm-configuration))
#:use-module ((oni home services syncthing)
#:select (home-syncthing-service-type))
#:use-module ((oni home services zsh)
#:select (home-zsh-syntax-highlighting-service-type
home-zsh-autosuggestions-service-type))
#:use-module ((oni packages count-emails)
#:select (count-emails))
#:use-module ((oni packages emacs)
#:select (emacs-inkplate))
#:use-module ((oni packages emacs-config)
#:select (emacs-oni-org-roam
emacs-oni-vterm))
#:use-module ((oni packages hlwm-run-or-raise)
#:select (hlwm-run-or-raise))
#:use-module ((oni packages inbox-size)
#:select (inbox-size))
#:use-module ((oni packages mpd-random-albums)
#:select (mpd-random-albums))
#:use-module ((oni packages notmuch-collect-tasks)
#:select (notmuch-collect-tasks))
#:use-module ((oni packages notmuch-tag-mailinglists)
#:select (notmuch-tag-mailinglists))
#:use-module ((oni packages pick-random-wallpaper)
#:select (pick-random-wallpaper))
#:use-module ((oni packages shutdown-rofi)
#:select (shutdown-rofi))
#:use-module ((oni packages stumpwm)
#:select (stumpwm+swank))
#:use-module ((oni packages emacs-outli)
#:select (emacs-outli))
#:use-module ((oop goops)
#:select (make)))
(define (with-master-branch package)
"Apply a transformation to PACKAGE so that it uses the master branch."
((options->transformation
`((with-branch . ,(string-append (package-name package) "=master"))))
package))
(define rincewind-picom-service
(service home-picom-service-type
(home-picom-configuration
(backend "glx")
(glx-no-stencil #t)
(detect-transient #t)
(shadow #t)
(shadow-radius 5)
(shadow-opacity 85)
(shadow-offset-x 15)
(shadow-offset-y 15)
(shadow-exclude
'("name = 'mowedline'"
"class_g = 'trayer'"
"bounding_shaped"
"class_g = 'i3lock'"))
(wintypes
'((dnd (shadow . #f))
(dock (shadow . #f))))
(corner-radius 15)
(inactive-opacity 75)
(active-opacity 95)
(frame-opacity 100)
(inactive-opacity-override #t)
(opacity-rule
'("100:name *?= '(Meeting) | Microsoft Teams'"
"100:name *?= 'freerdp'"))
(blur-background #t)
(blur-background-frame #t)
(blur
'((method . "dual_kawase")
(strength . 6.9)))
(blur-background-fixed #t)
(blur-background-exclude
'("name *= 'rofi'"
"class_g = 'i3lock'"))
(focus-exclude
'("name *= 'rofi'"
"class_g = 'i3lock'"))
(fading #t)
(fade-exclude
`("class_g = 'i3lock'"))
(fade-in-step 3)
(fade-out-step 3))))
(home-environment
(packages (list mpv mpv-mpris easytag
(specification->package+output "glibc-locales")
(specification->package+output "font-fantasque-sans")
(specification->package+output "font-comic-neue")
hlwm-run-or-raise
pick-random-wallpaper
notmuch-collect-tasks
notmuch-tag-mailinglists
(inbox-size emacs-next)
count-emails
shutdown-rofi
emacs-org-roam
emacs-vterm
fakeroot ; Needed for build arch packages
tmsu
mpd-random-albums
emacs-inkplate
emacs-outli
emacs-oni-org-roam
emacs-oni-vterm))
(services
(list
home-environment-service
home-rofi-default-service
home-dunst-default-service
home-redshift-service
;; home-xbindkeys-service
home-zsh-service
home-guile-service
home-xmodmap-service
home-openssh-service
home-kitty-service
rincewind-picom-service
;; This has to be the first extension because it needs to be added to the
;; configuration last.
(service home-zsh-syntax-highlighting-service-type)
(service home-zsh-autosuggestions-service-type)
(simple-service 'my-channel-service
home-channels-service-type
(list
(channel
(name 'oni)
(url "https://git.sr.ht/~ryuslash/guix-packages")
(introduction
(make-channel-introduction
"646573578b7adfbff415645fed201269076cebf6"
(openpgp-fingerprint
"061C C5C4 D936 C9A8 AECC 1A17 7D5C 407B 4350 25C1"))))
(channel
(name 'guix-gaming-games)
(url "https://gitlab.com/guix-gaming-channels/games.git")
(introduction
(make-channel-introduction
"c23d64f1b8cc086659f8781b27ab6c7314c5cca5"
(openpgp-fingerprint
"50F3 3E2E 5B0C 3D90 0424 ABE8 9BDC F497 A4BB CC7F"))))))
;; (service home-polybar-service-type
;; (home-polybar-configuration
;; (bar "rincewind")))
;; (service home-kdeconnect-service-type)
(service home-syncthing-service-type)
(service home-emacs-service-type
(home-emacs-configuration
(package emacs-next)))
(service home-flameshot-service-type)
(service home-mpd-service-type
(home-mpd-configuration
(music-directory "~/music")
(playlist-directory "~/music/playlists")
(log-file "~/.local/share/mpd/mpd.log")
(pid-file "~/.local/share/mpd/mpd.pid")
(db-file "~/.local/share/mpd/mpd.db")
(state-file "~/.local/share/mpd/mpdstate")
(audio-outputs
(list (make <home-mpd-audio-output> #:type "pulse" #:name "MPD Pulse")
(make <home-mpd-audio-output>
#:type "fifo"
#:name "Visualizer"
#:path "/tmp/mpd.fifo"
#:format "44100:16:2")))))
(service home-mpc-update-service-type)
(service home-mpd-notify-service-type)
(service home-stumpwm-service-type
(home-stumpwm-configuration
(package stumpwm+swank))))))