1
0
Fork 0
mirror of https://github.com/nix-community/home-manager synced 2024-11-30 06:59:45 +01:00

picom: remove refreshRate option

Removed by upstream since commit:

    bcbc410c92

This commit is included since v9 release:

    https://github.com/yshui/picom/releases/tag/v9
    https://github.com/yshui/picom/releases/tag/v9-rc1 (the actual changelog)

While this doesn't break the config per see, it results in the
following warning in the logs:

    [ DD/MM/YYYY HH:MM:SS.mmm parse_config_libconfig WARN ] The
      refresh-rate option has been deprecated. Please remove it from
      your configuration file. If you encounter any problems without
      this feature, please feel free to open a bug report

Beside the above change we also remove an old workaround and also
write the configuration file to a well-known location in the user's
home directory.
This commit is contained in:
Thiago Kenji Okada 2022-04-11 12:32:21 +01:00 committed by Robert Helgesson
parent d49d68f419
commit 7add9ce2e5
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
6 changed files with 102 additions and 24 deletions

View file

@ -1,13 +1,14 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with lib;
with builtins;
let let
inherit (builtins) toJSON toString;
inherit (lib)
concatStringsSep elemAt literalExpression mkEnableOption mkIf mkOption
mkRemovedOptionModule optional optionalAttrs optionalString types;
cfg = config.services.picom; cfg = config.services.picom;
configFile = pkgs.writeText "picom.conf" (optionalString cfg.fade '' configFile = optionalString cfg.fade ''
# fading # fading
fading = true; fading = true;
fade-delta = ${toString cfg.fadeDelta}; fade-delta = ${toString cfg.fadeDelta};
@ -46,8 +47,7 @@ let
# other options # other options
backend = ${toJSON cfg.backend}; backend = ${toJSON cfg.backend};
vsync = ${toJSON cfg.vSync}; vsync = ${toJSON cfg.vSync};
refresh-rate = ${toString cfg.refreshRate}; '' + cfg.extraOptions;
'' + cfg.extraOptions);
in { in {
@ -250,15 +250,6 @@ in {
''; '';
}; };
refreshRate = mkOption {
type = types.int;
default = 0;
example = 60;
description = ''
Screen refresh rate (0 = automatically detect).
'';
};
package = mkOption { package = mkOption {
type = types.package; type = types.package;
default = pkgs.picom; default = pkgs.picom;
@ -282,6 +273,11 @@ in {
}; };
}; };
imports = [
(mkRemovedOptionModule [ "services" "picom" "refreshRate" ]
"The option `refresh-rate` has been deprecated by upstream.")
];
config = mkIf cfg.enable { config = mkIf cfg.enable {
assertions = [ assertions = [
(lib.hm.assertions.assertPlatform "services.picom" pkgs (lib.hm.assertions.assertPlatform "services.picom" pkgs
@ -290,6 +286,8 @@ in {
home.packages = [ cfg.package ]; home.packages = [ cfg.package ];
xdg.configFile."picom/picom.conf".text = configFile;
systemd.user.services.picom = { systemd.user.services.picom = {
Unit = { Unit = {
Description = "Picom X11 compositor"; Description = "Picom X11 compositor";
@ -299,17 +297,13 @@ in {
Install = { WantedBy = [ "graphical-session.target" ]; }; Install = { WantedBy = [ "graphical-session.target" ]; };
Service = let Service = {
experimentalBackendsFlag = ExecStart = concatStringsSep " " ([
if cfg.experimentalBackends then " --experimental-backends" else ""; "${cfg.package}/bin/picom"
in { "--config ${config.xdg.configFile."picom/picom.conf".source}"
ExecStart = "${cfg.package}/bin/picom --config ${configFile}" ] ++ optional cfg.experimentalBackends "--experimental-backends");
+ experimentalBackendsFlag;
Restart = "always"; Restart = "always";
RestartSec = 3; RestartSec = 3;
} // optionalAttrs (cfg.backend == "glx") {
# Temporarily fixes corrupt colours with Mesa 18.
Environment = [ "allow_rgb10_configs=false" ];
}; };
}; };
}; };

View file

@ -155,6 +155,7 @@ import nmt {
./modules/services/mpd ./modules/services/mpd
./modules/services/pantalaimon ./modules/services/pantalaimon
./modules/services/pbgopy ./modules/services/pbgopy
./modules/services/picom
./modules/services/playerctld ./modules/services/playerctld
./modules/services/polybar ./modules/services/polybar
./modules/services/redshift-gammastep ./modules/services/redshift-gammastep

View file

@ -0,0 +1 @@
{ picom-basic-configuration = ./picom-basic-configuration.nix; }

View file

@ -0,0 +1,33 @@
# fading
fading = true;
fade-delta = 5;
fade-in-step = 0.04;
fade-out-step = 0.04;
fade-exclude = ["window_type *= 'menu'","name ~= 'Firefox$'","focused = 1"];
# shadows
shadow = true;
shadow-offset-x = -10;
shadow-offset-y = -15;
shadow-opacity = 0.8;
shadow-exclude = ["window_type *= 'menu'","name ~= 'Firefox$'","focused = 1"];
# opacity
active-opacity = 1.0;
inactive-opacity = 1.0;
inactive-dim = 0.0;
opacity-rule = [];
wintypes:
{
dock = { shadow = false; };
dnd = { shadow = false; };
popup_menu = { opacity = 1.0; };
dropdown_menu = { opacity = 1.0; };
};
# other options
backend = "xrender";
vsync = true;
unredir-if-possible = true;
dbe = true;

View file

@ -0,0 +1,12 @@
[Install]
WantedBy=graphical-session.target
[Service]
ExecStart=@picom@/bin/picom --config /nix/store/00000000000000000000000000000000-hm_picompicom.conf --experimental-backends
Restart=always
RestartSec=3
[Unit]
After=graphical-session-pre.target
Description=Picom X11 compositor
PartOf=graphical-session.target

View file

@ -0,0 +1,37 @@
{ config, pkgs, ... }:
{
services.picom = {
enable = true;
fade = true;
fadeDelta = 5;
fadeSteps = [ "0.04" "0.04" ];
fadeExclude =
[ "window_type *= 'menu'" "name ~= 'Firefox$'" "focused = 1" ];
shadow = true;
shadowOffsets = [ (-10) (-15) ];
shadowOpacity = "0.8";
shadowExclude =
[ "window_type *= 'menu'" "name ~= 'Firefox$'" "focused = 1" ];
backend = "xrender";
vSync = true;
extraOptions = ''
unredir-if-possible = true;
dbe = true;
'';
experimentalBackends = true;
};
test.stubs.picom = { };
nmt.script = ''
assertFileContent \
home-files/.config/picom/picom.conf \
${./picom-basic-configuration-expected.conf}
serviceFile=$(normalizeStorePaths home-files/.config/systemd/user/picom.service)
assertFileContent \
"$serviceFile" \
${./picom-basic-configuration-expected.service}
'';
}