201 lines
7.9 KiB
Diff
201 lines
7.9 KiB
Diff
From 2e719d1cdab9e81750c19425a1f5c7678b5e73ad Mon Sep 17 00:00:00 2001
|
|
From: Michael Weiss <dev.primeos@gmail.com>
|
|
Date: Thu, 23 Dec 2021 20:19:41 +0100
|
|
Subject: [PATCH] sway: 1.6.1 -> 1.7
|
|
|
|
Release notes: https://github.com/swaywm/sway/releases/tag/1.7
|
|
|
|
Notable (backward incompatible) changes:
|
|
- The default terminal changed from Alacritty to foot
|
|
|
|
Known issues:
|
|
- `swaynag` will crash when Sway 1.6.1 is still running while the Nix
|
|
package (and thus `swaynag`) is already updated to version 1.7.
|
|
- The experimental Ozone/Wayland support of Electron apps will be broken
|
|
for a while. Electron version 17 should work but the Chromium fixes
|
|
haven't yet been backported to Electron version 16.
|
|
|
|
NixOS module: programs.sway.extraPackages: The "alacritty" package was
|
|
replaced with "foot".
|
|
|
|
VM test: We switched from the OpenGL ES 2.0 renderer to Pixman. The
|
|
terminal was also changed to foot but Alacritty is still used for the
|
|
XWayland test (since foot doesn't support X11).
|
|
|
|
Co-authored-by: Patrick Hilhorst <git@hilhorst.be>
|
|
---
|
|
nixos/modules/programs/sway.nix | 4 +-
|
|
nixos/tests/sway.nix | 47 +++++++++++++------
|
|
.../window-managers/sway/default.nix | 8 ++--
|
|
pkgs/top-level/all-packages.nix | 4 +-
|
|
4 files changed, 39 insertions(+), 24 deletions(-)
|
|
|
|
diff --git a/nixos/modules/programs/sway.nix b/nixos/modules/programs/sway.nix
|
|
index c64e01a20cb3d..bb9904d195606 100644
|
|
--- a/nixos/modules/programs/sway.nix
|
|
+++ b/nixos/modules/programs/sway.nix
|
|
@@ -90,10 +90,10 @@ in {
|
|
extraPackages = mkOption {
|
|
type = with types; listOf package;
|
|
default = with pkgs; [
|
|
- swaylock swayidle alacritty dmenu
|
|
+ swaylock swayidle foot dmenu
|
|
];
|
|
defaultText = literalExpression ''
|
|
- with pkgs; [ swaylock swayidle alacritty dmenu ];
|
|
+ with pkgs; [ swaylock swayidle foot dmenu ];
|
|
'';
|
|
example = literalExpression ''
|
|
with pkgs; [
|
|
diff --git a/nixos/tests/sway.nix b/nixos/tests/sway.nix
|
|
index 3476ebab3e26c..43b8c84730427 100644
|
|
--- a/nixos/tests/sway.nix
|
|
+++ b/nixos/tests/sway.nix
|
|
@@ -1,4 +1,4 @@
|
|
-import ./make-test-python.nix ({ pkgs, lib, ...} :
|
|
+import ./make-test-python.nix ({ pkgs, lib, ... }:
|
|
|
|
{
|
|
name = "sway";
|
|
@@ -13,19 +13,38 @@ import ./make-test-python.nix ({ pkgs, lib, ...} :
|
|
|
|
environment = {
|
|
# For glinfo and wayland-info:
|
|
- systemPackages = with pkgs; [ mesa-demos wayland-utils ];
|
|
+ systemPackages = with pkgs; [ mesa-demos wayland-utils alacritty ];
|
|
# Use a fixed SWAYSOCK path (for swaymsg):
|
|
variables = {
|
|
"SWAYSOCK" = "/tmp/sway-ipc.sock";
|
|
- "WLR_RENDERER_ALLOW_SOFTWARE" = "1";
|
|
+ # TODO: Investigate if we can get hardware acceleration to work (via
|
|
+ # virtio-gpu and Virgil). We currently have to use the Pixman software
|
|
+ # renderer since the GLES2 renderer doesn't work inside the VM (even
|
|
+ # with WLR_RENDERER_ALLOW_SOFTWARE):
|
|
+ # "WLR_RENDERER_ALLOW_SOFTWARE" = "1";
|
|
+ "WLR_RENDERER" = "pixman";
|
|
};
|
|
# For convenience:
|
|
shellAliases = {
|
|
- test-x11 = "glinfo | head -n 3 | tee /tmp/test-x11.out && touch /tmp/test-x11-exit-ok";
|
|
+ test-x11 = "glinfo | tee /tmp/test-x11.out && touch /tmp/test-x11-exit-ok";
|
|
test-wayland = "wayland-info | tee /tmp/test-wayland.out && touch /tmp/test-wayland-exit-ok";
|
|
};
|
|
+
|
|
+ # To help with OCR:
|
|
+ etc."xdg/foot/foot.ini".text = lib.generators.toINI { } {
|
|
+ main = {
|
|
+ font = "inconsolata:size=14";
|
|
+ };
|
|
+ colors = rec {
|
|
+ foreground = "000000";
|
|
+ background = "ffffff";
|
|
+ regular2 = foreground;
|
|
+ };
|
|
+ };
|
|
};
|
|
|
|
+ fonts.fonts = [ pkgs.inconsolata ];
|
|
+
|
|
# Automatically configure and start Sway when logging in on tty1:
|
|
programs.bash.loginShellInit = ''
|
|
if [ "$(tty)" = "/dev/tty1" ]; then
|
|
@@ -61,7 +80,7 @@ import ./make-test-python.nix ({ pkgs, lib, ...} :
|
|
machine.wait_for_file("/run/user/1000/wayland-1")
|
|
machine.wait_for_file("/tmp/sway-ipc.sock")
|
|
|
|
- # Test XWayland:
|
|
+ # Test XWayland (foot does not support X):
|
|
machine.succeed(
|
|
"su - alice -c 'swaymsg exec WINIT_UNIX_BACKEND=x11 WAYLAND_DISPLAY=invalid alacritty'"
|
|
)
|
|
@@ -69,21 +88,22 @@ import ./make-test-python.nix ({ pkgs, lib, ...} :
|
|
machine.send_chars("test-x11\n")
|
|
machine.wait_for_file("/tmp/test-x11-exit-ok")
|
|
print(machine.succeed("cat /tmp/test-x11.out"))
|
|
+ machine.copy_from_vm("/tmp/test-x11.out")
|
|
machine.screenshot("alacritty_glinfo")
|
|
machine.succeed("pkill alacritty")
|
|
|
|
- # Start a terminal (Alacritty) on workspace 3:
|
|
+ # Start a terminal (foot) on workspace 3:
|
|
machine.send_key("alt-3")
|
|
- machine.succeed(
|
|
- "su - alice -c 'swaymsg exec WINIT_UNIX_BACKEND=wayland DISPLAY=invalid alacritty'"
|
|
- )
|
|
+ machine.sleep(3)
|
|
+ machine.send_key("alt-ret")
|
|
machine.wait_for_text("alice@machine")
|
|
machine.send_chars("test-wayland\n")
|
|
machine.wait_for_file("/tmp/test-wayland-exit-ok")
|
|
print(machine.succeed("cat /tmp/test-wayland.out"))
|
|
- machine.screenshot("alacritty_wayland_info")
|
|
+ machine.copy_from_vm("/tmp/test-wayland.out")
|
|
+ machine.screenshot("foot_wayland_info")
|
|
machine.send_key("alt-shift-q")
|
|
- machine.wait_until_fails("pgrep alacritty")
|
|
+ machine.wait_until_fails("pgrep foot")
|
|
|
|
# Test gpg-agent starting pinentry-gnome3 via D-Bus (tests if
|
|
# $WAYLAND_DISPLAY is correctly imported into the D-Bus user env):
|
|
@@ -104,9 +124,6 @@ import ./make-test-python.nix ({ pkgs, lib, ...} :
|
|
# Exit Sway and verify process exit status 0:
|
|
machine.succeed("su - alice -c 'swaymsg exit || true'")
|
|
machine.wait_until_fails("pgrep -x sway")
|
|
-
|
|
- # TODO: Sway currently segfaults after "swaymsg exit" but only in this VM test:
|
|
- # machine # [ 104.090032] sway[921]: segfault at 3f800008 ip 00007f7dbdc25f10 sp 00007ffe282182f8 error 4 in libwayland-server.so.0.1.0[7f7dbdc1f000+8000]
|
|
- # machine.wait_for_file("/tmp/sway-exit-ok")
|
|
+ machine.wait_for_file("/tmp/sway-exit-ok")
|
|
'';
|
|
})
|
|
diff --git a/pkgs/applications/window-managers/sway/default.nix b/pkgs/applications/window-managers/sway/default.nix
|
|
index ec08568f0589c..72ca71d589605 100644
|
|
--- a/pkgs/applications/window-managers/sway/default.nix
|
|
+++ b/pkgs/applications/window-managers/sway/default.nix
|
|
@@ -1,5 +1,5 @@
|
|
{ lib, stdenv, fetchFromGitHub, substituteAll, swaybg
|
|
-, meson, ninja, pkg-config, wayland-scanner, scdoc
|
|
+, meson_0_60, ninja, pkg-config, wayland-scanner, scdoc
|
|
, wayland, libxkbcommon, pcre, json_c, dbus, libevdev
|
|
, pango, cairo, libinput, libcap, pam, gdk-pixbuf, librsvg
|
|
, wlroots, wayland-protocols, libdrm
|
|
@@ -12,13 +12,13 @@
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "sway-unwrapped";
|
|
- version = "1.6.1";
|
|
+ version = "1.7";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "swaywm";
|
|
repo = "sway";
|
|
rev = version;
|
|
- sha256 = "0j4sdbsrlvky1agacc0pcz9bwmaxjmrapjnzscbd2i0cria2fc5j";
|
|
+ sha256 = "0ss3l258blyf2d0lwd7pi7ga1fxfj8pxhag058k7cmjhs3y30y5l";
|
|
};
|
|
|
|
patches = [
|
|
@@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
|
|
];
|
|
|
|
nativeBuildInputs = [
|
|
- meson ninja pkg-config wayland-scanner scdoc
|
|
+ meson_0_60 ninja pkg-config wayland-scanner scdoc
|
|
];
|
|
|
|
buildInputs = [
|
|
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
|
|
index 0627a2fb20021..a6e0b133cd068 100644
|
|
--- a/pkgs/top-level/all-packages.nix
|
|
+++ b/pkgs/top-level/all-packages.nix
|
|
@@ -26143,9 +26143,7 @@ with pkgs;
|
|
inherit (xorg) xcbutilrenderutil;
|
|
};
|
|
|
|
- sway-unwrapped = callPackage ../applications/window-managers/sway {
|
|
- wlroots = wlroots_0_14;
|
|
- };
|
|
+ sway-unwrapped = callPackage ../applications/window-managers/sway { };
|
|
sway = callPackage ../applications/window-managers/sway/wrapper.nix { };
|
|
swaybg = callPackage ../applications/window-managers/sway/bg.nix { };
|
|
swayidle = callPackage ../applications/window-managers/sway/idle.nix { };
|