-
I want to make use of the universal scroll patch but it doesn't seem to work at all for me. /*
* This file contains patch control flags.
*
* In principle you should be able to mix and match any patches
* you may want. In cases where patches are logically incompatible
* one patch may take precedence over the other as noted in the
* relevant descriptions.
*/
/* Patches */
/* The alpha patch adds transparency for the terminal.
* You need to uncomment the corresponding line in config.mk to use the -lXrender library
* when including this patch.
* https://st.suckless.org/patches/alpha/
*/
#define ALPHA_PATCH 0
/* 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
* windows. This depends on the alpha patch.
* https://github.com/juliusHuelsmann/st-focus/
* https://st.suckless.org/patches/alpha_focus_highlight/
*/
#define ALPHA_FOCUS_HIGHLIGHT_PATCH 0
/* Adds gradient transparency to st, depends on the alpha patch.
* https://st.suckless.org/patches/gradient/
*/
#define ALPHA_GRADIENT_PATCH 0
/* This patch allows st to reize to any pixel size rather than snapping to character width/height.
* https://st.suckless.org/patches/anysize/
*/
#define ANYSIZE_PATCH 0
/* This patch aims to prevent black bars being drawn on the edges of st terminals using the anysize
* patch. This generally only occurs when the terminal background color doesn't match the colors
* set in st's config.h file, for example when using terminal theming scripts such as base16.
* (I have not found this to be working, but adding for reference. May reduce flickering on
* terminal resizes.)
* https://github.com/connor-brooks/st-anysize-nobar
*/
#define ANYSIZE_NOBAR_PATCH 0
/* A simple variant of the anysize patch that only changes the resize hints to allow the window to
* be resized to any size.
*/
#define ANYSIZE_SIMPLE_PATCH 0
/* This patch allows the use of a blinking cursor.
* Only cursor styles 0, 1, 3, 5, and 7 blink. Set cursorstyle accordingly.
* Cursor styles are defined here:
* https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h4-Functions-using-CSI-_-ordered-by-the-final-character-lparen-s-rparen:CSI-Ps-SP-q.1D81
* https://st.suckless.org/patches/blinking_cursor/
*/
#define BLINKING_CURSOR_PATCH 0
/* By default bold text is rendered with a bold font in the bright variant of the current color.
* This patch makes bold text rendered simply as bold, leaving the color unaffected.
* https://st.suckless.org/patches/bold-is-not-bright/
*/
#define BOLD_IS_NOT_BRIGHT_PATCH 0
/* This patch adds custom rendering of lines/blocks/braille characters for gapless alignment.
* https://st.suckless.org/patches/boxdraw/
*/
#define BOXDRAW_PATCH 0
/* By default st only sets PRIMARY on selection.
* This patch makes st set CLIPBOARD on selection.
* https://st.suckless.org/patches/clipboard/
*/
#define CLIPBOARD_PATCH 0
/* This patch allows st to be resized without cutting off text when the terminal window is
* made larger again. Text does not wrap when the terminal window is made smaller.
*
* The vim browse patch takes precedence over this patch.
*
* https://github.com/bakkeby/st-flexipatch/issues/34
*/
#define COLUMNS_PATCH 0
/* Select and copy the last URL displayed with Mod+l. Multiple invocations cycle through the
* available URLs.
* https://st.suckless.org/patches/copyurl/
*/
#define COPYURL_PATCH 0
/* Select and copy the last URL displayed with Mod+l. Multiple invocations cycle through the
* available URLs. This variant also highlights the selected URLs.
* https://st.suckless.org/patches/copyurl/
*/
#define COPYURL_HIGHLIGHT_SELECTED_URLS_PATCH 0
/* This patch adds support for CSI escape sequences 22 and 23, which save and
* restores the window title (for instance nvim does this when opening and closing).
* https://st.suckless.org/patches/csi_22_23/
*/
#define CSI_22_23_PATCH 0
/* According to the specification (see link in BLINKING_CURSOR_PATCH) the "Set cursor style
* (DECSCUSR), VT520." escape sequences define both values of 0 and 1 as a blinking block,
* with 1 being the default.
*
* This patch allows the default cursor to be set when value 0 is used, as opposed to
* setting the cursor to a blinking block.
*
* This allows a command like this to restore the cursor to what st is configured with:
* $ echo -ne "\e[ q"
*
* While many terminal emulators do this it is not adhering to specification. xterm is an
* example terminal that sets a blinking block instead of the configured one, same as st.
*/
#define DEFAULT_CURSOR_PATCH 0
/* Return BS on pressing backspace and DEL on pressing the delete key.
* https://st.suckless.org/patches/delkey/
*/
#define DELKEY_PATCH 0
/* This patch adds the option of disabling bold fonts globally.
* https://st.suckless.org/patches/disable_bold_italic_fonts/
*/
#define DISABLE_BOLD_FONTS_PATCH 0
/* This patch adds the option of disabling italic fonts globally.
* https://st.suckless.org/patches/disable_bold_italic_fonts/
*/
#define DISABLE_ITALIC_FONTS_PATCH 0
/* This patch adds the option of disabling roman fonts globally.
* https://st.suckless.org/patches/disable_bold_italic_fonts/
*/
#define DISABLE_ROMAN_FONTS_PATCH 0
/* This patch makes the cursor color the inverse of the current cell color.
* https://st.suckless.org/patches/dynamic-cursor-color/
*/
#define DYNAMIC_CURSOR_COLOR_PATCH 0
/* Reading and writing st's screen through a pipe, e.g. pass info to dmenu.
* https://st.suckless.org/patches/externalpipe/
*/
#define EXTERNALPIPE_PATCH 0
/* This patch improves and extends the externalpipe patch in two ways:
* - it prevents the reset of the signal handler set on SIGCHILD, when
* the forked process that executes the external process exits and
* - it adds the externalpipein function to redirect the standard output
* of the external command to the slave size of the pty, that is, as if
* the external program had been manually executed on the terminal
*
* It can be used to send desired escape sequences to the terminal with a
* keyboard shortcut. The patch was created to make use of the dynamic-colors
* tool that uses the OSC escape sequences to change the colors of the terminal.
*
* This patch depends on EXTERNALPIPE_PATCH being enabled.
*
* https://github.com/sos4nt/dynamic-colors
* https://lists.suckless.org/hackers/2004/17218.html
*/
#define EXTERNALPIPEIN_PATCH 0
/* This patch allows command line applications to use all the fancy key combinations
* that are available to GUI applications.
* https://st.suckless.org/patches/fix_keyboard_input/
*/
#define FIXKEYBOARDINPUT_PATCH 0
/* 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.
* This patch append fonts defined in font2 variable to the beginning of the font cache.
* So they will be used first for glyphs that are absent in the default font.
* https://st.suckless.org/patches/font2/
*/
#define FONT2_PATCH 1
/* Hide the X cursor whenever a key is pressed and show it back when the mouse is moved in
* the terminal window.
* https://st.suckless.org/patches/hidecursor/
*/
#define HIDECURSOR_PATCH 0
/* This patch hides the terminal cursor when the window loses focus (as opposed to showing a hollow
* cursor).
* https://www.reddit.com/r/suckless/comments/nvee8h/how_to_hide_cursor_in_st_is_there_a_patch_for_it/
*/
#define HIDE_TERMINAL_CURSOR_PATCH 0
/* This patch adds a keybinding that lets you invert the current colorscheme of st.
* This provides a simple way to temporarily switch to a light colorscheme if you use a dark
* colorscheme or visa-versa.
* https://st.suckless.org/patches/invert/
*/
#define INVERT_PATCH 0
/* Pressing the default binding Ctrl+Shift-i will popup dmenu, asking you to enter a unicode
* codepoint that will be converted to a glyph and then pushed to st.
* https://st.suckless.org/patches/iso14755/
*/
#define ISO14755_PATCH 0
/* This patch allows you to select text on the terminal using keyboard shortcuts.
* https://st.suckless.org/patches/keyboard_select/
*/
#define KEYBOARDSELECT_PATCH 0
/* 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.
* This patch depends on the Harfbuzz library and headers to compile.
* You need to uncomment the corresponding lines in config.mk to use the harfbuzz library
* when including this patch.
* https://github.com/cog1to/st-ligatures
* https://st.suckless.org/patches/ligatures/
*/
#define LIGATURES_PATCH 0
/* 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.
* https://www.reddit.com/r/suckless/comments/ixbx6z/how_to_use_black_and_white_only_for_st/
*/
#define MONOCHROME_PATCH 0
/* This patch sets the _NET_WM_ICON X property with a hardcoded icon for st.
* https://st.suckless.org/patches/netwmicon/
*/
#define NETWMICON_PATCH 0
/* This patch allows you to spawn a new st terminal using Ctrl-Shift-Return. It will have the
* same CWD (current working directory) as the original st instance.
* https://st.suckless.org/patches/newterm/
*/
#define NEWTERM_PATCH 0
/* Open contents of the clipboard in a user-defined browser.
* https://st.suckless.org/patches/open_copied_url/
*/
#define OPENCOPIED_PATCH 0
/* This patch allows for URLs to be opened directly when you click on them. This may not work with
* all terminal applications.
*
* https://www.reddit.com/r/suckless/comments/cc83om/st_open_url/
*/
#define OPENURLONCLICK_PATCH 0
/* This patch adds support for OSC escape sequences 10, 11 and 12 that modify the background,
* foreground and cursor colors in the way they are implemented in most other terminals
* (e.g libvte, kitty). Specifically it differs from https://st.suckless.org/patches/osc_10_11_12/
* in that it treats the background and foreground colors as distinct from palette colours
* 01 and 07 in order to facilitate the use of theme setting scripts like theme.sh
* (https://github.com/lemnos/theme.sh) which expect these colours to be distinct.
* https://st.suckless.org/patches/osc_10_11_12_2/
*/
#define OSC_10_11_12_2_PATCH 0
/* This patch allows you to specify a border that is relative in size to the width of a cell
* in the terminal.
* https://st.suckless.org/patches/relativeborder/
*/
#define RELATIVEBORDER_PATCH 0
/* This patch allows you to right-click on some selected text to send it to the plumbing
* program of choice, e.g. open a file, view an image, open a URL.
* https://st.suckless.org/patches/right_click_to_plumb/
*/
#define RIGHTCLICKTOPLUMB_PATCH 0
/* Scroll back through terminal output using Shift+{PageUp, PageDown}.
* https://st.suckless.org/patches/scrollback/
*/
#define SCROLLBACK_PATCH 0
/* Scroll back through terminal output using Shift+MouseWheel.
* This variant depends on SCROLLBACK_PATCH being enabled.
* https://st.suckless.org/patches/scrollback/
*/
#define SCROLLBACK_MOUSE_PATCH 0
/* Scroll back through terminal output using mouse wheel (when not in MODE_ALTSCREEN).
* This variant depends on SCROLLBACK_PATCH being enabled.
* https://st.suckless.org/patches/scrollback/
*/
#define SCROLLBACK_MOUSE_ALTSCREEN_PATCH 0
/* This is the single drawable buffer patch as outlined in the FAQ to get images
* in w3m to display. While this patch does not break the alpha patch it images
* are not shown in w3m if the alpha patch is applied.
*/
#define SINGLE_DRAWABLE_BUFFER_PATCH 0
/* This patch adds SIXEL graphics support for st.
* Note that patch/sixel.c/sixel_hls.c come from mintty, licensed under GPL.
* Known issues:
* - Rendering sixel graphics may cause unusual cursor placement, this is
* not specific to this variant of st - the same issue is present in
* the xterm implementation. This is likely an issue of sixel height
* not being detected correctly.
* - If combined with the alpha patch sixel graphics disappear (become white)
* when transparent and rendered against a white background. This is believed
* to be related to how the sixel graphics use RGB colors instead of RGBA.
* A pull request or instructions for how to properly add alpha support for
* sixel graphics would be very welcome.
*
* Note that you need to uncomment the corresponding lines in config.mk when including this patch.
*
* https://gist.github.com/saitoha/70e0fdf22e3e8f63ce937c7f7da71809
*/
#define SIXEL_PATCH 0
/* 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:
*
* $ surf -e $WINDOWID
*
* The behavior is similar to Plan 9 where applications can take over windows.
* URL TBC
*/
#define ST_EMBEDDER_PATCH 0
/* Use inverted defaultbg/fg for selection when bg/fg are the same.
* https://st.suckless.org/patches/spoiler/
*/
#define SPOILER_PATCH 0
/* This patch changes the mouse shape to the global default when the running program subscribes
* for mouse events, for instance, in programs like ranger and fzf. It emulates the behaviour
* shown by vte terminals like termite.
* https://st.suckless.org/patches/swapmouse/
*/
#define SWAPMOUSE_PATCH 0
/* This patch adds synchronized-updates/application-sync support in st.
* This will have no effect except when an application uses the synchronized-update escape
* sequences. With this patch nearly all cursor flicker is eliminated in tmux, and tmux detects
* it automatically via terminfo.
*
* Note: this patch alters st.info to promote support for extra escape sequences, which can
* potentially cause application misbehaviour if you do not use this patch. Try removing or
* commenting out the corresponding line in st.info if this is causing issues.
*
* https://st.suckless.org/patches/sync/
*/
#define SYNC_PATCH 0
/* Instead of a default X cursor, use the xterm cursor from your cursor theme.
* You need to uncomment the corresponding line in config.mk to use the -lXcursor library
* when including this patch.
* https://st.suckless.org/patches/themed_cursor/
*/
#define THEMED_CURSOR_PATCH 0
/* Adds support for special underlines.
*
* Example test command:
* $ echo -e "\e[4:3m\e[58:5:10munderline\e[0m"
* ^ ^ ^ ^ ^- sets terminal color 10
* | | | \- indicates that terminal colors should be used
* | | \- indicates that underline color is being set
* | \- sets underline style to curvy
* \- set underline
*
* Note: this patch alters st.info to promote support for extra escape sequences, which can
* potentially cause application misbehaviour if you do not use this patch. Try removing or
* commenting out the corresponding line in st.info if this is causing issues.
*
* https://st.suckless.org/patches/undercurl/
*/
#define UNDERCURL_PATCH 0
/* Allows mouse scroll without modifier keys for regardless of alt screen using the external
* scroll program.
* https://st.suckless.org/patches/universcroll/
*/
#define UNIVERSCROLL_PATCH 1
/* Vertically center lines in the space available if you have set a larger chscale in config.h
* https://st.suckless.org/patches/vertcenter/
*/
#define VERTCENTER_PATCH 0
/* The vim-browse patch offers the possibility to move through the terminal history-buffer,
* search for strings using VIM-like motions, operations and quantifiers. It overlays the
* screen with highlighted search results and displays the current operation / motions / search
* string in the bottom right corner.
*
* https://github.com/juliusHuelsmann/st-history-vim
* https://st.suckless.org/patches/vim_browse/
*/
#define VIM_BROWSE_PATCH 0
/* Briefly inverts window content on terminal bell event.
* https://st.suckless.org/patches/visualbell/
*/
#define VISUALBELL_1_PATCH 0
/* Adds support for w3m images.
* https://st.suckless.org/patches/w3m/
*/
#define W3M_PATCH 0
/* Adds proper glyphs rendering in st allowing wide glyphs to be drawn as-is as opposed to
* smaller or cut glyphs being rendered.
* https://github.com/Dreomite/st/commit/e3b821dcb3511d60341dec35ee05a4a0abfef7f2
* https://www.reddit.com/r/suckless/comments/jt90ai/update_support_for_proper_glyph_rendering_in_st/
*/
#define WIDE_GLYPHS_PATCH 0
/* There is a known issue that Google's Variable Fonts (VF) can end up with letter spacing
* that is too wide in programs that use Xft, for example Inconsolata v3.000.
*
* This is intended as a temporary patch / hack until (if) this is fixed in the Xft library
* itself.
*
* https://github.com/googlefonts/Inconsolata/issues/42#issuecomment-737508890
*/
#define WIDE_GLYPH_SPACING_PATCH 0
/* This patch allows user to specify the initial path st should use as the working directory.
* https://st.suckless.org/patches/workingdir/
*/
#define WORKINGDIR_PATCH 0
/* This patch adds the ability to configure st via Xresources. At startup, st will read and
* apply the resources named in the resources[] array in config.h.
* https://st.suckless.org/patches/xresources/
*/
#define XRESOURCES_PATCH 1
/* This patch adds the ability to reload the Xresources config when a SIGUSR1 signal is received
* e.g.: killall -USR1 st
* Depends on the XRESOURCES_PATCH.
*/
#define XRESOURCES_RELOAD_PATCH 0 and /* See LICENSE file for copyright and license details. */
/*
* appearance
*
* font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
*/
//static char *font = "Liberation Mono:pixelsize=26:antialias=true:autohint=true";
static char *font = "UbuntuMono:pixelsize=30:antialias=true:autohint=true";
#if FONT2_PATCH
/* Spare fonts */
static char *font2[] = {
"Ubuntu Mono derivative Powerline:pixelsize=30:antialias=true:autohint=true",
//"Inconsolata for Powerline:pixelsize=28:antialias=true:autohint=true",
"Hack Nerd Font Mono:pixelsize=26:antialias=true:autohint=true",
};
#endif // FONT2_PATCH
#if RELATIVEBORDER_PATCH
/* borderperc: percentage of cell width to use as a border
* 0 = no border, 100 = border width is same as cell width */
int borderperc = 20;
#else
static int borderpx = 2;
#endif // RELATIVEBORDER_PATCH
#if OPENURLONCLICK_PATCH
static char *url_opener = "xdg-open";
#endif // OPENURLONCLICK_PATCH
/*
* 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 = "/bin/sh";
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 */
#if SIXEL_PATCH
char *vtiden = "\033[?12;4c";
#else
char *vtiden = "\033[?6c";
#endif
/* Kerning / character bounding-box multipliers */
static float cwscale = 1.0;
static float chscale = 1.0;
/*
* 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 = 8;
static double maxlatency = 33;
#if SYNC_PATCH
/*
* Synchronized-Update timeout in ms
* https://gitlab.com/gnachman/iterm2/-/wikis/synchronized-updates-spec
*/
static uint su_timeout = 200;
#endif // SYNC_PATCH
/*
* blinking timeout (set to 0 to disable blinking) for the terminal blinking
* attribute.
*/
static unsigned int blinktimeout = 800;
/*
* thickness of underline and bar cursors
*/
static unsigned int cursorthickness = 2;
#if BOXDRAW_PATCH
/*
* 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 = 0;
const int boxdraw_bold = 0;
/* braille (U28XX): 1: render as adjacent "pixels", 0: use font */
const int boxdraw_braille = 0;
#endif // BOXDRAW_PATCH
/*
* 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-256color";
/*
* 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;
#if ALPHA_PATCH
/* bg opacity */
float alpha = 10;
#if ALPHA_GRADIENT_PATCH
float grad_alpha = 0.54; //alpha value that'll change
float stat_alpha = 0.46; //constant alpha value that'll get added to grad_alpha
#endif // ALPHA_GRADIENT_PATCH
#if ALPHA_FOCUS_HIGHLIGHT_PATCH
float alphaUnfocused = 0.6;
#endif // ALPHA_FOCUS_HIGHLIGHT_PATCH
#endif // ALPHA_PATCH
/* 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 */
"#add8e6", /* 256 -> cursor */
"#555555", /* 257 -> rev cursor*/
"#000000", /* 258 -> bg */
"#e5e5e5", /* 259 -> fg */
};
/*
* Default colors (colorname index)
* foreground, background, cursor, reverse cursor
*/
#if ALPHA_PATCH && ALPHA_FOCUS_HIGHLIGHT_PATCH
unsigned int defaultbg = 258;
unsigned int bg = 258, bgUnfocused = 258;
#else
unsigned int defaultbg = 258;
#endif // ALPHA_FOCUS_HIGHLIGHT_PATCH
unsigned int defaultfg = 259;
unsigned int defaultcs = 256;
unsigned int defaultrcs = 257;
#if VIM_BROWSE_PATCH
unsigned int const currentBg = 6, buffSize = 2048;
/// Enable double / triple click yanking / selection of word / line.
int const mouseYank = 1, mouseSelect = 0;
/// [Vim Browse] Colors for search results currently on screen.
unsigned int const highlightBg = 160, highlightFg = 15;
char const wDelS[] = "!\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~", wDelL[] = " \t";
char *nmKeys [] = { ///< Shortcusts executed in normal mode
"R/Building\nN", "r/Building\n", "X/juli@machine\nN", "x/juli@machine\n",
"Q?[Leaving vim, starting execution]\n","F/: error:\nN", "f/: error:\n", "DQf"
};
unsigned int const amountNmKeys = sizeof(nmKeys) / sizeof(*nmKeys);
/// Style of the {command, search} string shown in the right corner (y,v,V,/)
Glyph styleSearch = {' ', ATTR_ITALIC | ATTR_BOLD_FAINT, 7, 16};
Glyph style[] = {{' ',ATTR_ITALIC|ATTR_FAINT,15,16}, {' ',ATTR_ITALIC,232,11},
{' ', ATTR_ITALIC, 232, 4}, {' ', ATTR_ITALIC, 232, 12}};
#endif // VIM_BROWSE_PATCH
#if BLINKING_CURSOR_PATCH
/*
* https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h4-Functions-using-CSI-_-ordered-by-the-final-character-lparen-s-rparen:CSI-Ps-SP-q.1D81
* Default style of cursor
* 0: Blinking block
* 1: Blinking block (default)
* 2: Steady block ("â–ˆ")
* 3: Blinking underline
* 4: Steady underline ("_")
* 5: Blinking bar
* 6: Steady bar ("|")
* 7: Blinking st cursor
* 8: Steady st cursor
*/
static unsigned int cursorstyle = 1;
static Rune stcursor = 0x2603; /* snowman (U+2603) */
#else
/*
* Default shape of cursor
* 2: Block ("█")
* 4: Underline ("_")
* 6: Bar ("|")
* 7: Snowman ("☃")
*/
static unsigned int cursorshape = 2;
#endif // BLINKING_CURSOR_PATCH
/*
* Default columns and rows numbers
*/
static unsigned int cols = 80;
static unsigned int rows = 24;
#if THEMED_CURSOR_PATCH
/*
* Default shape of the mouse cursor
*/
static char* mouseshape = "xterm";
#else
/*
* Default colour and shape of the mouse cursor
*/
static unsigned int mouseshape = XC_xterm;
static unsigned int mousefg = 7;
static unsigned int mousebg = 0;
#endif // THEMED_CURSOR_PATCH
/*
* Color used to display font attributes when fontconfig selected a font which
* doesn't match the ones requested.
*/
static unsigned int defaultattr = 11;
#if XRESOURCES_PATCH
/*
* Xresources preferences to load at startup
*/
ResourcePref resources[] = {
{ "font", STRING, &font },
{ "color0", STRING, &colorname[0] },
{ "color1", STRING, &colorname[1] },
{ "color2", STRING, &colorname[2] },
{ "color3", STRING, &colorname[3] },
{ "color4", STRING, &colorname[4] },
{ "color5", STRING, &colorname[5] },
{ "color6", STRING, &colorname[6] },
{ "color7", STRING, &colorname[7] },
{ "color8", STRING, &colorname[8] },
{ "color9", STRING, &colorname[9] },
{ "color10", STRING, &colorname[10] },
{ "color11", STRING, &colorname[11] },
{ "color12", STRING, &colorname[12] },
{ "color13", STRING, &colorname[13] },
{ "color14", STRING, &colorname[14] },
{ "color15", STRING, &colorname[15] },
{ "background", STRING, &colorname[258] },
{ "foreground", STRING, &colorname[259] },
{ "cursorColor", STRING, &colorname[256] },
{ "termname", STRING, &termname },
{ "shell", STRING, &shell },
{ "minlatency", INTEGER, &minlatency },
{ "maxlatency", INTEGER, &maxlatency },
{ "blinktimeout", INTEGER, &blinktimeout },
{ "bellvolume", INTEGER, &bellvolume },
{ "tabspaces", INTEGER, &tabspaces },
#if RELATIVEBORDER_PATCH
{ "borderperc", INTEGER, &borderperc },
#else
{ "borderpx", INTEGER, &borderpx },
#endif // RELATIVEBORDER_PATCH
{ "cwscale", FLOAT, &cwscale },
{ "chscale", FLOAT, &chscale },
#if ALPHA_PATCH
{ "alpha", FLOAT, &alpha },
#endif // ALPHA_PATCH
#if ALPHA_FOCUS_HIGHLIGHT_PATCH
{ "alphaUnfocused",FLOAT, &alphaUnfocused },
#endif // ALPHA_FOCUS_HIGHLIGHT_PATCH
};
#endif // XRESOURCES_PATCH
/*
* 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 mouse shortcuts.
* Beware that overloading Button1 will disable the selection.
*/
static MouseShortcut mshortcuts[] = {
#if UNIVERSCROLL_PATCH
/* mask button function argument release alt */
#else
/* mask button function argument release */
#endif // UNIVERSCROLL_PATCH
#if CLIPBOARD_PATCH
{ XK_ANY_MOD, Button2, clippaste, {.i = 0}, 1 },
#else
{ XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 },
#endif // CLIPBOARD_PATCH
#if SCROLLBACK_MOUSE_PATCH
{ ShiftMask, Button4, kscrollup, {.i = 1} },
{ ShiftMask, Button5, kscrolldown, {.i = 1} },
#elif UNIVERSCROLL_PATCH
{ XK_ANY_MOD, Button4, ttysend, {.s = "\033[5;2~"}, 0, -1 },
{ XK_ANY_MOD, Button5, ttysend, {.s = "\033[6;2~"}, 0, -1 },
#else
{ ShiftMask, Button4, ttysend, {.s = "\033[5;2~"} },
{ ShiftMask, Button5, ttysend, {.s = "\033[6;2~"} },
#endif // SCROLLBACK_MOUSE_PATCH
#if SCROLLBACK_MOUSE_ALTSCREEN_PATCH
{ XK_NO_MOD, Button4, kscrollup, {.i = 1} },
{ XK_NO_MOD, Button5, kscrolldown, {.i = 1} },
#else
{ XK_ANY_MOD, Button4, ttysend, {.s = "\031"} },
{ XK_ANY_MOD, Button5, ttysend, {.s = "\005"} },
#endif // SCROLLBACK_MOUSE_ALTSCREEN_PATCH
};
#if SCROLLBACK_MOUSE_ALTSCREEN_PATCH
static MouseShortcut maltshortcuts[] = {
/* mask button function argument release */
#if CLIPBOARD_PATCH
{ XK_ANY_MOD, Button2, clippaste, {.i = 0}, 1 },
#else
{ XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 },
#endif // CLIPBOARD_PATCH
{ XK_ANY_MOD, Button4, ttysend, {.s = "\031"} },
{ XK_ANY_MOD, Button5, ttysend, {.s = "\005"} },
};
#endif // SCROLLBACK_MOUSE_ALTSCREEN_PATCH
/* Internal keyboard shortcuts. */
#define MODKEY Mod1Mask
#define TERMMOD (ControlMask|ShiftMask)
#if EXTERNALPIPE_PATCH // example command
static char *openurlcmd[] = { "/bin/sh", "-c",
"xurls | dmenu -l 10 -w $WINDOWID | xargs -r open",
"externalpipe", NULL };
#endif // EXTERNALPIPE_PATCH
static Shortcut shortcuts[] = {
/* mask keysym function argument */
{ 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_Prior, zoom, {.f = +1} },
{ TERMMOD, XK_Next, zoom, {.f = -1} },
{ TERMMOD, XK_Home, zoomreset, {.f = 0} },
{ TERMMOD, XK_C, clipcopy, {.i = 0} },
{ TERMMOD, XK_V, clippaste, {.i = 0} },
#if SCROLLBACK_PATCH
{ ShiftMask, XK_Page_Up, kscrollup, {.i = -1} },
{ ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} },
#endif // SCROLLBACK_PATCH
#if CLIPBOARD_PATCH
{ TERMMOD, XK_Y, clippaste, {.i = 0} },
{ ShiftMask, XK_Insert, clippaste, {.i = 0} },
#else
{ TERMMOD, XK_Y, selpaste, {.i = 0} },
{ ShiftMask, XK_Insert, selpaste, {.i = 0} },
#endif // CLIPBOARD_PATCH
{ TERMMOD, XK_Num_Lock, numlock, {.i = 0} },
#if COPYURL_PATCH || COPYURL_HIGHLIGHT_SELECTED_URLS_PATCH
{ MODKEY, XK_l, copyurl, {.i = 0} },
#endif // COPYURL_PATCH
#if OPENCOPIED_PATCH
{ MODKEY, XK_o, opencopied, {.v = "xdg-open"} },
#endif // OPENCOPIED_PATCH
#if NEWTERM_PATCH
{ TERMMOD, XK_Return, newterm, {.i = 0} },
#endif // NEWTERM_PATCH
#if EXTERNALPIPE_PATCH
{ TERMMOD, XK_U, externalpipe, { .v = openurlcmd } },
#endif // EXTERNALPIPE_PATCH
#if KEYBOARDSELECT_PATCH
{ TERMMOD, XK_Escape, keyboard_select, { 0 } },
#endif // KEYBOARDSELECT_PATCH
#if ISO14755_PATCH
{ TERMMOD, XK_I, iso14755, {.i = 0} },
#endif // ISO14755_PATCH
#if INVERT_PATCH
{ TERMMOD, XK_X, invert, { 0 } },
#endif // INVERT_PATCH
#if VIM_BROWSE_PATCH
{ MODKEY, XK_c, normalMode, {.i = 0} },
#endif // VIM_BROWSE_PATCH
};
/*
* 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 !FIXKEYBOARDINPUT_PATCH
/*
* 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 };
#endif // FIXKEYBOARDINPUT_PATCH
/*
* 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;
#if !FIXKEYBOARDINPUT_PATCH
/*
* 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},
#if DELKEY_PATCH
{ XK_KP_Delete, XK_ANY_MOD, "\033[3~", -1, 0},
#else
{ XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0},
#endif // DELKEY_PATCH
{ 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},
#if DELKEY_PATCH
{ XK_Delete, XK_ANY_MOD, "\033[3~", -1, 0},
#else
{ XK_Delete, XK_ANY_MOD, "\033[P", -1, 0},
#endif // DELKEY_PATCH
{ 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},
};
#endif // FIXKEYBOARDINPUT_PATCH
/*
* 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{|}~";
#if RIGHTCLICKTOPLUMB_PATCH
/*
* plumb_cmd is run on mouse button 3 click, with argument set to
* current selection and with cwd set to the cwd of the active shell
*/
static char *plumb_cmd = "plumb";
#endif // RIGHTCLICKTOPLUMB_PATCH
#if UNDERCURL_PATCH
/**
* Undercurl style. Set UNDERCURL_STYLE to one of the available styles.
*
* Curly: Dunno how to draw it *shrug*
* _ _ _ _
* ( ) ( ) ( ) ( )
* (_) (_) (_) (_)
*
* Spiky:
* /\ /\ /\ /\
* \/ \/ \/
*
* Capped:
* _ _ _
* / \ / \ / \
* \_/ \_/
*/
// Available styles
#define UNDERCURL_CURLY 0
#define UNDERCURL_SPIKY 1
#define UNDERCURL_CAPPED 2
// Active style
#define UNDERCURL_STYLE UNDERCURL_SPIKY
#endif // UNDERCURL_PATCH |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
So you have these patches enabled: #define FONT2_PATCH 1
#define UNIVERSCROLL_PATCH 1
#define XRESOURCES_PATCH 1 The https://st.suckless.org/patches/universcroll/ patch doesn't actually handle any scrolling on its own, the intention I believe is just to make changes so that the mouse scroll wheel will scroll up and down regardless of whether you are in the main terminal or the alt screen (e.g. within less). The patch assumes that you have the standalone scroll program installed and that you have this config set to "scroll". /* scroll program: to enable use a string like "scroll" */
char *scroll = NULL; An alternative would be to enable the scrollback patch. #define SCROLLBACK_PATCH 0
#define SCROLLBACK_MOUSE_ALTSCREEN_PATCH 0 |
Beta Was this translation helpful? Give feedback.
So you have these patches enabled:
The https://st.suckless.org/patches/universcroll/ patch doesn't actually handle any scrolling on its own, the intention I believe is just to make changes so that the mouse scroll wheel will scroll up and down regardless of whether you are in the main terminal or the alt screen (e.g. within less).
The patch assumes that you have the standalone scroll program installed and that you have this config set to "scroll".
An alternative would be to enable the scrollback patch.