new dwm build stuff 2
This commit is contained in:
parent
f7805e66a6
commit
7cd27a535d
249 changed files with 3501 additions and 1724 deletions
Binary file not shown.
|
@ -1,517 +0,0 @@
|
||||||
/* See LICENSE file for copyright and license details. */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* appearance
|
|
||||||
*
|
|
||||||
* font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
|
|
||||||
*/
|
|
||||||
static const char *font = "CaskaydiaMonoNerdFontMono-Bold:size=14:style=Bold";
|
|
||||||
/* Spare fonts */
|
|
||||||
|
|
||||||
static char *font2[] = {
|
|
||||||
"CaskaydiaMonoNerdFontMono-Bold:pixelsize=12:antialias=true:autohint=true"};
|
|
||||||
static int borderpx = 6;
|
|
||||||
|
|
||||||
/* How to align the content in the window when the size of the terminal
|
|
||||||
* doesn't perfectly match the size of the window. The values are percentages.
|
|
||||||
* 50 means center, 0 means flush left/top, 100 means flush right/bottom.
|
|
||||||
*/
|
|
||||||
static int anysize_halign = 50;
|
|
||||||
static int anysize_valign = 50;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* What program is execed by st depends of these precedence rules:
|
|
||||||
* 1: program passed with -e
|
|
||||||
* 2: scroll and/or utmp
|
|
||||||
* 3: SHELL environment variable
|
|
||||||
* 4: value of shell in /etc/passwd
|
|
||||||
* 5: value of shell in config.h
|
|
||||||
*/
|
|
||||||
static char *shell = "/usr/bin/zsh";
|
|
||||||
char *utmp = NULL;
|
|
||||||
/* scroll program: to enable use a string like "scroll" */
|
|
||||||
char *scroll = NULL;
|
|
||||||
char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400";
|
|
||||||
|
|
||||||
/* identification sequence returned in DA and DECID */
|
|
||||||
/* By default, use the same one as kitty. */
|
|
||||||
|
|
||||||
char *vtiden = "\033[?62c";
|
|
||||||
//char *vtiden = "\x1b[?62;4c";
|
|
||||||
|
|
||||||
/* Kerning / character bounding-box multipliers */
|
|
||||||
static float cwscale = 1;
|
|
||||||
static float chscale = 1;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* word delimiter string
|
|
||||||
*
|
|
||||||
* More advanced example: L" `'\"()[]{}"
|
|
||||||
*/
|
|
||||||
wchar_t *worddelimiters = L" ";
|
|
||||||
|
|
||||||
/* selection timeouts (in milliseconds) */
|
|
||||||
static unsigned int doubleclicktimeout = 300;
|
|
||||||
static unsigned int tripleclicktimeout = 600;
|
|
||||||
|
|
||||||
/* alt screens */
|
|
||||||
int allowaltscreen = 1;
|
|
||||||
|
|
||||||
/* allow certain non-interactive (insecure) window operations such as:
|
|
||||||
setting the clipboard text */
|
|
||||||
int allowwindowops = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* draw latency range in ms - from new content/keypress/etc until drawing.
|
|
||||||
* within this range, st draws when content stops arriving (idle). mostly it's
|
|
||||||
* near minlatency, but it waits longer for slow updates to avoid partial draw.
|
|
||||||
* low minlatency will tear/flicker more, as it can "detect" idle too early.
|
|
||||||
*/
|
|
||||||
static double minlatency = 1;
|
|
||||||
static double maxlatency = 10;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* blinking timeout (set to 0 to disable blinking) for the terminal blinking
|
|
||||||
* attribute.
|
|
||||||
*/
|
|
||||||
static unsigned int blinktimeout = 100;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* thickness of underline and bar cursors
|
|
||||||
*/
|
|
||||||
static unsigned int cursorthickness = 2;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 1: render most of the lines/blocks characters without using the font for
|
|
||||||
* perfect alignment between cells (U2500 - U259F except dashes/diagonals).
|
|
||||||
* Bold affects lines thickness if boxdraw_bold is not 0. Italic is ignored.
|
|
||||||
* 0: disable (render all U25XX glyphs normally from the font).
|
|
||||||
*/
|
|
||||||
const int boxdraw = 1;
|
|
||||||
const int boxdraw_bold = 1;
|
|
||||||
|
|
||||||
/* braille (U28XX): 1: render as adjacent "pixels", 0: use font */
|
|
||||||
const int boxdraw_braille = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* bell volume. It must be a value between -100 and 100. Use 0 for disabling
|
|
||||||
* it
|
|
||||||
*/
|
|
||||||
static int bellvolume = 0;
|
|
||||||
|
|
||||||
/* default TERM value */
|
|
||||||
char *termname = "st";
|
|
||||||
|
|
||||||
/*
|
|
||||||
* spaces per tab
|
|
||||||
*
|
|
||||||
* When you are changing this value, don't forget to adapt the »it« value in
|
|
||||||
* the st.info and appropriately install the st.info in the environment where
|
|
||||||
* you use this st version.
|
|
||||||
*
|
|
||||||
* it#$tabspaces,
|
|
||||||
*
|
|
||||||
* Secondly make sure your kernel is not expanding tabs. When running `stty
|
|
||||||
* -a` »tab0« should appear. You can tell the terminal to not expand tabs by
|
|
||||||
* running following command:
|
|
||||||
*
|
|
||||||
* stty tabs
|
|
||||||
*/
|
|
||||||
unsigned int tabspaces = 8;
|
|
||||||
|
|
||||||
/* Terminal colors (16 first used in escape sequence) */
|
|
||||||
static const char *colorname[] = {
|
|
||||||
/* 8 normal colors */
|
|
||||||
"black", "red3", "green3", "yellow3", "blue2", "magenta3", "cyan3",
|
|
||||||
"gray90",
|
|
||||||
|
|
||||||
/* 8 bright colors */
|
|
||||||
"gray50", "red", "green", "yellow", "#5c5cff", "magenta", "cyan", "white",
|
|
||||||
|
|
||||||
[255] = 0,
|
|
||||||
|
|
||||||
/* more colors can be added after 255 to use with DefaultXX */
|
|
||||||
"#cccccc", "#555555", "gray90", /* default foreground colour */
|
|
||||||
"black", /* default background colour */
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Default colors (colorname index)
|
|
||||||
* foreground, background, cursor, reverse cursor
|
|
||||||
*/
|
|
||||||
unsigned int defaultfg = 258;
|
|
||||||
unsigned int defaultbg = 259;
|
|
||||||
unsigned int defaultcs = 256;
|
|
||||||
static unsigned int defaultrcs = 257;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Default shape of cursor
|
|
||||||
* 2: Block ("█")
|
|
||||||
* 4: Underline ("_")
|
|
||||||
* 6: Bar ("|")
|
|
||||||
* 7: Snowman ("☃")
|
|
||||||
*/
|
|
||||||
static unsigned int cursorshape = 2;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Default columns and rows numbers
|
|
||||||
*/
|
|
||||||
|
|
||||||
static unsigned int cols = 80;
|
|
||||||
static unsigned int rows = 24;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Default colour and shape of the mouse cursor
|
|
||||||
*/
|
|
||||||
static unsigned int mouseshape = XC_xterm;
|
|
||||||
static unsigned int mousefg = 7;
|
|
||||||
static unsigned int mousebg = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Color used to display font attributes when fontconfig selected a font which
|
|
||||||
* doesn't match the ones requested.
|
|
||||||
*/
|
|
||||||
static unsigned int defaultattr = 11;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Graphics configuration
|
|
||||||
*/
|
|
||||||
|
|
||||||
/// The template for the cache directory.
|
|
||||||
const char graphics_cache_dir_template[] = "/tmp/st-images-XXXXXX";
|
|
||||||
/// The max size of a single image file, in bytes.
|
|
||||||
unsigned graphics_max_single_image_file_size = 20 * 1024 * 1024;
|
|
||||||
/// The max size of the cache, in bytes.
|
|
||||||
unsigned graphics_total_file_cache_size = 300 * 1024 * 1024;
|
|
||||||
/// The max ram size of an image or placement, in bytes.
|
|
||||||
unsigned graphics_max_single_image_ram_size = 100 * 1024 * 1024;
|
|
||||||
/// The max total size of all images loaded into RAM.
|
|
||||||
unsigned graphics_max_total_ram_size = 300 * 1024 * 1024;
|
|
||||||
/// The max total number of image placements and images.
|
|
||||||
unsigned graphics_max_total_placements = 4096;
|
|
||||||
/// The ratio by which limits can be exceeded. This is to reduce the frequency
|
|
||||||
/// of image removal.
|
|
||||||
double graphics_excess_tolerance_ratio = 0.05;
|
|
||||||
/// The minimum delay between redraws caused by animations, in milliseconds.
|
|
||||||
unsigned graphics_animation_min_delay = 20;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Force mouse select/shortcuts while mask is active (when MODE_MOUSE is set).
|
|
||||||
* Note that if you want to use ShiftMask with selmasks, set this to an other
|
|
||||||
* modifier, set to 0 to not use it.
|
|
||||||
*/
|
|
||||||
static uint forcemousemod = ShiftMask;
|
|
||||||
|
|
||||||
/* Internal keyboard shortcuts. */
|
|
||||||
#define MODKEY Mod1Mask
|
|
||||||
#define TERMMOD (ControlMask | ShiftMask)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Internal mouse shortcuts.
|
|
||||||
* Beware that overloading Button1 will disable the selection.
|
|
||||||
*/
|
|
||||||
static MouseShortcut mshortcuts[] = {
|
|
||||||
/* mask button function argument release */
|
|
||||||
{TERMMOD, Button3, previewimage, {.s = "feh"}},
|
|
||||||
{TERMMOD, Button2, showimageinfo, {}, 1},
|
|
||||||
{XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1},
|
|
||||||
{ShiftMask, Button4, kscrollup, {.i = 1}},
|
|
||||||
{ShiftMask, Button5, kscrolldown, {.i = 1}},
|
|
||||||
{ShiftMask, Button4, ttysend, {.s = "\033[5;2~"}},
|
|
||||||
{XK_ANY_MOD, Button4, ttysend, {.s = "\031"}},
|
|
||||||
{ShiftMask, Button5, ttysend, {.s = "\033[6;2~"}},
|
|
||||||
{XK_ANY_MOD, Button5, ttysend, {.s = "\005"}},
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Internal keyboard shortcuts. */
|
|
||||||
|
|
||||||
static Shortcut shortcuts[] = {
|
|
||||||
/* mask keysym function argument */
|
|
||||||
{TERMMOD, XK_F1, togglegrdebug, {.i = 0}},
|
|
||||||
{TERMMOD, XK_F6, dumpgrstate, {.i = 0}},
|
|
||||||
{TERMMOD, XK_F7, unloadimages, {.i = 0}},
|
|
||||||
{TERMMOD, XK_F8, toggleimages, {.i = 0}},
|
|
||||||
{XK_ANY_MOD, XK_Break, sendbreak, {.i = 0}},
|
|
||||||
{ControlMask, XK_Print, toggleprinter, {.i = 0}},
|
|
||||||
{ShiftMask, XK_Print, printscreen, {.i = 0}},
|
|
||||||
{XK_ANY_MOD, XK_Print, printsel, {.i = 0}},
|
|
||||||
{TERMMOD, XK_C, clipcopy, {.i = 0}},
|
|
||||||
{TERMMOD, XK_V, clippaste, {.i = 0}},
|
|
||||||
{TERMMOD, XK_Y, selpaste, {.i = 0}},
|
|
||||||
{ShiftMask, XK_Page_Up, kscrollup, {.i = -1}},
|
|
||||||
{ShiftMask, XK_Page_Down, kscrolldown, {.i = -1}},
|
|
||||||
{ShiftMask, XK_Insert, selpaste, {.i = 0}},
|
|
||||||
{TERMMOD, XK_Num_Lock, numlock, {.i = 0}},
|
|
||||||
{TERMMOD, XK_plus, zoom, {.f = +1}},
|
|
||||||
{TERMMOD, XK_underscore, zoom, {.f = -1}},
|
|
||||||
{TERMMOD, XK_equal, zoomreset, {0}},
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Special keys (change & recompile st.info accordingly)
|
|
||||||
*
|
|
||||||
* Mask value:
|
|
||||||
* * Use XK_ANY_MOD to match the key no matter modifiers state
|
|
||||||
* * Use XK_NO_MOD to match the key alone (no modifiers)
|
|
||||||
* appkey value:
|
|
||||||
* * 0: no value
|
|
||||||
* * > 0: keypad application mode enabled
|
|
||||||
* * = 2: term.numlock = 1
|
|
||||||
* * < 0: keypad application mode disabled
|
|
||||||
* appcursor value:
|
|
||||||
* * 0: no value
|
|
||||||
* * > 0: cursor application mode enabled
|
|
||||||
* * < 0: cursor application mode disabled
|
|
||||||
*
|
|
||||||
* Be careful with the order of the definitions because st searches in
|
|
||||||
* this table sequentially, so any XK_ANY_MOD must be in the last
|
|
||||||
* position for a key.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If you want keys other than the X11 function keys (0xFD00 - 0xFFFF)
|
|
||||||
* to be mapped below, add them to this array.
|
|
||||||
*/
|
|
||||||
static KeySym mappedkeys[] = {-1};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* State bits to ignore when matching key or button events. By default,
|
|
||||||
* numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored.
|
|
||||||
*/
|
|
||||||
static uint ignoremod = Mod2Mask | XK_SWITCH_MOD;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is the huge key array which defines all compatibility to the Linux
|
|
||||||
* world. Please decide about changes wisely.
|
|
||||||
*/
|
|
||||||
static Key key[] = {
|
|
||||||
/* keysym mask string appkey appcursor */
|
|
||||||
{XK_KP_Home, ShiftMask, "\033[2J", 0, -1},
|
|
||||||
{XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1},
|
|
||||||
{XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1},
|
|
||||||
{XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1},
|
|
||||||
{XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0},
|
|
||||||
{XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1},
|
|
||||||
{XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1},
|
|
||||||
{XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0},
|
|
||||||
{XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1},
|
|
||||||
{XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1},
|
|
||||||
{XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0},
|
|
||||||
{XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1},
|
|
||||||
{XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1},
|
|
||||||
{XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0},
|
|
||||||
{XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1},
|
|
||||||
{XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1},
|
|
||||||
{XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0},
|
|
||||||
{XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0},
|
|
||||||
{XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0},
|
|
||||||
{XK_KP_End, ControlMask, "\033[J", -1, 0},
|
|
||||||
{XK_KP_End, ControlMask, "\033[1;5F", +1, 0},
|
|
||||||
{XK_KP_End, ShiftMask, "\033[K", -1, 0},
|
|
||||||
{XK_KP_End, ShiftMask, "\033[1;2F", +1, 0},
|
|
||||||
{XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0},
|
|
||||||
{XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0},
|
|
||||||
{XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0},
|
|
||||||
{XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0},
|
|
||||||
{XK_KP_Insert, ShiftMask, "\033[4l", -1, 0},
|
|
||||||
{XK_KP_Insert, ControlMask, "\033[L", -1, 0},
|
|
||||||
{XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0},
|
|
||||||
{XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0},
|
|
||||||
{XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0},
|
|
||||||
{XK_KP_Delete, ControlMask, "\033[M", -1, 0},
|
|
||||||
{XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0},
|
|
||||||
{XK_KP_Delete, ShiftMask, "\033[2K", -1, 0},
|
|
||||||
{XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0},
|
|
||||||
{XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0},
|
|
||||||
{XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0},
|
|
||||||
{XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0},
|
|
||||||
{XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0},
|
|
||||||
{XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0},
|
|
||||||
{XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0},
|
|
||||||
{XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0},
|
|
||||||
{XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0},
|
|
||||||
{XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0},
|
|
||||||
{XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0},
|
|
||||||
{XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0},
|
|
||||||
{XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0},
|
|
||||||
{XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0},
|
|
||||||
{XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0},
|
|
||||||
{XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0},
|
|
||||||
{XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0},
|
|
||||||
{XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0},
|
|
||||||
{XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0},
|
|
||||||
{XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0},
|
|
||||||
{XK_Up, ShiftMask, "\033[1;2A", 0, 0},
|
|
||||||
{XK_Up, Mod1Mask, "\033[1;3A", 0, 0},
|
|
||||||
{XK_Up, ShiftMask | Mod1Mask, "\033[1;4A", 0, 0},
|
|
||||||
{XK_Up, ControlMask, "\033[1;5A", 0, 0},
|
|
||||||
{XK_Up, ShiftMask | ControlMask, "\033[1;6A", 0, 0},
|
|
||||||
{XK_Up, ControlMask | Mod1Mask, "\033[1;7A", 0, 0},
|
|
||||||
{XK_Up, ShiftMask | ControlMask | Mod1Mask, "\033[1;8A", 0, 0},
|
|
||||||
{XK_Up, XK_ANY_MOD, "\033[A", 0, -1},
|
|
||||||
{XK_Up, XK_ANY_MOD, "\033OA", 0, +1},
|
|
||||||
{XK_Down, ShiftMask, "\033[1;2B", 0, 0},
|
|
||||||
{XK_Down, Mod1Mask, "\033[1;3B", 0, 0},
|
|
||||||
{XK_Down, ShiftMask | Mod1Mask, "\033[1;4B", 0, 0},
|
|
||||||
{XK_Down, ControlMask, "\033[1;5B", 0, 0},
|
|
||||||
{XK_Down, ShiftMask | ControlMask, "\033[1;6B", 0, 0},
|
|
||||||
{XK_Down, ControlMask | Mod1Mask, "\033[1;7B", 0, 0},
|
|
||||||
{XK_Down, ShiftMask | ControlMask | Mod1Mask, "\033[1;8B", 0, 0},
|
|
||||||
{XK_Down, XK_ANY_MOD, "\033[B", 0, -1},
|
|
||||||
{XK_Down, XK_ANY_MOD, "\033OB", 0, +1},
|
|
||||||
{XK_Left, ShiftMask, "\033[1;2D", 0, 0},
|
|
||||||
{XK_Left, Mod1Mask, "\033[1;3D", 0, 0},
|
|
||||||
{XK_Left, ShiftMask | Mod1Mask, "\033[1;4D", 0, 0},
|
|
||||||
{XK_Left, ControlMask, "\033[1;5D", 0, 0},
|
|
||||||
{XK_Left, ShiftMask | ControlMask, "\033[1;6D", 0, 0},
|
|
||||||
{XK_Left, ControlMask | Mod1Mask, "\033[1;7D", 0, 0},
|
|
||||||
{XK_Left, ShiftMask | ControlMask | Mod1Mask, "\033[1;8D", 0, 0},
|
|
||||||
{XK_Left, XK_ANY_MOD, "\033[D", 0, -1},
|
|
||||||
{XK_Left, XK_ANY_MOD, "\033OD", 0, +1},
|
|
||||||
{XK_Right, ShiftMask, "\033[1;2C", 0, 0},
|
|
||||||
{XK_Right, Mod1Mask, "\033[1;3C", 0, 0},
|
|
||||||
{XK_Right, ShiftMask | Mod1Mask, "\033[1;4C", 0, 0},
|
|
||||||
{XK_Right, ControlMask, "\033[1;5C", 0, 0},
|
|
||||||
{XK_Right, ShiftMask | ControlMask, "\033[1;6C", 0, 0},
|
|
||||||
{XK_Right, ControlMask | Mod1Mask, "\033[1;7C", 0, 0},
|
|
||||||
{XK_Right, ShiftMask | ControlMask | Mod1Mask, "\033[1;8C", 0, 0},
|
|
||||||
{XK_Right, XK_ANY_MOD, "\033[C", 0, -1},
|
|
||||||
{XK_Right, XK_ANY_MOD, "\033OC", 0, +1},
|
|
||||||
{XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0},
|
|
||||||
{XK_Return, Mod1Mask, "\033\r", 0, 0},
|
|
||||||
{XK_Return, XK_ANY_MOD, "\r", 0, 0},
|
|
||||||
{XK_Insert, ShiftMask, "\033[4l", -1, 0},
|
|
||||||
{XK_Insert, ShiftMask, "\033[2;2~", +1, 0},
|
|
||||||
{XK_Insert, ControlMask, "\033[L", -1, 0},
|
|
||||||
{XK_Insert, ControlMask, "\033[2;5~", +1, 0},
|
|
||||||
{XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0},
|
|
||||||
{XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0},
|
|
||||||
{XK_Delete, ControlMask, "\033[M", -1, 0},
|
|
||||||
{XK_Delete, ControlMask, "\033[3;5~", +1, 0},
|
|
||||||
{XK_Delete, ShiftMask, "\033[2K", -1, 0},
|
|
||||||
{XK_Delete, ShiftMask, "\033[3;2~", +1, 0},
|
|
||||||
{XK_Delete, XK_ANY_MOD, "\033[P", -1, 0},
|
|
||||||
{XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0},
|
|
||||||
{XK_BackSpace, XK_NO_MOD, "\177", 0, 0},
|
|
||||||
{XK_BackSpace, Mod1Mask, "\033\177", 0, 0},
|
|
||||||
{XK_Home, ShiftMask, "\033[2J", 0, -1},
|
|
||||||
{XK_Home, ShiftMask, "\033[1;2H", 0, +1},
|
|
||||||
{XK_Home, XK_ANY_MOD, "\033[H", 0, -1},
|
|
||||||
{XK_Home, XK_ANY_MOD, "\033[1~", 0, +1},
|
|
||||||
{XK_End, ControlMask, "\033[J", -1, 0},
|
|
||||||
{XK_End, ControlMask, "\033[1;5F", +1, 0},
|
|
||||||
{XK_End, ShiftMask, "\033[K", -1, 0},
|
|
||||||
{XK_End, ShiftMask, "\033[1;2F", +1, 0},
|
|
||||||
{XK_End, XK_ANY_MOD, "\033[4~", 0, 0},
|
|
||||||
{XK_Prior, ControlMask, "\033[5;5~", 0, 0},
|
|
||||||
{XK_Prior, ShiftMask, "\033[5;2~", 0, 0},
|
|
||||||
{XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0},
|
|
||||||
{XK_Next, ControlMask, "\033[6;5~", 0, 0},
|
|
||||||
{XK_Next, ShiftMask, "\033[6;2~", 0, 0},
|
|
||||||
{XK_Next, XK_ANY_MOD, "\033[6~", 0, 0},
|
|
||||||
{XK_F1, XK_NO_MOD, "\033OP", 0, 0},
|
|
||||||
{XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0},
|
|
||||||
{XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0},
|
|
||||||
{XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0},
|
|
||||||
{XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0},
|
|
||||||
{XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0},
|
|
||||||
{XK_F2, XK_NO_MOD, "\033OQ", 0, 0},
|
|
||||||
{XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0},
|
|
||||||
{XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0},
|
|
||||||
{XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0},
|
|
||||||
{XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0},
|
|
||||||
{XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0},
|
|
||||||
{XK_F3, XK_NO_MOD, "\033OR", 0, 0},
|
|
||||||
{XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0},
|
|
||||||
{XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0},
|
|
||||||
{XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0},
|
|
||||||
{XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0},
|
|
||||||
{XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0},
|
|
||||||
{XK_F4, XK_NO_MOD, "\033OS", 0, 0},
|
|
||||||
{XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0},
|
|
||||||
{XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0},
|
|
||||||
{XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0},
|
|
||||||
{XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0},
|
|
||||||
{XK_F5, XK_NO_MOD, "\033[15~", 0, 0},
|
|
||||||
{XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0},
|
|
||||||
{XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0},
|
|
||||||
{XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0},
|
|
||||||
{XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0},
|
|
||||||
{XK_F6, XK_NO_MOD, "\033[17~", 0, 0},
|
|
||||||
{XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0},
|
|
||||||
{XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0},
|
|
||||||
{XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0},
|
|
||||||
{XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0},
|
|
||||||
{XK_F7, XK_NO_MOD, "\033[18~", 0, 0},
|
|
||||||
{XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0},
|
|
||||||
{XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0},
|
|
||||||
{XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0},
|
|
||||||
{XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0},
|
|
||||||
{XK_F8, XK_NO_MOD, "\033[19~", 0, 0},
|
|
||||||
{XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0},
|
|
||||||
{XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0},
|
|
||||||
{XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0},
|
|
||||||
{XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0},
|
|
||||||
{XK_F9, XK_NO_MOD, "\033[20~", 0, 0},
|
|
||||||
{XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0},
|
|
||||||
{XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0},
|
|
||||||
{XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0},
|
|
||||||
{XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0},
|
|
||||||
{XK_F10, XK_NO_MOD, "\033[21~", 0, 0},
|
|
||||||
{XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0},
|
|
||||||
{XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0},
|
|
||||||
{XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0},
|
|
||||||
{XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0},
|
|
||||||
{XK_F11, XK_NO_MOD, "\033[23~", 0, 0},
|
|
||||||
{XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0},
|
|
||||||
{XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0},
|
|
||||||
{XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0},
|
|
||||||
{XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0},
|
|
||||||
{XK_F12, XK_NO_MOD, "\033[24~", 0, 0},
|
|
||||||
{XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0},
|
|
||||||
{XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0},
|
|
||||||
{XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0},
|
|
||||||
{XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0},
|
|
||||||
{XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0},
|
|
||||||
{XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0},
|
|
||||||
{XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0},
|
|
||||||
{XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0},
|
|
||||||
{XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0},
|
|
||||||
{XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0},
|
|
||||||
{XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0},
|
|
||||||
{XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0},
|
|
||||||
{XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0},
|
|
||||||
{XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0},
|
|
||||||
{XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0},
|
|
||||||
{XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0},
|
|
||||||
{XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0},
|
|
||||||
{XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0},
|
|
||||||
{XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0},
|
|
||||||
{XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0},
|
|
||||||
{XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0},
|
|
||||||
{XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0},
|
|
||||||
{XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0},
|
|
||||||
{XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0},
|
|
||||||
{XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0},
|
|
||||||
{XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0},
|
|
||||||
{XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0},
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Selection types' masks.
|
|
||||||
* Use the same masks as usual.
|
|
||||||
* Button1Mask is always unset, to make masks match between ButtonPress.
|
|
||||||
* ButtonRelease and MotionNotify.
|
|
||||||
* If no match is found, regular selection is used.
|
|
||||||
*/
|
|
||||||
static uint selmasks[] = {
|
|
||||||
[SEL_RECTANGULAR] = Mod1Mask,
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Printable characters in ASCII, used to estimate the advance width
|
|
||||||
* of single wide characters.
|
|
||||||
*/
|
|
||||||
static char ascii_printable[] = " !\"#$%&'()*+,-./0123456789:;<=>?"
|
|
||||||
"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
|
|
||||||
"`abcdefghijklmnopqrstuvwxyz{|}~";
|
|
Binary file not shown.
Binary file not shown.
BIN
.suckless/st/st
BIN
.suckless/st/st
Binary file not shown.
|
@ -1,220 +0,0 @@
|
||||||
/* See LICENSE for license details. */
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
/* macros */
|
|
||||||
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
|
||||||
#define MAX(a, b) ((a) < (b) ? (b) : (a))
|
|
||||||
#define LEN(a) (sizeof(a) / sizeof(a)[0])
|
|
||||||
#define BETWEEN(x, a, b) ((a) <= (x) && (x) <= (b))
|
|
||||||
#define DIVCEIL(n, d) (((n) + ((d) - 1)) / (d))
|
|
||||||
#define DEFAULT(a, b) (a) = (a) ? (a) : (b)
|
|
||||||
#define LIMIT(x, a, b) (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)
|
|
||||||
#define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || \
|
|
||||||
(a).bg != (b).bg || (a).decor != (b).decor)
|
|
||||||
#define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + \
|
|
||||||
(t1.tv_nsec-t2.tv_nsec)/1E6)
|
|
||||||
#define MODBIT(x, set, bit) ((set) ? ((x) |= (bit)) : ((x) &= ~(bit)))
|
|
||||||
|
|
||||||
#define TRUECOLOR(r,g,b) (1 << 24 | (r) << 16 | (g) << 8 | (b))
|
|
||||||
#define IS_TRUECOL(x) (1 << 24 & (x))
|
|
||||||
|
|
||||||
// This decor color indicates that the fg color should be used. Note that it's
|
|
||||||
// not a 24-bit color because the 25-th bit is not set.
|
|
||||||
#define DECOR_DEFAULT_COLOR 0x0ffffff
|
|
||||||
|
|
||||||
enum glyph_attribute {
|
|
||||||
ATTR_NULL = 0,
|
|
||||||
ATTR_BOLD = 1 << 0,
|
|
||||||
ATTR_FAINT = 1 << 1,
|
|
||||||
ATTR_ITALIC = 1 << 2,
|
|
||||||
ATTR_UNDERLINE = 1 << 3,
|
|
||||||
ATTR_BLINK = 1 << 4,
|
|
||||||
ATTR_REVERSE = 1 << 5,
|
|
||||||
ATTR_INVISIBLE = 1 << 6,
|
|
||||||
ATTR_STRUCK = 1 << 7,
|
|
||||||
ATTR_WRAP = 1 << 8,
|
|
||||||
ATTR_WIDE = 1 << 9,
|
|
||||||
ATTR_WDUMMY = 1 << 10,
|
|
||||||
ATTR_BOXDRAW = 1 << 11,
|
|
||||||
ATTR_BOLD_FAINT = ATTR_BOLD | ATTR_FAINT,
|
|
||||||
ATTR_IMAGE = 1 << 14,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum selection_mode {
|
|
||||||
SEL_IDLE = 0,
|
|
||||||
SEL_EMPTY = 1,
|
|
||||||
SEL_READY = 2
|
|
||||||
};
|
|
||||||
|
|
||||||
enum selection_type {
|
|
||||||
SEL_REGULAR = 1,
|
|
||||||
SEL_RECTANGULAR = 2
|
|
||||||
};
|
|
||||||
|
|
||||||
enum selection_snap {
|
|
||||||
SNAP_WORD = 1,
|
|
||||||
SNAP_LINE = 2
|
|
||||||
};
|
|
||||||
|
|
||||||
enum underline_style {
|
|
||||||
UNDERLINE_STRAIGHT = 1,
|
|
||||||
UNDERLINE_DOUBLE = 2,
|
|
||||||
UNDERLINE_CURLY = 3,
|
|
||||||
UNDERLINE_DOTTED = 4,
|
|
||||||
UNDERLINE_DASHED = 5,
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef unsigned char uchar;
|
|
||||||
typedef unsigned int uint;
|
|
||||||
typedef unsigned long ulong;
|
|
||||||
typedef unsigned short ushort;
|
|
||||||
|
|
||||||
typedef uint_least32_t Rune;
|
|
||||||
|
|
||||||
#define Glyph Glyph_
|
|
||||||
typedef struct {
|
|
||||||
Rune u; /* character code */
|
|
||||||
ushort mode; /* attribute flags */
|
|
||||||
uint32_t fg; /* foreground */
|
|
||||||
uint32_t bg; /* background */
|
|
||||||
uint32_t decor; /* decoration (like underline) */
|
|
||||||
} Glyph;
|
|
||||||
|
|
||||||
typedef Glyph *Line;
|
|
||||||
|
|
||||||
typedef union {
|
|
||||||
int i;
|
|
||||||
uint ui;
|
|
||||||
float f;
|
|
||||||
const void *v;
|
|
||||||
const char *s;
|
|
||||||
} Arg;
|
|
||||||
|
|
||||||
void die(const char *, ...);
|
|
||||||
void redraw(void);
|
|
||||||
void draw(void);
|
|
||||||
|
|
||||||
void kscrolldown(const Arg *);
|
|
||||||
void kscrollup(const Arg *);
|
|
||||||
void printscreen(const Arg *);
|
|
||||||
void printsel(const Arg *);
|
|
||||||
void sendbreak(const Arg *);
|
|
||||||
void toggleprinter(const Arg *);
|
|
||||||
|
|
||||||
int tattrset(int);
|
|
||||||
void tnew(int, int);
|
|
||||||
void tresize(int, int);
|
|
||||||
void tsetdirtattr(int);
|
|
||||||
void ttyhangup(void);
|
|
||||||
int ttynew(const char *, char *, const char *, char **);
|
|
||||||
size_t ttyread(void);
|
|
||||||
void ttyresize(int, int);
|
|
||||||
void ttywrite(const char *, size_t, int);
|
|
||||||
|
|
||||||
void resettitle(void);
|
|
||||||
|
|
||||||
void selclear(void);
|
|
||||||
void selinit(void);
|
|
||||||
void selstart(int, int, int);
|
|
||||||
void selextend(int, int, int, int);
|
|
||||||
int selected(int, int);
|
|
||||||
char *getsel(void);
|
|
||||||
|
|
||||||
Glyph getglyphat(int, int);
|
|
||||||
|
|
||||||
size_t utf8encode(Rune, char *);
|
|
||||||
|
|
||||||
void *xmalloc(size_t);
|
|
||||||
void *xrealloc(void *, size_t);
|
|
||||||
char *xstrdup(const char *);
|
|
||||||
|
|
||||||
int isboxdraw(Rune);
|
|
||||||
ushort boxdrawindex(const Glyph *);
|
|
||||||
#ifdef XFT_VERSION
|
|
||||||
/* only exposed to x.c, otherwise we'll need Xft.h for the types */
|
|
||||||
void boxdraw_xinit(Display *, Colormap, XftDraw *, Visual *);
|
|
||||||
void drawboxes(int, int, int, int, XftColor *, XftColor *, const XftGlyphFontSpec *, int);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* config.h globals */
|
|
||||||
extern char *utmp;
|
|
||||||
extern char *scroll;
|
|
||||||
extern char *stty_args;
|
|
||||||
extern char *vtiden;
|
|
||||||
extern wchar_t *worddelimiters;
|
|
||||||
extern int allowaltscreen;
|
|
||||||
extern int allowwindowops;
|
|
||||||
extern char *termname;
|
|
||||||
extern unsigned int tabspaces;
|
|
||||||
extern unsigned int defaultfg;
|
|
||||||
extern unsigned int defaultbg;
|
|
||||||
extern unsigned int defaultcs;
|
|
||||||
extern const int boxdraw, boxdraw_bold, boxdraw_braille;
|
|
||||||
|
|
||||||
// Accessors to decoration properties stored in `decor`.
|
|
||||||
// The 25-th bit is used to indicate if it's a 24-bit color.
|
|
||||||
static inline uint32_t tgetdecorcolor(Glyph *g) { return g->decor & 0x1ffffff; }
|
|
||||||
static inline uint32_t tgetdecorstyle(Glyph *g) { return (g->decor >> 25) & 0x7; }
|
|
||||||
static inline void tsetdecorcolor(Glyph *g, uint32_t color) {
|
|
||||||
g->decor = (g->decor & ~0x1ffffff) | (color & 0x1ffffff);
|
|
||||||
}
|
|
||||||
static inline void tsetdecorstyle(Glyph *g, uint32_t style) {
|
|
||||||
g->decor = (g->decor & ~(0x7 << 25)) | ((style & 0x7) << 25);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Some accessors to image placeholder properties stored in `u`:
|
|
||||||
// - row (1-base) - 9 bits
|
|
||||||
// - column (1-base) - 9 bits
|
|
||||||
// - most significant byte of the image id plus 1 - 9 bits (0 means unspecified,
|
|
||||||
// don't forget to subtract 1).
|
|
||||||
// - the original number of diacritics (0, 1, 2, or 3) - 2 bits
|
|
||||||
// - whether this is a classic (1) or Unicode (0) placeholder - 1 bit
|
|
||||||
static inline uint32_t tgetimgrow(Glyph *g) { return g->u & 0x1ff; }
|
|
||||||
static inline uint32_t tgetimgcol(Glyph *g) { return (g->u >> 9) & 0x1ff; }
|
|
||||||
static inline uint32_t tgetimgid4thbyteplus1(Glyph *g) { return (g->u >> 18) & 0x1ff; }
|
|
||||||
static inline uint32_t tgetimgdiacriticcount(Glyph *g) { return (g->u >> 27) & 0x3; }
|
|
||||||
static inline uint32_t tgetisclassicplaceholder(Glyph *g) { return (g->u >> 29) & 0x1; }
|
|
||||||
static inline void tsetimgrow(Glyph *g, uint32_t row) {
|
|
||||||
g->u = (g->u & ~0x1ff) | (row & 0x1ff);
|
|
||||||
}
|
|
||||||
static inline void tsetimgcol(Glyph *g, uint32_t col) {
|
|
||||||
g->u = (g->u & ~(0x1ff << 9)) | ((col & 0x1ff) << 9);
|
|
||||||
}
|
|
||||||
static inline void tsetimg4thbyteplus1(Glyph *g, uint32_t byteplus1) {
|
|
||||||
g->u = (g->u & ~(0x1ff << 18)) | ((byteplus1 & 0x1ff) << 18);
|
|
||||||
}
|
|
||||||
static inline void tsetimgdiacriticcount(Glyph *g, uint32_t count) {
|
|
||||||
g->u = (g->u & ~(0x3 << 27)) | ((count & 0x3) << 27);
|
|
||||||
}
|
|
||||||
static inline void tsetisclassicplaceholder(Glyph *g, uint32_t isclassic) {
|
|
||||||
g->u = (g->u & ~(0x1 << 29)) | ((isclassic & 0x1) << 29);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Returns the full image id. This is a naive implementation, if the most
|
|
||||||
/// significant byte is not specified, it's assumed to be 0 instead of inferring
|
|
||||||
/// it from the cells to the left.
|
|
||||||
static inline uint32_t tgetimgid(Glyph *g) {
|
|
||||||
uint32_t msb = tgetimgid4thbyteplus1(g);
|
|
||||||
if (msb != 0)
|
|
||||||
--msb;
|
|
||||||
return (msb << 24) | (g->fg & 0xFFFFFF);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Sets the full image id.
|
|
||||||
static inline void tsetimgid(Glyph *g, uint32_t id) {
|
|
||||||
g->fg = (id & 0xFFFFFF) | (1 << 24);
|
|
||||||
tsetimg4thbyteplus1(g, ((id >> 24) & 0xFF) + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline uint32_t tgetimgplacementid(Glyph *g) {
|
|
||||||
if (tgetdecorcolor(g) == DECOR_DEFAULT_COLOR)
|
|
||||||
return 0;
|
|
||||||
return g->decor & 0xFFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void tsetimgplacementid(Glyph *g, uint32_t id) {
|
|
||||||
g->decor = (id & 0xFFFFFF) | (1 << 24);
|
|
||||||
}
|
|
Binary file not shown.
BIN
.suckless/st/x.o
BIN
.suckless/st/x.o
Binary file not shown.
|
@ -1,7 +1,7 @@
|
||||||
/* See LICENSE file for copyright and license details. */
|
/* See LICENSE file for copyright and license details. */
|
||||||
/* Default settings; can be overriden by command line. */
|
/* Default settings; can be overriden by command line. */
|
||||||
|
|
||||||
static int topbar = 0; /* -b option; if 0, dmenu appears at bottom */
|
static int topbar = 1; /* -b option; if 0, dmenu appears at bottom */
|
||||||
/* -fn option overrides fonts[0]; default X11 font or font set */
|
/* -fn option overrides fonts[0]; default X11 font or font set */
|
||||||
static const char *fonts[] = {
|
static const char *fonts[] = {
|
||||||
"monospace:size=10"
|
"monospace:size=10"
|
Binary file not shown.
Binary file not shown.
|
@ -121,7 +121,7 @@ static Key keys[] = {
|
||||||
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
|
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
|
||||||
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
|
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
|
||||||
{ MODKEY|ShiftMask, XK_q, quit, {0} },
|
{ MODKEY|ShiftMask, XK_q, quit, {0} },
|
||||||
{ MODKEY, XK_b, spawn, SHCMD("mullvad-browser") },
|
{ MODKEY, XK_b, spawn, SHCMD("floorp") },
|
||||||
{ MODKEY, XK_m, togglebar, {0} },
|
{ MODKEY, XK_m, togglebar, {0} },
|
||||||
{ MODKEY, XK_o, incnmaster, {.i = +1 } },
|
{ MODKEY, XK_o, incnmaster, {.i = +1 } },
|
||||||
{ MODKEY, XK_Return, spawn, {.v = termcmd } },
|
{ MODKEY, XK_Return, spawn, {.v = termcmd } },
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 373 B After Width: | Height: | Size: 373 B |
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue