Merge pull request #101852 from takagiy/init-wmderland
This commit is contained in:
commit
512e44abb1
@ -9497,6 +9497,12 @@
|
|||||||
githubId = 321799;
|
githubId = 321799;
|
||||||
name = "Paul Colomiets";
|
name = "Paul Colomiets";
|
||||||
};
|
};
|
||||||
|
takagiy = {
|
||||||
|
email = "takagiy.4dev@gmail.com";
|
||||||
|
github = "takagiy";
|
||||||
|
githubId = 18656090;
|
||||||
|
name = "Yuki Takagi";
|
||||||
|
};
|
||||||
taketwo = {
|
taketwo = {
|
||||||
email = "alexandrov88@gmail.com";
|
email = "alexandrov88@gmail.com";
|
||||||
github = "taketwo";
|
github = "taketwo";
|
||||||
|
@ -37,6 +37,7 @@ in
|
|||||||
./tinywm.nix
|
./tinywm.nix
|
||||||
./twm.nix
|
./twm.nix
|
||||||
./windowmaker.nix
|
./windowmaker.nix
|
||||||
|
./wmderland.nix
|
||||||
./wmii.nix
|
./wmii.nix
|
||||||
./xmonad.nix
|
./xmonad.nix
|
||||||
./yeahwm.nix
|
./yeahwm.nix
|
||||||
|
61
nixos/modules/services/x11/window-managers/wmderland.nix
Normal file
61
nixos/modules/services/x11/window-managers/wmderland.nix
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.xserver.windowManager.wmderland;
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
options.services.xserver.windowManager.wmderland = {
|
||||||
|
enable = mkEnableOption "wmderland";
|
||||||
|
|
||||||
|
extraSessionCommands = mkOption {
|
||||||
|
default = "";
|
||||||
|
type = types.lines;
|
||||||
|
description = ''
|
||||||
|
Shell commands executed just before wmderland is started.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraPackages = mkOption {
|
||||||
|
type = with types; listOf package;
|
||||||
|
default = with pkgs; [
|
||||||
|
rofi
|
||||||
|
dunst
|
||||||
|
light
|
||||||
|
hsetroot
|
||||||
|
feh
|
||||||
|
rxvt-unicode
|
||||||
|
];
|
||||||
|
example = literalExample ''
|
||||||
|
with pkgs; [
|
||||||
|
rofi
|
||||||
|
dunst
|
||||||
|
light
|
||||||
|
hsetroot
|
||||||
|
feh
|
||||||
|
rxvt-unicode
|
||||||
|
]
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
Extra packages to be installed system wide.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.xserver.windowManager.session = singleton {
|
||||||
|
name = "wmderland";
|
||||||
|
start = ''
|
||||||
|
${cfg.extraSessionCommands}
|
||||||
|
|
||||||
|
${pkgs.wmderland}/bin/wmderland &
|
||||||
|
waitPID=$!
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.wmderland pkgs.wmderlandc
|
||||||
|
] ++ cfg.extraPackages;
|
||||||
|
};
|
||||||
|
}
|
@ -433,6 +433,7 @@ in
|
|||||||
wasabibackend = handleTest ./wasabibackend.nix {};
|
wasabibackend = handleTest ./wasabibackend.nix {};
|
||||||
wiki-js = handleTest ./wiki-js.nix {};
|
wiki-js = handleTest ./wiki-js.nix {};
|
||||||
wireguard = handleTest ./wireguard {};
|
wireguard = handleTest ./wireguard {};
|
||||||
|
wmderland = handleTest ./wmderland.nix {};
|
||||||
wordpress = handleTest ./wordpress.nix {};
|
wordpress = handleTest ./wordpress.nix {};
|
||||||
xandikos = handleTest ./xandikos.nix {};
|
xandikos = handleTest ./xandikos.nix {};
|
||||||
xautolock = handleTest ./xautolock.nix {};
|
xautolock = handleTest ./xautolock.nix {};
|
||||||
|
54
nixos/tests/wmderland.nix
Normal file
54
nixos/tests/wmderland.nix
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
import ./make-test-python.nix ({ pkgs, ...} : {
|
||||||
|
name = "wmderland";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ takagiy ];
|
||||||
|
};
|
||||||
|
|
||||||
|
machine = { lib, ... }: {
|
||||||
|
imports = [ ./common/x11.nix ./common/user-account.nix ];
|
||||||
|
test-support.displayManager.auto.user = "alice";
|
||||||
|
services.xserver.displayManager.defaultSession = lib.mkForce "none+wmderland";
|
||||||
|
services.xserver.windowManager.wmderland.enable = true;
|
||||||
|
|
||||||
|
systemd.services.setupWmderlandConfig = {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
before = [ "multi-user.target" ];
|
||||||
|
environment = {
|
||||||
|
HOME = "/home/alice";
|
||||||
|
};
|
||||||
|
unitConfig = {
|
||||||
|
type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
user = "alice";
|
||||||
|
};
|
||||||
|
script = let
|
||||||
|
config = pkgs.writeText "config" ''
|
||||||
|
set $Mod = Mod1
|
||||||
|
bindsym $Mod+Return exec ${pkgs.xterm}/bin/xterm -cm -pc
|
||||||
|
'';
|
||||||
|
in ''
|
||||||
|
mkdir -p $HOME/.config/wmderland
|
||||||
|
cp ${config} $HOME/.config/wmderland/config
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = { ... }: ''
|
||||||
|
with subtest("ensure x starts"):
|
||||||
|
machine.wait_for_x()
|
||||||
|
machine.wait_for_file("/home/alice/.Xauthority")
|
||||||
|
machine.succeed("xauth merge ~alice/.Xauthority")
|
||||||
|
|
||||||
|
with subtest("ensure we can open a new terminal"):
|
||||||
|
machine.send_key("alt-ret")
|
||||||
|
machine.wait_until_succeeds("pgrep xterm")
|
||||||
|
machine.wait_for_window(r"alice.*?machine")
|
||||||
|
machine.screenshot("terminal")
|
||||||
|
|
||||||
|
with subtest("ensure we can communicate through ipc with wmderlandc"):
|
||||||
|
# Kills the previously open xterm
|
||||||
|
machine.succeed("pgrep xterm")
|
||||||
|
machine.execute("DISPLAY=:0 wmderlandc kill")
|
||||||
|
machine.fail("pgrep xterm")
|
||||||
|
'';
|
||||||
|
})
|
@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 17a4944..33406f3 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -10,7 +10,7 @@ include(BuildType)
|
||||||
|
# Request C++14 standard, using new CMake variables.
|
||||||
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
||||||
|
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -Wall")
|
||||||
|
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
||||||
|
|
||||||
|
# If the BuildType is Debug, then add -rdynamic.
|
||||||
|
# (used to print stacktrace with function names)
|
49
pkgs/applications/window-managers/wmderland/default.nix
Normal file
49
pkgs/applications/window-managers/wmderland/default.nix
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{ lib, stdenv, fetchFromGitHub, cmake, libnotify, libX11, xorgproto, nixosTests }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "wmderland";
|
||||||
|
version = "unstable-2020-07-17";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "aesophor";
|
||||||
|
repo = "wmderland";
|
||||||
|
rev = "a40a3505dd735b401d937203ab6d8d1978307d72";
|
||||||
|
sha256 = "0npmlnybblp82mfpinjbz7dhwqgpdqc1s63wc1zs8mlcs19pdh98";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
];
|
||||||
|
|
||||||
|
cmakeBuildType = "MinSizeRel";
|
||||||
|
|
||||||
|
patches = [ ./0001-remove-flto.patch ];
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace src/util.cc \
|
||||||
|
--replace "notify-send" "${libnotify}/bin/notify-send"
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libX11
|
||||||
|
xorgproto
|
||||||
|
];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
install -Dm0644 -t $out/share/wmderland/contrib $src/example/config
|
||||||
|
install -Dm0644 -t $out/share/xsessions $src/example/wmderland.desktop
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
tests.basic = nixosTests.wmderland;
|
||||||
|
providedSessions = [ "wmderland" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Modern and minimal X11 tiling window manager";
|
||||||
|
homepage = "https://github.com/aesophor/wmderland";
|
||||||
|
license = licenses.mit;
|
||||||
|
platforms = libX11.meta.platforms;
|
||||||
|
maintainers = with maintainers; [ takagiy ];
|
||||||
|
};
|
||||||
|
}
|
32
pkgs/applications/window-managers/wmderlandc/default.nix
Normal file
32
pkgs/applications/window-managers/wmderlandc/default.nix
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{ lib, stdenv, fetchFromGitHub, cmake, libX11, xorgproto }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "wmderlandc";
|
||||||
|
version = "unstable-2020-07-17";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "aesophor";
|
||||||
|
repo = "wmderland";
|
||||||
|
rev = "a40a3505dd735b401d937203ab6d8d1978307d72";
|
||||||
|
sha256 = "0npmlnybblp82mfpinjbz7dhwqgpdqc1s63wc1zs8mlcs19pdh98";
|
||||||
|
};
|
||||||
|
|
||||||
|
sourceRoot = "source/ipc-client";
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libX11
|
||||||
|
xorgproto
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "A tiny program to interact with wmderland";
|
||||||
|
homepage = "https://github.com/aesophor/wmderland/tree/master/ipc-client";
|
||||||
|
license = licenses.mit;
|
||||||
|
platforms = platforms.all;
|
||||||
|
maintainers = with maintainers; [ takagiy ];
|
||||||
|
};
|
||||||
|
}
|
@ -26580,6 +26580,10 @@ in
|
|||||||
|
|
||||||
wmctrl = callPackage ../tools/X11/wmctrl { };
|
wmctrl = callPackage ../tools/X11/wmctrl { };
|
||||||
|
|
||||||
|
wmderland = callPackage ../applications/window-managers/wmderland { };
|
||||||
|
|
||||||
|
wmderlandc = callPackage ../applications/window-managers/wmderlandc { };
|
||||||
|
|
||||||
wmii_hg = callPackage ../applications/window-managers/wmii-hg { };
|
wmii_hg = callPackage ../applications/window-managers/wmii-hg { };
|
||||||
|
|
||||||
wofi = callPackage ../applications/misc/wofi { };
|
wofi = callPackage ../applications/misc/wofi { };
|
||||||
|
Loading…
Reference in New Issue
Block a user