diff --git a/nixos/modules/services/x11/window-managers/berry.nix b/nixos/modules/services/x11/window-managers/berry.nix new file mode 100644 index 000000000000..0d2285e7a60e --- /dev/null +++ b/nixos/modules/services/x11/window-managers/berry.nix @@ -0,0 +1,25 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.xserver.windowManager.berry; +in +{ + ###### interface + options = { + services.xserver.windowManager.berry.enable = mkEnableOption "berry"; + }; + + ###### implementation + config = mkIf cfg.enable { + services.xserver.windowManager.session = singleton { + name = "berry"; + start = '' + ${pkgs.berry}/bin/berry & + waitPID=$! + ''; + }; + environment.systemPackages = [ pkgs.berry ]; + }; +} diff --git a/nixos/modules/services/x11/window-managers/default.nix b/nixos/modules/services/x11/window-managers/default.nix index b815c5f16a1e..87702c58727a 100644 --- a/nixos/modules/services/x11/window-managers/default.nix +++ b/nixos/modules/services/x11/window-managers/default.nix @@ -10,6 +10,7 @@ in imports = [ ./2bwm.nix ./afterstep.nix + ./berry.nix ./bspwm.nix ./cwm.nix ./dwm.nix @@ -21,6 +22,7 @@ in ./i3.nix ./jwm.nix ./leftwm.nix + ./lwm.nix ./metacity.nix ./mwm.nix ./openbox.nix @@ -28,6 +30,7 @@ in ./notion.nix ./ratpoison.nix ./sawfish.nix + ./smallwm.nix ./stumpwm.nix ./spectrwm.nix ./tinywm.nix @@ -35,6 +38,7 @@ in ./windowmaker.nix ./wmii.nix ./xmonad.nix + ./yeahwm.nix ./qtile.nix ./none.nix ]; diff --git a/nixos/modules/services/x11/window-managers/lwm.nix b/nixos/modules/services/x11/window-managers/lwm.nix new file mode 100644 index 000000000000..e2aa062fd13b --- /dev/null +++ b/nixos/modules/services/x11/window-managers/lwm.nix @@ -0,0 +1,25 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.xserver.windowManager.lwm; +in +{ + ###### interface + options = { + services.xserver.windowManager.lwm.enable = mkEnableOption "lwm"; + }; + + ###### implementation + config = mkIf cfg.enable { + services.xserver.windowManager.session = singleton { + name = "lwm"; + start = '' + ${pkgs.lwm}/bin/lwm & + waitPID=$! + ''; + }; + environment.systemPackages = [ pkgs.lwm ]; + }; +} diff --git a/nixos/modules/services/x11/window-managers/smallwm.nix b/nixos/modules/services/x11/window-managers/smallwm.nix new file mode 100644 index 000000000000..091ba4f92b94 --- /dev/null +++ b/nixos/modules/services/x11/window-managers/smallwm.nix @@ -0,0 +1,25 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.xserver.windowManager.smallwm; +in +{ + ###### interface + options = { + services.xserver.windowManager.smallwm.enable = mkEnableOption "smallwm"; + }; + + ###### implementation + config = mkIf cfg.enable { + services.xserver.windowManager.session = singleton { + name = "smallwm"; + start = '' + ${pkgs.smallwm}/bin/smallwm & + waitPID=$! + ''; + }; + environment.systemPackages = [ pkgs.smallwm ]; + }; +} diff --git a/nixos/modules/services/x11/window-managers/yeahwm.nix b/nixos/modules/services/x11/window-managers/yeahwm.nix new file mode 100644 index 000000000000..351bd7dfe48b --- /dev/null +++ b/nixos/modules/services/x11/window-managers/yeahwm.nix @@ -0,0 +1,25 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.xserver.windowManager.yeahwm; +in +{ + ###### interface + options = { + services.xserver.windowManager.yeahwm.enable = mkEnableOption "yeahwm"; + }; + + ###### implementation + config = mkIf cfg.enable { + services.xserver.windowManager.session = singleton { + name = "yeahwm"; + start = '' + ${pkgs.yeahwm}/bin/yeahwm & + waitPID=$! + ''; + }; + environment.systemPackages = [ pkgs.yeahwm ]; + }; +} diff --git a/pkgs/applications/window-managers/berry/default.nix b/pkgs/applications/window-managers/berry/default.nix new file mode 100644 index 000000000000..2a41a3d3c073 --- /dev/null +++ b/pkgs/applications/window-managers/berry/default.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchFromGitHub +, libX11, libXft, libXinerama, fontconfig, freetype }: + +stdenv.mkDerivation rec { + pname = "berry"; + version = "0.1.5"; + + src = fetchFromGitHub { + owner = "JLErvin"; + repo = "berry"; + rev = version; + sha256 = "1wxbjzpwqb9x7vd7kb095fiqj271rki980dnwcxjxpqlmmrmjzyl"; + }; + + buildInputs = [ libX11 libXft libXinerama fontconfig freetype ]; + + preBuild = '' + makeFlagsArray+=( PREFIX="${placeholder "out"}" + X11INC="${libX11.dev}/include" + X11LIB="${libX11}/lib" + XINERAMALIBS="-lXinerama" + XINERAMAFLAGS="-DXINERAMA" + FREETYPELIBS="-lfontconfig -lXft" + FREETYPEINC="${freetype.dev}/include/freetype2" ) + ''; + + meta = with stdenv.lib; { + description = "A healthy, bite-sized window manager"; + longDescription = '' + berry is a healthy, bite-sized window manager written in C for unix + systems. Its main features include: + + - Controlled via a powerful command-line client, allowing users to control + windows via a hotkey daemon such as sxhkd or expand functionality via + shell scripts. + - Small, hackable source code. + - Extensible themeing options with double borders, title bars, and window + text. + - Intuitively place new windows in unoccupied spaces. + - Virtual desktops. + ''; + homepage = "https://berrywm.org/"; + license = licenses.mit; + maintainers = [ maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/window-managers/lwm/default.nix b/pkgs/applications/window-managers/lwm/default.nix new file mode 100644 index 000000000000..49cdc81b9ce0 --- /dev/null +++ b/pkgs/applications/window-managers/lwm/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchurl +, imake, libX11, libSM, libXext, libICE }: + +stdenv.mkDerivation rec { + pname = "lwm"; + version = "1.2.4"; + + src = fetchurl { + url = "http://www.jfc.org.uk/files/lwm/${pname}-${version}.tar.gz"; + sha256 = "1bcdr173f0gl61fyl43p3gr145angci7lvjqb8rl00y9f9amvh3y"; + }; + + nativeBuildInputs = [ imake ]; + + buildInputs = [ libX11 libSM libXext libICE ]; + + dontConfigure = true; + + preBuild = '' + sed -i 's|^LOCAL_LIBRARIES.*|& $(ICELIB)|' Imakefile + xmkmf + ''; + + installPhase = '' + install -dm755 $out/bin $out/share/man/man1 + install -m755 lwm $out/bin/lwm + install -m644 lwm.man $out/share/man/man1/lwm.1 + ''; + + meta = with stdenv.lib; { + description = "Lightweight Window Manager"; + longDescription = '' + lwm is a window manager for X that tries to keep out of your face. There + are no icons, no button bars, no icon docks, no root menus, no nothing: if + you want all that, then other programs can provide it. There's no + configurability either: if you want that, you want a different window + manager; one that helps your operating system in its evil conquest of your + disc space and its annexation of your physical memory. + ''; + homepage = "http://www.jfc.org.uk/software/lwm.html"; + license = licenses.gpl2; + maintainers = [ maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/window-managers/smallwm/default.nix b/pkgs/applications/window-managers/smallwm/default.nix new file mode 100644 index 000000000000..b6d3821e8d06 --- /dev/null +++ b/pkgs/applications/window-managers/smallwm/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchFromGitHub +, doxygen, graphviz, libX11, libXrandr }: + +stdenv.mkDerivation rec { + + pname = "smallwm"; + version = "2020-02-28"; + + src = fetchFromGitHub { + owner = "adamnew123456"; + repo = "SmallWM"; + rev = "c2dc72afa87241bcf7e646630f4aae216ce78613"; + sha256 = "0cqhy81ymdcdyvgi55a401rr96h2akskcxi9ddzjbln4a71yjlz8"; + }; + + nativeBuildInputs = [ doxygen graphviz ]; + buildInputs = [ libX11 libXrandr ]; + + dontConfigure = true; + + makeFlags = [ "CC=${stdenv.cc}/bin/cc" "CXX=${stdenv.cc}/bin/c++" ]; + + buildFlags = [ "all" "doc" ]; + + installPhase = '' + install -dm755 $out/bin $out/share/doc/${pname}-${version} + install -m755 bin/smallwm -t $out/bin + cp -r README.markdown doc/html doc/latex $out/share/doc/${pname}-${version} + ''; + + meta = with stdenv.lib;{ + description = "A small X window manager, extended from tinywm"; + homepage = "https://github.com/adamnew123456/SmallWM"; + license = licenses.bsd2; + maintainers = [ maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/window-managers/yeahwm/default.nix b/pkgs/applications/window-managers/yeahwm/default.nix new file mode 100644 index 000000000000..a8323ff1d386 --- /dev/null +++ b/pkgs/applications/window-managers/yeahwm/default.nix @@ -0,0 +1,58 @@ +{ stdenv, fetchurl +, lesstif +, libX11, libXext, libXmu, libXinerama }: + +stdenv.mkDerivation rec { + + pname = "yeahwm"; + version = "0.3.5"; + + src = fetchurl { + url = "http://phrat.de/${pname}_${version}.tar.gz"; + sha256 = "01gfzjvb40n16m2ja4238nk08k4l203y6a61cydqvf68924fjb69"; + }; + + buildInputs = [ lesstif libX11 libXext libXinerama libXmu ]; + + dontConfigure = true; + + preBuild = '' + makeFlagsArray+=( CC="${stdenv.cc}/bin/cc" \ + XROOT="${libX11}" \ + INCLUDES="-I${libX11.dev}/include -I${libXext.dev}/include -I${libXinerama.dev}/include -I${libXmu.dev}/include" \ + LDPATH="-L${libX11}/lib -L${libXext}/lib -L${libXinerama}/lib -L${libXmu}/lib" \ + prefix="${placeholder "out"}" ) + ''; + + postInstall = '' + gzip -9 --stdout yeahwm.1 > yeahwm.1.gz + install -m644 yeahwm.1.gz ${placeholder "out"}/share/man/man1/ + ''; + + meta = with stdenv.lib;{ + description = "An X window manager based on evilwm and aewm"; + longDescription = '' + YeahWM is a h* window manager for X based on evilwm and aewm. + + Features + - Sloppy Focus. + - BeOS-like tabbed titles, which can be repositioned. + - Support for Xinerama. + - Simple Appearance. + - Good keyboard control. + - Creative usage of the mouse. + - Respects aspect size hints. + - Solid resize and move operations. + - Virtual Desktops. + - "Magic" Screen edges for desktop switching. + - Snapping to other windows and screen borders when moving windows. + - Small binary size(ca. 23kb). + - Little resource usage. + - It's slick. + ''; + homepage = "http://phrat.de/index.html"; + license = licenses.isc; + maintainers = [ maintainers.AndersonTorres ]; + platforms = libX11.meta.platforms; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b85fd488f788..0db4b476682f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -18661,6 +18661,8 @@ in bb = callPackage ../applications/misc/bb { }; + berry = callPackage ../applications/window-managers/berry { }; + bevelbar = callPackage ../applications/window-managers/bevelbar { }; bibletime = libsForQt5.callPackage ../applications/misc/bibletime { }; @@ -19964,6 +19966,8 @@ in leftwm = callPackage ../applications/window-managers/leftwm { }; + lwm = callPackage ../applications/window-managers/lwm { }; + musikcube = callPackage ../applications/audio/musikcube {}; pinboard-notes-backup = haskell.lib.overrideCabal @@ -19985,6 +19989,8 @@ in spectmorph = callPackage ../applications/audio/spectmorph { }; + smallwm = callPackage ../applications/window-managers/smallwm { }; + spectrwm = callPackage ../applications/window-managers/spectrwm { }; spectral = qt5.callPackage ../applications/networking/instant-messengers/spectral { }; @@ -22522,6 +22528,8 @@ in vwm = callPackage ../applications/window-managers/vwm { }; + yeahwm = callPackage ../applications/window-managers/yeahwm { }; + vym = qt5.callPackage ../applications/misc/vym { }; waon = callPackage ../applications/audio/waon { };