* Add xresources-xdefaults patch This patch adds the ability to configure st via Xdefaults, in addition to Xresources, like the rxvt-unicode terminal. At startup, st will read and apply the system and user's local Xdefault files, the XServer's Xresources, and the screen and per-host Xdefaults. This patch depends on XRESOURCES_PATCH and is compatible with XRESOURCES_RELOAD_PATCH. I used the following script to stress test this patch. You can also use the script to demo what the patch does. To be simple, it only tests the user's .Xdefaults and .Xresources files, without throwing in the system and per-host files. The script cycles st's background through red, green and blue indefinitely. BACKUP YOUR ~/.Xdefaults and ~/.Xresources FILES BEFORE TESTING. ```sh unset pid if [ -n "$1" ]; then pid=$1 elif pid=$(pgrep -f ^valgrind) && [ -n "$pid" ]; then : else pid=$(pgrep -n ^st$) fi if [ -z "$pid" -o "x$pid" = "x-h" -o "x$pid" = "x--help" ]; then echo "usage: $0 [pid] If pid is omitted valgrind's is used falling back to st's. --------------------------------------------------------------- BACKUP YOUR ~/.Xdefaults and ~/.Xresources FILES BEFORE TESTING ---------------------------------------------------------------" exit 0 fi printf "Attaching pid=%d\n\t%s\n" "$pid" "$(ps -h -ocmd "$pid")" >&2 seconds=0.25 red='#800000' green='#008000' blue='#000080' echo "St.background: $red" >> $HOME/.Xdefaults while true; do sed -i "\$s/$red/$green/" $HOME/.Xdefaults kill -USR1 $pid sleep $seconds sed -i "\$s/$green/$red/" $HOME/.Xdefaults kill -USR1 $pid sleep $seconds echo "St.background: $blue" >> $HOME/.Xresources xrdb -load $HOME/.Xresources kill -USR1 $pid sleep $seconds sed -i '$d' $HOME/.Xresources xrdb -load $HOME/.Xresources kill -USR1 $pid sleep $seconds done ``` * Minor refactoring and freeing / destroying the Xrm database with XrmDestroyDatabase --------- Co-authored-by: Bakkeby <bakkeby@gmail.com>
20 lines
398 B
C
20 lines
398 B
C
#include <X11/Xresource.h>
|
|
#if XRESOURCES_XDEFAULTS_PATCH
|
|
#include <sys/utsname.h>
|
|
#endif // XRESOURCES_XDEFAULTS_PATCH
|
|
|
|
/* Xresources preferences */
|
|
enum resource_type {
|
|
STRING = 0,
|
|
INTEGER = 1,
|
|
FLOAT = 2
|
|
};
|
|
|
|
typedef struct {
|
|
char *name;
|
|
enum resource_type type;
|
|
void *dst;
|
|
} ResourcePref;
|
|
|
|
int resource_load(XrmDatabase, char *, enum resource_type, void *);
|
|
void config_init(Display *dpy);
|