Compare commits

...

10 commits

Author SHA1 Message Date
Antoine Vaure
cae36041b4 decrease default font size 2025-06-02 09:17:07 +02:00
ant
304293d4e1 Enable alpha patch 2025-05-21 20:50:08 +02:00
ant
5a65d4a512 enable boxdraw 2025-05-21 20:50:08 +02:00
ant
0f0f929022 Add a nix flake 2025-01-12 16:30:56 +01:00
ant
2a20129a48 enable patches I want 2025-01-12 16:30:51 +01:00
ant
f2c7f80738 change keys to keyboard select and zoom 2025-01-12 16:09:02 +01:00
ant
0b4c1084f0 change default colors 2025-01-12 16:07:50 +01:00
ant
816061be47 Add darkman patch
a patch to choose between two color themes by executing a command
2025-01-12 16:07:23 +01:00
ant
292f3ae44d font default to caskadia 2025-01-12 16:07:23 +01:00
Antoine Vaure
c87ded477c config: increase scroll speed 2025-01-12 16:07:23 +01:00
7 changed files with 287 additions and 66 deletions

View file

@ -5,13 +5,10 @@
* *
* font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
*/ */
static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true"; static char *font = "Cascadia Code NF:regular:pixelsize=13.5:fontfeatures=calt,ss01:antialias=true:autohint=true";
#if FONT2_PATCH #if FONT2_PATCH
/* Spare fonts */ /* Spare fonts */
static char *font2[] = { static char *font2[] = { "CaskaydiaCove Nerd Font:pixelsize=13.5:antialias=true:autohint=true" };
/* "Inconsolata for Powerline:pixelsize=12:antialias=true:autohint=true", */
/* "Hack Nerd Font Mono:pixelsize=11:antialias=true:autohint=true", */
};
#endif // FONT2_PATCH #endif // FONT2_PATCH
#if BACKGROUND_IMAGE_PATCH #if BACKGROUND_IMAGE_PATCH
@ -130,11 +127,11 @@ int hidecursor = 1;
* Bold affects lines thickness if boxdraw_bold is not 0. Italic is ignored. * Bold affects lines thickness if boxdraw_bold is not 0. Italic is ignored.
* 0: disable (render all U25XX glyphs normally from the font). * 0: disable (render all U25XX glyphs normally from the font).
*/ */
const int boxdraw = 0; const int boxdraw = 1;
const int boxdraw_bold = 0; const int boxdraw_bold = 1;
/* braille (U28XX): 1: render as adjacent "pixels", 0: use font */ /* braille (U28XX): 1: render as adjacent "pixels", 0: use font */
const int boxdraw_braille = 0; const int boxdraw_braille = 1;
#endif // BOXDRAW_PATCH #endif // BOXDRAW_PATCH
/* /*
@ -176,36 +173,69 @@ float alphaUnfocused = 0.6;
#endif // ALPHA_PATCH #endif // ALPHA_PATCH
/* Terminal colors (16 first used in escape sequence) */ /* Terminal colors (16 first used in escape sequence) */
static const char *colorname[] = { static char *colorname[] = {
/* 8 normal colors */ "#011627", /* hard contrast: #1d2021 / soft contrast: #32302f */
"black", "#d3423e",
"red3", "#2aa298",
"green3", "#daaa01",
"yellow3", "#4876d6",
"blue2", "#403f53",
"magenta3", "#08916a",
"cyan3", "#7a8181",
"gray90", "#7a8181",
"#f76e6e",
/* 8 bright colors */ "#49d0c5",
"gray50", "#dac26b",
"red", "#5ca7e4",
"green", "#697098",
"yellow", "#00c990",
"#5c5cff", "#989fb1",
"magenta", [255] = 0,
"cyan", /* more colors can be added after 255 to use with DefaultXX */
"white", "#403f53", /* 256 -> cursor */
"#f2f2f2", /* 257 -> rev cursor*/
[255] = 0, "#ffffff", /* 258 -> bg */
"#403f53", /* 259 -> fg */
/* more colors can be added after 255 to use with DefaultXX */
"#add8e6", /* 256 -> cursor */
"#555555", /* 257 -> rev cursor*/
"#000000", /* 258 -> bg */
"#e5e5e5", /* 259 -> fg */
}; };
#if DARKMAN_PATCH
#define colorname_len (sizeof(colorname) / sizeof(char *))
enum theme {
THEME_LIGHT,
THEME_DARK,
THEME_NUM,
};
/* Terminal colors (16 first used in escape sequence) */
static const char *colornames[THEME_NUM][colorname_len] = {
{ }, {
"#1a1a1a", /* hard contrast: #1d2021 / soft contrast: #32302f */
"#f4005f",
"#98e024",
"#fa8419",
"#9d65ff",
"#f4005f",
"#58d1eb",
"#c4c5b5",
"#625e4c",
"#f4005f",
"#98e024",
"#e0d561",
"#9d65ff",
"#f4005f",
"#58d1eb",
"#f6f6ef",
[255] = 0,
/* more colors can be added after 255 to use with DefaultXX */
"#aaaaaa", /* 256 -> cursor */
"#555555", /* 257 -> rev cursor*/
"#000000", /* 258 -> bg */
"#ffffff", /* 259 -> fg */
}};
#endif // DARKMAN_PATCH
/* /*
* Default colors (colorname index) * Default colors (colorname index)
@ -368,8 +398,8 @@ static MouseShortcut mshortcuts[] = {
{ XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 },
#endif // CLIPBOARD_PATCH #endif // CLIPBOARD_PATCH
#if SCROLLBACK_MOUSE_PATCH #if SCROLLBACK_MOUSE_PATCH
{ ShiftMask, Button4, kscrollup, {.i = 1}, 0, S_PRI}, { ShiftMask, Button4, kscrollup, {.i = 4}, 0, S_PRI},
{ ShiftMask, Button5, kscrolldown, {.i = 1}, 0, S_PRI}, { ShiftMask, Button5, kscrolldown, {.i = 4}, 0, S_PRI},
#elif UNIVERSCROLL_PATCH #elif UNIVERSCROLL_PATCH
{ XK_ANY_MOD, Button4, ttysend, {.s = "\033[5;2~"}, 0, S_PRI }, { XK_ANY_MOD, Button4, ttysend, {.s = "\033[5;2~"}, 0, S_PRI },
{ XK_ANY_MOD, Button5, ttysend, {.s = "\033[6;2~"}, 0, S_PRI }, { XK_ANY_MOD, Button5, ttysend, {.s = "\033[6;2~"}, 0, S_PRI },
@ -378,8 +408,8 @@ static MouseShortcut mshortcuts[] = {
{ ShiftMask, Button5, ttysend, {.s = "\033[6;2~"} }, { ShiftMask, Button5, ttysend, {.s = "\033[6;2~"} },
#endif // SCROLLBACK_MOUSE_PATCH #endif // SCROLLBACK_MOUSE_PATCH
#if SCROLLBACK_MOUSE_ALTSCREEN_PATCH || REFLOW_PATCH #if SCROLLBACK_MOUSE_ALTSCREEN_PATCH || REFLOW_PATCH
{ XK_ANY_MOD, Button4, kscrollup, {.i = 1}, 0, S_PRI }, { XK_ANY_MOD, Button4, kscrollup, {.i = 4}, 0, S_PRI },
{ XK_ANY_MOD, Button5, kscrolldown, {.i = 1}, 0, S_PRI }, { XK_ANY_MOD, Button5, kscrolldown, {.i = 4}, 0, S_PRI },
{ XK_ANY_MOD, Button4, ttysend, {.s = "\031"}, 0, S_ALT }, { XK_ANY_MOD, Button4, ttysend, {.s = "\031"}, 0, S_ALT },
{ XK_ANY_MOD, Button5, ttysend, {.s = "\005"}, 0, S_ALT }, { XK_ANY_MOD, Button5, ttysend, {.s = "\005"}, 0, S_ALT },
#else #else
@ -410,8 +440,8 @@ static Shortcut shortcuts[] = {
{ ControlMask, XK_Print, toggleprinter, {.i = 0} }, { ControlMask, XK_Print, toggleprinter, {.i = 0} },
{ ShiftMask, XK_Print, printscreen, {.i = 0} }, { ShiftMask, XK_Print, printscreen, {.i = 0} },
{ XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, { XK_ANY_MOD, XK_Print, printsel, {.i = 0} },
{ TERMMOD, XK_Prior, zoom, {.f = +1} }, { MODKEY | ControlMask, XK_comma, zoom, {.f = +1} },
{ TERMMOD, XK_Next, zoom, {.f = -1} }, { MODKEY | ControlMask, XK_semicolon, zoom, {.f = -1} },
{ TERMMOD, XK_Home, zoomreset, {.f = 0} }, { TERMMOD, XK_Home, zoomreset, {.f = 0} },
{ TERMMOD, XK_C, clipcopy, {.i = 0} }, { TERMMOD, XK_C, clipcopy, {.i = 0} },
{ TERMMOD, XK_V, clippaste, {.i = 0} }, { TERMMOD, XK_V, clippaste, {.i = 0} },
@ -455,7 +485,7 @@ static Shortcut shortcuts[] = {
#endif // EXTERNALPIPEIN_PATCH #endif // EXTERNALPIPEIN_PATCH
#endif // EXTERNALPIPE_PATCH #endif // EXTERNALPIPE_PATCH
#if KEYBOARDSELECT_PATCH #if KEYBOARDSELECT_PATCH
{ TERMMOD, XK_Escape, keyboard_select, { 0 } }, { TERMMOD, XK_space, keyboard_select, { 0 } },
#endif // KEYBOARDSELECT_PATCH #endif // KEYBOARDSELECT_PATCH
#if KEYBOARDSELECT_PATCH && REFLOW_PATCH #if KEYBOARDSELECT_PATCH && REFLOW_PATCH
{ TERMMOD, XK_F, searchforward, { 0 } }, { TERMMOD, XK_F, searchforward, { 0 } },

View file

@ -21,14 +21,14 @@ PKG_CONFIG = pkg-config
#XCURSOR = `$(PKG_CONFIG) --libs xcursor` #XCURSOR = `$(PKG_CONFIG) --libs xcursor`
# Uncomment the lines below for the ligatures patch / LIGATURES_PATCH # Uncomment the lines below for the ligatures patch / LIGATURES_PATCH
#LIGATURES_C = hb.c LIGATURES_C = hb.c
#LIGATURES_H = hb.h LIGATURES_H = hb.h
#LIGATURES_INC = `$(PKG_CONFIG) --cflags harfbuzz` LIGATURES_INC = `$(PKG_CONFIG) --cflags harfbuzz`
#LIGATURES_LIBS = `$(PKG_CONFIG) --libs harfbuzz` LIGATURES_LIBS = `$(PKG_CONFIG) --libs harfbuzz`
# Uncomment this for the SIXEL patch / SIXEL_PATCH # Uncomment this for the SIXEL patch / SIXEL_PATCH
#SIXEL_C = sixel.c sixel_hls.c SIXEL_C = sixel.c sixel_hls.c
#SIXEL_LIBS = `$(PKG_CONFIG) --libs imlib2` SIXEL_LIBS = `$(PKG_CONFIG) --libs imlib2`
# Uncomment for the netwmicon patch / NETWMICON_PATCH # Uncomment for the netwmicon patch / NETWMICON_PATCH
#NETWMICON_LIBS = `$(PKG_CONFIG) --libs gdlib` #NETWMICON_LIBS = `$(PKG_CONFIG) --libs gdlib`

56
default.nix Normal file
View file

@ -0,0 +1,56 @@
{ lib
, stdenv
, pkg-config
, fontconfig
, freetype
, libX11
, libXft
, harfbuzz
, gd
, glib
, ncurses
, writeText
, conf ? null
, patches ? []
, extraLibs ? []
, nixosTests
, imlib2
}:
stdenv.mkDerivation rec {
pname = "st";
version = "0.8.5";
src = ./.;
inherit patches;
configFile =
lib.optionalString (conf != null) (writeText "config.def.h" conf);
postPatch = lib.optionalString (conf != null) "cp ${configFile} config.def.h"
+ lib.optionalString stdenv.isDarwin ''
substituteInPlace config.mk --replace "-lrt" ""
'';
strictDeps = true;
makeFlags = [ "PKG_CONFIG=${stdenv.cc.targetPrefix}pkg-config" ];
nativeBuildInputs = [ pkg-config ncurses fontconfig freetype ];
buildInputs = [ libX11 libXft harfbuzz gd glib imlib2 ] ++ extraLibs;
preInstall = ''
export TERMINFO=$out/share/terminfo
'';
installFlags = [ "PREFIX=$(out)" ];
passthru.tests.test = nixosTests.terminal-emulators.st;
meta = with lib; {
description = "st terminal";
license = licenses.mit;
maintainers = with maintainers; [ sioodmy ];
platforms = platforms.unix;
};
}

61
flake.lock generated Normal file
View file

@ -0,0 +1,61 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1736549401,
"narHash": "sha256-ibkQrMHxF/7TqAYcQE+tOnIsSEzXmMegzyBWza6uHKM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1dab772dd4a68a7bba5d9460685547ff8e17d899",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

41
flake.nix Normal file
View file

@ -0,0 +1,41 @@
{
description = "st terminal";
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let pkgs = nixpkgs.legacyPackages.${system};
in rec {
packages = flake-utils.lib.flattenTree {
st = pkgs.callPackage ./default.nix { };
};
defaultPackage = packages.st;
apps.st = flake-utils.lib.mkApp {
drv = packages.st;
exePath = "/bin/st";
};
apps.default = apps.st;
defaultApp = apps.st;
devShell = pkgs.mkShell rec {
name = "st";
packages = with pkgs; [
pkg-config
xorg.libX11
xorg.libXft
fontconfig
harfbuzz.dev
imlib2
gd
glib
# ccls
# bear
# lldb
# gdb
# valgrind
];
};
});
}

View file

@ -14,7 +14,7 @@
* when including this patch. * when including this patch.
* https://st.suckless.org/patches/alpha/ * https://st.suckless.org/patches/alpha/
*/ */
#define ALPHA_PATCH 0 #define ALPHA_PATCH 1
/* The alpha focus highlight patch allows the user to specify two distinct opacity values or /* The alpha focus highlight patch allows the user to specify two distinct opacity values or
* background colors in order to easily differentiate between focused and unfocused terminal * background colors in order to easily differentiate between focused and unfocused terminal
@ -70,12 +70,12 @@
* This patch makes bold text rendered simply as bold, leaving the color unaffected. * This patch makes bold text rendered simply as bold, leaving the color unaffected.
* https://st.suckless.org/patches/bold-is-not-bright/ * https://st.suckless.org/patches/bold-is-not-bright/
*/ */
#define BOLD_IS_NOT_BRIGHT_PATCH 0 #define BOLD_IS_NOT_BRIGHT_PATCH 1
/* This patch adds custom rendering of lines/blocks/braille characters for gapless alignment. /* This patch adds custom rendering of lines/blocks/braille characters for gapless alignment.
* https://st.suckless.org/patches/boxdraw/ * https://st.suckless.org/patches/boxdraw/
*/ */
#define BOXDRAW_PATCH 0 #define BOXDRAW_PATCH 1
/* By default st only sets PRIMARY on selection. /* By default st only sets PRIMARY on selection.
* This patch makes st set CLIPBOARD on selection. * This patch makes st set CLIPBOARD on selection.
@ -176,7 +176,7 @@
* that are available to GUI applications. * that are available to GUI applications.
* https://st.suckless.org/patches/fix_keyboard_input/ * https://st.suckless.org/patches/fix_keyboard_input/
*/ */
#define FIXKEYBOARDINPUT_PATCH 0 #define FIXKEYBOARDINPUT_PATCH 1
/* This patch allows you to add spare font besides the default. Some glyphs can be not present in /* This patch allows you to add spare font besides the default. Some glyphs can be not present in
* the default font. For this glyphs st uses font-config and try to find them in font cache first. * the default font. For this glyphs st uses font-config and try to find them in font cache first.
@ -184,7 +184,7 @@
* So they will be used first for glyphs that are absent in the default font. * So they will be used first for glyphs that are absent in the default font.
* https://st.suckless.org/patches/font2/ * https://st.suckless.org/patches/font2/
*/ */
#define FONT2_PATCH 0 #define FONT2_PATCH 1
/* This patch adds the ability to toggle st into fullscreen mode. /* This patch adds the ability to toggle st into fullscreen mode.
* Two key bindings are defined: F11 which is typical with other applications and Alt+Enter * Two key bindings are defined: F11 which is typical with other applications and Alt+Enter
@ -223,7 +223,7 @@
* *
* https://st.suckless.org/patches/keyboard_select/ * https://st.suckless.org/patches/keyboard_select/
*/ */
#define KEYBOARDSELECT_PATCH 0 #define KEYBOARDSELECT_PATCH 1
/* This patch adds support for drawing ligatures using the Harfbuzz library to transform /* This patch adds support for drawing ligatures using the Harfbuzz library to transform
* original text of a single line to a list of glyphs with ligatures included. * original text of a single line to a list of glyphs with ligatures included.
@ -239,6 +239,9 @@
*/ */
#define FONTFEATURES_PATCH 1 #define FONTFEATURES_PATCH 1
#define DARKMAN_PATCH 1
/* This patch makes st ignore terminal color attributes by forcing display of the default /* This patch makes st ignore terminal color attributes by forcing display of the default
* foreground and background colors only - making for a monochrome look. Idea ref. * foreground and background colors only - making for a monochrome look. Idea ref.
* https://www.reddit.com/r/suckless/comments/ixbx6z/how_to_use_black_and_white_only_for_st/ * https://www.reddit.com/r/suckless/comments/ixbx6z/how_to_use_black_and_white_only_for_st/
@ -283,7 +286,7 @@
* same CWD (current working directory) as the original st instance. * same CWD (current working directory) as the original st instance.
* https://st.suckless.org/patches/newterm/ * https://st.suckless.org/patches/newterm/
*/ */
#define NEWTERM_PATCH 0 #define NEWTERM_PATCH 1
/* This patch will set the _MOTIF_WM_HINTS property for the st window which, if the window manager /* This patch will set the _MOTIF_WM_HINTS property for the st window which, if the window manager
* respects it, will show the st window without window decorations. * respects it, will show the st window without window decorations.
@ -303,7 +306,7 @@
* *
* https://www.reddit.com/r/suckless/comments/cc83om/st_open_url/ * https://www.reddit.com/r/suckless/comments/cc83om/st_open_url/
*/ */
#define OPENURLONCLICK_PATCH 0 #define OPENURLONCLICK_PATCH 1
/* This patch allows st to fetch the current working directory through the OSC 7 escape /* This patch allows st to fetch the current working directory through the OSC 7 escape
* sequence emitted by shells. Must be used with newterm patch. * sequence emitted by shells. Must be used with newterm patch.
@ -325,7 +328,7 @@
* Text wraps when the terminal window is made smaller. * Text wraps when the terminal window is made smaller.
* Comes with scrollback. * Comes with scrollback.
*/ */
#define REFLOW_PATCH 0 #define REFLOW_PATCH 1
/* This patch allows you to specify a border that is relative in size to the width of a cell /* This patch allows you to specify a border that is relative in size to the width of a cell
* in the terminal. * in the terminal.
@ -342,19 +345,19 @@
/* Scroll back through terminal output using Shift+{PageUp, PageDown}. /* Scroll back through terminal output using Shift+{PageUp, PageDown}.
* https://st.suckless.org/patches/scrollback/ * https://st.suckless.org/patches/scrollback/
*/ */
#define SCROLLBACK_PATCH 0 #define SCROLLBACK_PATCH 1
/* Scroll back through terminal output using Shift+MouseWheel. /* Scroll back through terminal output using Shift+MouseWheel.
* This variant depends on SCROLLBACK_PATCH being enabled. * This variant depends on SCROLLBACK_PATCH being enabled.
* https://st.suckless.org/patches/scrollback/ * https://st.suckless.org/patches/scrollback/
*/ */
#define SCROLLBACK_MOUSE_PATCH 0 #define SCROLLBACK_MOUSE_PATCH 1
/* Scroll back through terminal output using mouse wheel (when not in MODE_ALTSCREEN). /* Scroll back through terminal output using mouse wheel (when not in MODE_ALTSCREEN).
* This variant depends on SCROLLBACK_PATCH being enabled. * This variant depends on SCROLLBACK_PATCH being enabled.
* https://st.suckless.org/patches/scrollback/ * https://st.suckless.org/patches/scrollback/
*/ */
#define SCROLLBACK_MOUSE_ALTSCREEN_PATCH 0 #define SCROLLBACK_MOUSE_ALTSCREEN_PATCH 1
/* This patch adds the two color-settings selectionfg and selectionbg to config.def.h. /* This patch adds the two color-settings selectionfg and selectionbg to config.def.h.
* Those define the fore- and background colors which are used when text on the screen is selected * Those define the fore- and background colors which are used when text on the screen is selected
@ -382,7 +385,7 @@
* *
* https://gist.github.com/saitoha/70e0fdf22e3e8f63ce937c7f7da71809 * https://gist.github.com/saitoha/70e0fdf22e3e8f63ce937c7f7da71809
*/ */
#define SIXEL_PATCH 0 #define SIXEL_PATCH 1
/* This patch allows clients to embed into the st window and is useful if you tend to /* This patch allows clients to embed into the st window and is useful if you tend to
* start X applications from the terminal. For example: * start X applications from the terminal. For example:
@ -442,7 +445,7 @@
* *
* https://st.suckless.org/patches/undercurl/ * https://st.suckless.org/patches/undercurl/
*/ */
#define UNDERCURL_PATCH 0 #define UNDERCURL_PATCH 1
/* Allows mouse scroll without modifier keys for regardless of alt screen using the external /* Allows mouse scroll without modifier keys for regardless of alt screen using the external
* scroll program. * scroll program.

36
x.c
View file

@ -795,10 +795,13 @@ setsel(char *str, Time t)
#endif // CLIPBOARD_PATCH #endif // CLIPBOARD_PATCH
} }
#if XRESOURCES_PATCH && XRESOURCES_RELOAD_PATCH || BACKGROUND_IMAGE_PATCH && BACKGROUND_IMAGE_RELOAD_PATCH #if XRESOURCES_PATCH && XRESOURCES_RELOAD_PATCH || BACKGROUND_IMAGE_PATCH && BACKGROUND_IMAGE_RELOAD_PATCH || DARKMAN_PATCH
void void
sigusr1_reload(int sig) sigusr1_reload(int sig)
{ {
#if DARKMAN_PATCH
xloadcols();
#endif // DARKMAN_PATCH
#if XRESOURCES_PATCH && XRESOURCES_RELOAD_PATCH #if XRESOURCES_PATCH && XRESOURCES_RELOAD_PATCH
reload_config(sig); reload_config(sig);
#endif // XRESOURCES_RELOAD_PATCH #endif // XRESOURCES_RELOAD_PATCH
@ -976,6 +979,28 @@ xloadalpha(void)
} }
#endif // ALPHA_FOCUS_HIGHLIGHT_PATCH #endif // ALPHA_FOCUS_HIGHLIGHT_PATCH
#if DARKMAN_PATCH
void
darkmanThemeChoose() {
FILE *fp;
char path[128];
fp = popen("darkman get", "r");
if (fp == NULL) {
memcpy(colorname, colornames[0], sizeof(colorname));
} else {
/* match the stdout with the theme */
while (fgets(path, sizeof(path)-1, fp) != NULL) {
if (strcmp(path, "light\n") == 0) {
memcpy(colorname, colornames[0], sizeof(colorname));
} else if (strcmp(path, "dark\n") == 0) {
memcpy(colorname, colornames[1], sizeof(colorname));
}
}
}
}
#endif // DARKMAN_PATCH
#if ALPHA_PATCH && ALPHA_FOCUS_HIGHLIGHT_PATCH #if ALPHA_PATCH && ALPHA_FOCUS_HIGHLIGHT_PATCH
void void
xloadcols(void) xloadcols(void)
@ -1009,6 +1034,8 @@ xloadcols(void)
static int loaded; static int loaded;
Color *cp; Color *cp;
darkmanThemeChoose();
if (loaded) { if (loaded) {
for (cp = dc.col; cp < &dc.col[dc.collen]; ++cp) for (cp = dc.col; cp < &dc.col[dc.collen]; ++cp)
XftColorFree(xw.dpy, xw.vis, xw.cmap, cp); XftColorFree(xw.dpy, xw.vis, xw.cmap, cp);
@ -3978,9 +4005,12 @@ run:
setlocale(LC_CTYPE, ""); setlocale(LC_CTYPE, "");
XSetLocaleModifiers(""); XSetLocaleModifiers("");
#if XRESOURCES_PATCH && XRESOURCES_RELOAD_PATCH || BACKGROUND_IMAGE_PATCH && BACKGROUND_IMAGE_RELOAD_PATCH #if XRESOURCES_PATCH && XRESOURCES_RELOAD_PATCH || BACKGROUND_IMAGE_PATCH && BACKGROUND_IMAGE_RELOAD_PATCH || DARKMAN_PATCH
signal(SIGUSR1, sigusr1_reload); signal(SIGUSR1, sigusr1_reload);
#endif // XRESOURCES_RELOAD_PATCH | BACKGROUND_IMAGE_RELOAD_PATCH #endif // XRESOURCES_RELOAD_PATCH | BACKGROUND_IMAGE_RELOAD_PATCH | DARKMAN_PATCH
#if DARKMAN_PATCH
memcpy(colornames[0], colorname, sizeof(colorname));
#endif // DARKMAN_PATCH
#if XRESOURCES_PATCH #if XRESOURCES_PATCH
if (!(xw.dpy = XOpenDisplay(NULL))) if (!(xw.dpy = XOpenDisplay(NULL)))
die("Can't open display\n"); die("Can't open display\n");