Sway: Difference between revisions

Phobos (talk | contribs)
mNo edit summary
DHCP (talk | contribs)
style fixes
 
Line 42: Line 42:
Then you may enable Sway in your Home Manager configuration. Here is a minimal example:
Then you may enable Sway in your Home Manager configuration. Here is a minimal example:


{{File|3=wayland.windowManager.sway = {
{{File|3=
    enable = true;
wayland.windowManager.sway = {
    wrapperFeatures.gtk = true; # Fixes common issues with GTK 3 apps
  enable = true;
    config = rec {
  wrapperFeatures.gtk = true; # Fixes common issues with GTK 3 apps
      modifier = "Mod4";
  config = rec {
      # Use kitty as default terminal
    modifier = "Mod4";
      terminal = "kitty";  
    # Use kitty as default terminal
      startup = [
    terminal = "kitty";
        # Launch Firefox on start
    startup = [
        {command = "firefox";}
      # Launch Firefox on start
      ];
      { command = "firefox"; }
    };
    ];
  };|name=/etc/nixos/home.nix|lang=nix}}
  };
};
|name=/etc/nixos/home.nix|lang=nix}}


See [https://nix-community.github.io/home-manager/options.xhtml#opt-wayland.windowManager.sway.enable Home Manager's Options for Sway] for a complete list of configuration options.
See [https://nix-community.github.io/home-manager/options.xhtml#opt-wayland.windowManager.sway.enable Home Manager's Options for Sway] for a complete list of configuration options.
Line 63: Line 65:
Kanshi is an output configuration daemon. As explained above, we don't run Sway itself as a systemd service. There are auxiliary daemons that we do want to run as systemd services, for example Kanshi [https://gitlab.freedesktop.org/emersion/kanshi], which implements monitor hot swapping. It would be enabled as follows:
Kanshi is an output configuration daemon. As explained above, we don't run Sway itself as a systemd service. There are auxiliary daemons that we do want to run as systemd services, for example Kanshi [https://gitlab.freedesktop.org/emersion/kanshi], which implements monitor hot swapping. It would be enabled as follows:
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
  # kanshi systemd service
# kanshi systemd service
  systemd.user.services.kanshi = {
systemd.user.services.kanshi = {
    description = "kanshi daemon";
  description = "kanshi daemon";
    environment = {
  environment = {
      WAYLAND_DISPLAY="wayland-1";
    WAYLAND_DISPLAY="wayland-1";
      DISPLAY = ":0";
    DISPLAY = ":0";
    };  
  };  
    serviceConfig = {
  serviceConfig = {
      Type = "simple";
    Type = "simple";
      ExecStart = ''${pkgs.kanshi}/bin/kanshi -c kanshi_config_file'';
    ExecStart = ''${pkgs.kanshi}/bin/kanshi -c kanshi_config_file'';
    };
   };
   };
};
</nowiki>}}
</nowiki>}}


Line 117: Line 119:
'';
'';
</syntaxhighlight>When launched directly from the TTY, Sway will not inherit the user environment. This may cause issues with systemd user services such as application launchers or [[Swayidle]]. To fix this, add the following to your Home Manager configuration:{{file|home.nix|nix|<nowiki>
</syntaxhighlight>When launched directly from the TTY, Sway will not inherit the user environment. This may cause issues with systemd user services such as application launchers or [[Swayidle]]. To fix this, add the following to your Home Manager configuration:{{file|home.nix|nix|<nowiki>
wayland.windowManager.sway.systemd.variables = ["--all"];
wayland.windowManager.sway.systemd.variables = ["--all"];
</nowiki>}}
</nowiki>}}


Line 138: Line 140:


=== Keyboard layout ===
=== Keyboard layout ===
Changing layout for all keyboards to German (de):<syntaxhighlight lang="console">
Changing layout for all keyboards to German (de):
<syntaxhighlight>
input * xkb_layout "de"
input * xkb_layout "de"
</syntaxhighlight>The same thing accomplished in Home Manager:<syntaxhighlight lang="nix">
</syntaxhighlight>The same thing accomplished in Home Manager:<syntaxhighlight lang="nix">
Line 145: Line 148:


