about summary refs log tree commit diff
path: root/pkgs/aszlig
diff options
context:
space:
mode:
authoraszlig <aszlig@nix.build>2021-07-09 18:26:00 +0200
committeraszlig <aszlig@nix.build>2021-07-09 18:26:00 +0200
commit6005f72476428ecab45fa12f6da55a86291e5d25 (patch)
tree320005c3b2528f427fd7171a4dc9995fdbd372b1 /pkgs/aszlig
parent70176cfc488aafaf933fb16e312ac38dce76a635 (diff)
workstation: Patch XTerm to set $COLORTERM
While ncurses already has support for detecting direct color terminals,
a lot of applications out there do not yet query terminfo but instead
rely on some shady COLORTERM environment variable. While I don't really
like that approach, patching XTerm to set that variable currently is
better than patching all the applications to query terminfo.

Signed-off-by: aszlig <aszlig@nix.build>
Diffstat (limited to 'pkgs/aszlig')
-rw-r--r--pkgs/aszlig/default.nix3
-rw-r--r--pkgs/aszlig/xterm/default.nix5
-rw-r--r--pkgs/aszlig/xterm/set-colorterm.patch13
3 files changed, 20 insertions, 1 deletions
diff --git a/pkgs/aszlig/default.nix b/pkgs/aszlig/default.nix
index 81178000..58f372a9 100644
--- a/pkgs/aszlig/default.nix
+++ b/pkgs/aszlig/default.nix
@@ -1,4 +1,4 @@
-{ callPackage, callPackage_i686, vim_configurable, gopass, mutt }:
+{ callPackage, callPackage_i686, vim_configurable, gopass, mutt, xterm }:
 
 {
   aacolorize = callPackage ./aacolorize { };
@@ -13,4 +13,5 @@
   psi = callPackage ./psi { };
   pvolctrl = callPackage ./pvolctrl { };
   vim = callPackage ./vim { vim = vim_configurable; };
+  xterm = callPackage ./xterm { inherit xterm; };
 }
diff --git a/pkgs/aszlig/xterm/default.nix b/pkgs/aszlig/xterm/default.nix
new file mode 100644
index 00000000..bbb2144d
--- /dev/null
+++ b/pkgs/aszlig/xterm/default.nix
@@ -0,0 +1,5 @@
+{ xterm }:
+
+xterm.overrideAttrs (drv: {
+  patches = [ ./set-colorterm.patch ];
+})
diff --git a/pkgs/aszlig/xterm/set-colorterm.patch b/pkgs/aszlig/xterm/set-colorterm.patch
new file mode 100644
index 00000000..2f6b97c5
--- /dev/null
+++ b/pkgs/aszlig/xterm/set-colorterm.patch
@@ -0,0 +1,13 @@
+diff --git a/main.c b/main.c
+index ec3e9bb..88b0983 100644
+--- a/main.c
++++ b/main.c
+@@ -4580,6 +4580,8 @@ spawnXTerm(XtermWidget xw, unsigned line_speed)
+ 	    xtermSetenv("TERM", resource.term_name);
+ 	    if (!resource.term_name)
+ 		*get_tcap_buffer(xw) = 0;
++	    else if (!strcmp(resource.term_name, "xterm-direct"))
++		xtermSetenv("COLORTERM", "truecolor");
+ 
+ 	    sprintf(buf, "%lu",
+ 		    ((unsigned long) XtWindow(SHELL_OF(CURRENT_EMU()))));