tinywm: init at 2014-04-22

A tiny window manger for X11

Changed files
+79
nixos
modules
services
x11
window-managers
pkgs
applications
window-managers
tinywm
top-level
+1
nixos/modules/services/x11/window-managers/default.nix
···
./sawfish.nix
./stumpwm.nix
./spectrwm.nix
+
./tinywm.nix
./twm.nix
./windowmaker.nix
./wmii.nix
+25
nixos/modules/services/x11/window-managers/tinywm.nix
···
+
{ config, lib, pkgs, ... }:
+
+
with lib;
+
+
let
+
cfg = config.services.xserver.windowManager.tinywm;
+
in
+
{
+
###### interface
+
options = {
+
services.xserver.windowManager.tinywm.enable = mkEnableOption "tinywm";
+
};
+
+
###### implementation
+
config = mkIf cfg.enable {
+
services.xserver.windowManager.session = singleton {
+
name = "tinywm";
+
start = ''
+
${pkgs.tinywm}/bin/tinywm &
+
waitPID=$!
+
'';
+
};
+
environment.systemPackages = [ pkgs.tinywm ];
+
};
+
}
+51
pkgs/applications/window-managers/tinywm/default.nix
···
+
{ stdenv, fetchFromGitHub
+
, libX11 }:
+
+
stdenv.mkDerivation rec {
+
pname = "tinywm";
+
version = "2014-04-22";
+
+
src = fetchFromGitHub {
+
owner = "mackstann";
+
repo = pname;
+
rev = "9d05612f41fdb8bc359f1fd9cc930bf16315abb1";
+
sha256 = "1s7r4f2d3lk1i8h089v2vyrr02hh0y9i3ihl9kqgk9s87hqw8q5b";
+
};
+
+
buildInputs = [ libX11 ];
+
+
dontConfigure = true;
+
+
buildPhase = ''
+
${stdenv.cc}/bin/cc -Wall -pedantic -I${libX11}/include tinywm.c -L${libX11}/lib -lX11 -o tinywm
+
'';
+
+
installPhase = ''
+
install -dm755 $out/bin $out/share/doc/${pname}-${version}
+
install -m755 tinywm -t $out/bin/
+
# The annotated source code is a piece of documentation
+
install -m644 annotated.c README -t $out/share/doc/${pname}-${version}
+
'';
+
+
meta = with stdenv.lib;{
+
description = "A tiny window manger for X11";
+
longDescription = ''
+
+
TinyWM is a tiny window manager that I created as an exercise in
+
minimalism. It is also maybe helpful in learning some of the very basics
+
of creating a window manager. It is only around 50 lines of C. There is
+
also a Python version using python-xlib.
+
+
It lets you do four basic things:
+
+
- Move windows interactively with Alt+Button1 drag (left mouse button)
+
- Resize windows interactively with Alt+Button3 drag (right mouse button)
+
- Raise windows with Alt+F1 (not high on usability I know, but I needed a
+
keybinding in there somewhere)
+
- Focus windows with the mouse pointer (X does this on its own)
+
'';
+
homepage = "http://incise.org/tinywm.html";
+
maintainers = with maintainers; [ AndersonTorres ];
+
platforms = libX11.meta.platforms;
+
};
+
}
+2
pkgs/top-level/all-packages.nix
···
trayer = callPackage ../applications/window-managers/trayer { };
+
tinywm = callPackage ../applications/window-managers/tinywm { };
+
tree-from-tags = callPackage ../applications/audio/tree-from-tags { };
tdrop = callPackage ../applications/misc/tdrop { };