=== High-DPI scaling ===
=== High-DPI scaling ===
Changing scale for all screens to factor 1.5:<syntaxhighlight lang="console">
Changing scale for all screens to factor 1.5:<syntaxhighlight>
output * scale 1.5
output * scale 1.5
</syntaxhighlight>
</syntaxhighlight>
Line 188: Line 191:
==== Touchpad ====
==== Touchpad ====
See the [https://www.mankier.com/5/sway-input sway-input man page] for options.
See the [https://www.mankier.com/5/sway-input sway-input man page] for options.
{{File|3=wayland.windowManager.sway =  
{{File|3=
   {
wayland.windowManager.sway = {
    enable = true;
   enable = true;
    config.input = {
  config.input = {
      "type:touchpad" = {
    "type:touchpad" = {
        # Enables or disables tap for specified input device.
      # Enables or disables tap for specified input device.
        tap = "enabled";
      tap = "enabled";
        # Enables or disables natural (inverted) scrolling for the specified input device.
      # Enables or disables natural (inverted) scrolling for the specified input device.
        natural_scroll = "enabled";
      natural_scroll = "enabled";
        # Enables or disables disable-while-typing for the specified input device.
      # Enables or disables disable-while-typing for the specified input device.
        dwt = "enabled";
      dwt = "enabled";
      };
     };
     };
   };|name=/etc/nixos/home.nix|lang=nix}}
   };
};
|name=/etc/nixos/home.nix|lang=nix}}


== Troubleshooting ==
== Troubleshooting ==
Line 226: Line 230:


{{File|3=home.pointerCursor = {
{{File|3=home.pointerCursor = {
    name = "Adwaita";
  name = "Adwaita";
    package = pkgs.adwaita-icon-theme;
  package = pkgs.adwaita-icon-theme;
    size = 24;
  size = 24;
    x11 = {
  x11 = {
      enable = true;
    enable = true;
      defaultCursor = "Adwaita";
    defaultCursor = "Adwaita";
    };
  };
 
  sway.enable = true;


sway.enable = true;
};|name=/etc/nixos/home.nix|lang=nix}}
};|name=/etc/nixos/home.nix|lang=nix}}


Line 243: Line 246:


<syntaxhighlight lang="nix>
<syntaxhighlight lang="nix>
 
fonts = {
  fonts = {
  packages = with pkgs; [
    packages = with pkgs; [
    noto-fonts
      noto-fonts
    noto-fonts-cjk
      noto-fonts-cjk
    noto-fonts-emoji
      noto-fonts-emoji
    font-awesome
      font-awesome
    source-han-sans
      source-han-sans
    source-han-sans-japanese
      source-han-sans-japanese
    source-han-serif-japanese
      source-han-serif-japanese
  ];
    ];
  fontconfig.defaultFonts = {
    fontconfig.defaultFonts = {
    serif = [ "Noto Serif" "Source Han Serif" ];
      serif = [ "Noto Serif" "Source Han Serif" ];
    sansSerif = [ "Noto Sans" "Source Han Sans" ];
      sansSerif = [ "Noto Sans" "Source Han Sans" ];
    };
   };
   };
 
};
</syntaxhighlight>
</syntaxhighlight>


Line 267: Line 268:


<syntaxhighlight lang="nix>
<syntaxhighlight lang="nix>
  security.pam.services.swaylock = {};
security.pam.services.swaylock = {};
</syntaxhighlight>
</syntaxhighlight>


Line 304: Line 305:
Using [[Home Manager]] add the following to your Sway configuration:
Using [[Home Manager]] add the following to your Sway configuration:
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
  wayland.windowManager.sway = {
wayland.windowManager.sway = {
    [...]
  [...]
    config = {
  config = {
      [...]
    [...]
      input = {
    input = {
        [...]
      [...]
        "type:touch" = {
      "type:touch" = {
          # Replace touchscreen_output_identifier with the identifier of your touchscreen.
        # Replace touchscreen_output_identifier with the identifier of your touchscreen.
          map_to_output = touchscreen_output_identifier;
        map_to_output = touchscreen_output_identifier;
        };
      };
      };
    };
    };
  };
  };
};
</syntaxhighlight>
</syntaxhighlight>


Line 442: Line 443:
     blur_passes 2
     blur_passes 2
   '';
   '';
};|name=/etc/nixos/home.nix|lang=nix}}
};|name=/etc/nixos/home.nix|lang=nix}}


=== Screen dimming with wl-gammarelay-rs ===
=== Screen dimming with wl-gammarelay-rs ===
Add <code>wl-gammarelay-rs</code> to programs.sway.extraPackages, then add the following to sway config:
Add <code>wl-gammarelay-rs</code> to <code>programs.sway.extraPackages</code>, then add the following to sway config:
<syntaxhighlight>
<syntaxhighlight>
# start daemon
# start daemon