about summary refs log tree commit diff
path: root/pkgs/applications/display-managers/slim
diff options
context:
space:
mode:
authorArseniy Seroka <ars.seroka@gmail.com>2014-02-05 16:44:59 +0400
committerArseniy Seroka <ars.seroka@gmail.com>2014-02-05 16:46:42 +0400
commitd573ea576fce2c86f8d706b9048c2d72ad12b703 (patch)
tree8b4586d756ade3374be3f4f46466047a570c1f9a /pkgs/applications/display-managers/slim
parentb9fe0b8fb10bdc25d62fc766f04f2235205e1ef9 (diff)
downloadnixlib-d573ea576fce2c86f8d706b9048c2d72ad12b703.tar
nixlib-d573ea576fce2c86f8d706b9048c2d72ad12b703.tar.gz
nixlib-d573ea576fce2c86f8d706b9048c2d72ad12b703.tar.bz2
nixlib-d573ea576fce2c86f8d706b9048c2d72ad12b703.tar.lz
nixlib-d573ea576fce2c86f8d706b9048c2d72ad12b703.tar.xz
nixlib-d573ea576fce2c86f8d706b9048c2d72ad12b703.tar.zst
nixlib-d573ea576fce2c86f8d706b9048c2d72ad12b703.zip
add normal theme support for slim and slimlock
Diffstat (limited to 'pkgs/applications/display-managers/slim')
-rw-r--r--pkgs/applications/display-managers/slim/default.nix23
-rw-r--r--pkgs/applications/display-managers/slim/runtime-paths.patch22
2 files changed, 43 insertions, 2 deletions
diff --git a/pkgs/applications/display-managers/slim/default.nix b/pkgs/applications/display-managers/slim/default.nix
index 0b5bcccfb21a..caf8a7c4222e 100644
--- a/pkgs/applications/display-managers/slim/default.nix
+++ b/pkgs/applications/display-managers/slim/default.nix
@@ -1,5 +1,20 @@
 { stdenv, fetchurl, cmake, pkgconfig, xorg, libjpeg, libpng
-, fontconfig, freetype, pam, dbus_libs }:
+, fontconfig, freetype, pam, dbus_libs, makeWrapper, pkgs, theme ? null }:
+
+let 
+  slimThemesDir =
+      let
+        unpackedTheme = pkgs.stdenv.mkDerivation {
+          name = "slim-theme";
+          buildCommand = ''
+            ensureDir $out
+            cd $out
+            unpackFile ${theme}
+            ln -s * default
+          '';
+        };
+    in if theme == null then "$out/share/slim/themes" else unpackedTheme;
+in
 
 stdenv.mkDerivation rec {
   name = "slim-1.3.6";
@@ -29,9 +44,13 @@ stdenv.mkDerivation rec {
   buildInputs =
     [ cmake pkgconfig libjpeg libpng fontconfig freetype
       pam dbus_libs
-      xorg.libX11 xorg.libXext xorg.libXrandr xorg.libXrender xorg.libXmu xorg.libXft
+      xorg.libX11 xorg.libXext xorg.libXrandr xorg.libXrender xorg.libXmu xorg.libXft makeWrapper
     ];
 
+  postInstall = ''
+    wrapProgram $out/bin/slimlock --set SLIM_THEMESDIR "${slimThemesDir}" --set SLIM_CFGFILE "$out/etc/slim.cfg"
+  '';
+
   NIX_CFLAGS_LINK = "-lXmu";
 
   meta = {
diff --git a/pkgs/applications/display-managers/slim/runtime-paths.patch b/pkgs/applications/display-managers/slim/runtime-paths.patch
index f6811dbe6682..2e4868092e56 100644
--- a/pkgs/applications/display-managers/slim/runtime-paths.patch
+++ b/pkgs/applications/display-managers/slim/runtime-paths.patch
@@ -23,3 +23,25 @@ diff -ru -x '*~' slim-1.3.6-orig/app.cpp slim-1.3.6/app.cpp
  		themeName = cfg->getOption("current_theme");
  		string::size_type pos;
  		if ((pos = themeName.find(",")) != string::npos) {
+--- slim-1.3.6-orig/slimlock.cpp	2014-02-05 01:58:01.576560731 +0400
++++ slim-1.3.6/slimlock.cpp	2014-02-05 02:11:16.587634246 +0400
+@@ -106,13 +106,17 @@
+ 	unsigned int cfg_passwd_timeout;
+ 	// Read user's current theme
+ 	cfg = new Cfg;
+-	cfg->readConf(CFGFILE);
++	char *cfgfile = getenv("SLIM_CFGFILE");
++	if (!cfgfile) cfgfile = CFGFILE;
++	cfg->readConf(cfgfile);
+ 	cfg->readConf(SLIMLOCKCFG);
+ 	string themebase = "";
+ 	string themefile = "";
+ 	string themedir = "";
+ 	themeName = "";
+-	themebase = string(THEMESDIR) + "/";
++	char *themesdir = getenv("SLIM_THEMESDIR");
++	if (!themesdir) themesdir = THEMESDIR;
++	themebase = string(themesdir) + "/";
+ 	themeName = cfg->getOption("current_theme");
+ 	string::size_type pos;
+ 	if ((pos = themeName.find(",")) != string::npos) {