Jump to content

Swaylock: Difference between revisions

From Official NixOS Wiki
34j (talk | contribs)
Phobos (talk | contribs)
mNo edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
swaylock is a screen locking utility for Wayland compositors.
[https://github.com/swaywm/swaylock Swaylock] is a screen locking utility for Wayland compositors.


== Installation ==
== Installation ==


Install via [[Home Manager]]:
=== Standalone ===
{{File|3=environment.systemPackages = with pkgs; [
  swaylock
];|name=/etc/nixos/configuration.nix|lang=nix}}


=== Home Manager - Standalone ===
{{file|~/.config/home-manager/home.nix|nix|3=
{{file|~/.config/home-manager/home.nix|nix|3=
programs.swaylock.enable = true;
programs.swaylock.enable = true;
}}
}}


The following settings may be required.
=== Home Manager - Through Sway ===
{{File|3=programs.sway.extraPackages = with pkgs; [swaylock];|name=/etc/nixos/configuration.nix|lang=nix}}


{{file|/etc/nixos/configuration.nix|nix|3=
{{Warning|1=If you don't use the Sway module (<code>programs.sway.enable</code>) you need to set <code>security.pam.services.swaylock = {};</code> manually.}}
security.pam.services.swaylock = {};
}}


== Configuration ==
== Configuration ==


swaylock can be configured using [[Home Manager]]:
Swaylock may be configured using [[Home Manager]], options may be found under the [https://nix-community.github.io/home-manager/options.xhtml#opt-programs.swaylock.enable Home Manager Appendix - programs.sway.enable].
 
{{file|~/.config/home-manager/home.nix|nix|3=
programs.swaylock.settings = { color = "808080"; };
}}


Alternatively, you may write configuration without using Nix language:
{{File|3=programs.swaylock = {
  enable = true;
  settings = {
    color = "808080";
    font-size = 24;
    indicator-idle-visible = false;
    indicator-radius = 100;
    line-color = "ffffff";
    show-failed-attempts = true;
  };
};|name=/etc/nixos/home.nix|lang=nix}}


{{file|~/.config/home-manager/home.nix|nix|3=
If you would like to use a config file instead you may instead specify a config file.
xdg.configFile."swaylock/config".source = ./swaylock-theme;
}}


You may find "Swaylock theme"s shared on the web.
{{File|3=xdg.configFile."swaylock/config".source = ./swaylock-theme;|name=/etc/nixos/home.nix|lang=nix}}


=== Adding background ===
=== Adding background ===

Latest revision as of 03:30, 1 January 2026

Swaylock is a screen locking utility for Wayland compositors.

Installation

Standalone

❄︎ /etc/nixos/configuration.nix
environment.systemPackages = with pkgs; [
  swaylock
];

Home Manager - Standalone

❄︎ ~/.config/home-manager/home.nix
programs.swaylock.enable = true;

Home Manager - Through Sway

❄︎ /etc/nixos/configuration.nix
programs.sway.extraPackages = with pkgs; [swaylock];
⚠︎
Warning: If you don't use the Sway module (programs.sway.enable) you need to set security.pam.services.swaylock = {}; manually.

Configuration

Swaylock may be configured using Home Manager, options may be found under the Home Manager Appendix - programs.sway.enable.

❄︎ /etc/nixos/home.nix
programs.swaylock = {
  enable = true;
  settings = {
    color = "808080";
    font-size = 24;
    indicator-idle-visible = false;
    indicator-radius = 100;
    line-color = "ffffff";
    show-failed-attempts = true;
  };
};

If you would like to use a config file instead you may instead specify a config file.

❄︎ /etc/nixos/home.nix
xdg.configFile."swaylock/config".source = ./swaylock-theme;

Adding background

You can add background declaratively using fetchurl similar to Wallpapers for Wayland. In this example, a wallpaper in nixos-artwork is set to image attribute and the remaining configuration from ./swaylock are merged.

❄︎ ~/.config/home-manager/home.nix
xdg.configFile."swaylock/config".text =
  let
    src = pkgs.fetchurl {
      url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/8957e93c95867faafec7f9988cedddd6837859fa/wallpapers/nix-wallpaper-binary-black.png";
      sha256 = "0v3111a1ihsh4ajijbjh6y7a8p5cb5g3rdxqjbzx37pn1k9s254s";
    };
  in
  ''
    image=${src}
  ''
  + builtins.readFile ./swaylock;

Forks

swaylock-effects allows built-in screenshots and image manipulation effects like blurring.

❄︎ ~/.config/home-manager/home.nix
programs.swaylock.package = pkgs.swaylock-effects;