aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* always use inverse cursorHEADmasterlonkaars2024-03-06
|
* use Hiragino W3 instead of W6 to display Japanese characterslonkaars2024-03-02
|
* update config + clean up repolonkaars2024-03-02
|
* add w3m patchlonkaars2022-12-24
|
* support w3m imagesAvi Halachmi (:avih)2022-12-24
| | | | | | | | | | | | | | | | | | w3m images are a hack which renders on top of the terminal's drawable, which didn't work in st because when using double buffering, the front buffer (on which w3m draws its images) is ignored, and st draws only on the back buffer, which is then copied to the front buffer. There's a patch to make it work at the FAQ already, but that patch canceles double-buffering, which can have negative side effects on some cases such as flickering. This patch achieves the same goal but instead of canceling the double buffer it first copies the front buffer to the back buffer. This has the same issues as the FAQ patch in that the cursor line is deleted at the image (because st renders always full lines), but otherwise it's simpler and does keeps double buffering.
* update config.def.hlonkaars2022-12-24
|
* added font2 patchlonkaars2022-03-07
|
* added osc patchlonkaars2021-02-22
|
* change character height in config.def.hlonkaars2021-02-22
|
* vertcenter + spacinglonkaars2020-12-29
|
* removed transparencylonkaars2020-11-29
|
* font updateLoek Le Blansch2020-07-28
|
* config updateLoek Le Blansch2020-07-17
|
* removed TODO and changed fontLoek Le Blansch2020-07-16
|
* github repoLoek Le Blansch2020-07-16
|
* added gitignoreLoek Le Blansch2020-07-16
|
* alpha + configLoek Le Blansch2020-07-16
|
* configLoek Le Blansch2020-07-16
|
* xresourcesLoek Le Blansch2020-07-16
|
* scrollback-mouseLoek Le Blansch2020-07-16
|
* scrollbackLoek Le Blansch2020-07-16
|
* ligaturesLoek Le Blansch2020-07-16
|
* clipboardLoek Le Blansch2020-07-16
|
* bump version to 0.8.4Hiltjo Posthuma2020-06-19
|
* config.mk: use PKG_CONFIG in commented OpenBSD sectionHiltjo Posthuma2020-06-17
|
* LICENSE: bump yearsHiltjo Posthuma2020-06-17
|
* remove sixel stub codeHiltjo Posthuma2020-06-17
| | | | | Remove stub code that was used for an experiment of adding sixel code to st from the commit f7398434.
* fix unicode glitch in DCS strings, patch by Tim AllenHiltjo Posthuma2020-06-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reported on the mailinglist: " I discovered recently that if an application running inside st tries to send a DCS string, subsequent Unicode characters get messed up. For example, consider the following test-case: printf '\303\277\033P\033\\\303\277' ...where: - \303\277 is the UTF-8 encoding of U+00FF LATIN SMALL LETTER Y WITH DIAERESIS (ÿ). - \033P is ESC P, the token that begins a DCS string. - \033\\ is ESC \, a token that ends a DCS string. - \303\277 is the same ÿ character again. If I run the above command in a VTE-based terminal, or xterm, or QTerminal, or pterm (PuTTY), I get the output: ÿÿ ...which is to say, the empty DCS string is ignored. However, if I run that command inside st (as of commit 9ba7ecf), I get: ÿÿ ...where those last two characters are \303\277 interpreted as ISO8859-1 characters, instead of UTF-8. I spent some time tracing through the state machines in st.c, and so far as I can tell, this is how it works currently: - ESC P sets the "ESC_DCS" and "ESC_STR" flags, indicating that incoming bytes should be collected into the strescseq buffer, rather than being interpreted. - ESC \ sets the "ESC_STR_END" flag (when ESC is received), and then calls strhandle() (when \ is received) to interpret the collected bytes. - If the collected bytes begin with 'P' (i.e. if this was a DCS string) strhandle() sets the "ESC_DCS" flag again, confusing the state machine. If my understanding is correct, fixing the problem should be as easy as removing the line that sets ESC_DCS from strhandle(): diff --git a/st.c b/st.c index ef8abd5..b5b805a 100644 --- a/st.c +++ b/st.c @@ -1897,7 +1897,6 @@ strhandle(void) xsettitle(strescseq.args[0]); return; case 'P': /* DCS -- Device Control String */ - term.mode |= ESC_DCS; case '_': /* APC -- Application Program Command */ case '^': /* PM -- Privacy Message */ return; I've tried the above patch and it fixes my problem, but I don't know if it introduces any others. "
* FAQ: fix single-buffer patchHiltjo Posthuma2020-06-01
| | | | rebase against master
* config.def.h: add an option allowwindowops, by default off (secure)Hiltjo Posthuma2020-05-30
| | | | | | | | | | | | | | | | Similar to the xterm AllowWindowOps option, this is an option to allow or disallow certain (non-interactive) operations that can be insecure or exploited. NOTE: xsettitle() is not guarded by this because st does not support printing the window title. Else this could be exploitable (arbitrary code execution). Similar problems have been found in the past in other terminal emulators. The sequence for base64-encoded clipboard copy is now guarded because it allows a sequence written to the terminal to manipulate the clipboard of the running user non-interactively, for example: printf '\x1b]52;0;ZWNobyBoaQ0=\a'
* FAQ: add some details about the w3m img hackHiltjo Posthuma2020-05-30
| | | | ... and an example patch to switch from double-buffering to a single buffer.
* tiny style fixHiltjo Posthuma2020-05-30
|
* Partially add back in "support REP (repeat) escape sequence"Hiltjo Posthuma2020-05-30
| | | | | | | | | | | | | | Add the functionality back in for xterm compatibility, but do not expose the capability in st.info (yet). Some notes: It was reverted because it caused some issues with ncurses in some configurations, namely when using BSD padding (--enable-bsdpad, BSD_TPUTS) in ncurses it caused issues with repeating digits. A fix has been upstreamed in ncurses since snapshot 20200523. The fix is also backported to OpenBSD -current.
* Call xsetcursor to set win.cursor in mainSteve Ward2020-05-24
| | | | | In xsetcursor, remove "DEFAULT(cursor, 1)" because 0 is a valid value. Increase max allowed value of cursor from 6 to 7 (st extension).
* Revert "support REP (repeat) escape sequence"Hiltjo Posthuma2020-05-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit e8392b282c2eaa28725241a9612804fb55113da4. There is currently a bug in older ncurses versions (like on OpenBSD) where a fix for a bug with REP is not backported yet. Most likely in tty/tty_update.c: Noticed while using lynx (which uses ncurses/curses). To reproduce using lynx: echo "Z0000000" | lynx -stdin or using the program: int main(void) { WINDOW *win; win = initscr(); printw("Z0000000"); refresh(); sleep(5); return 0; } This prints "ZZZZZZZ" (incorrectly).
* support REP (repeat) escape sequenceAvi Halachmi (:avih)2020-05-16
| | | | | | | | | | | | | | | | The sequence \e[Nb prints the last printed char N (more) times if it's printable, and it's ignored after newline or other control chars. This is Ecma-048/ANSI-X3.6 sequence and not DEC VT. It's supported by xterm, and ncurses uses it when possible, e.g. when TERM is xterm* (and with this commit also st*). xterm supports only codepoints<=255, possibly due to internal limits. We support any value/codepoint which was placed in a cell. To test: - tput rep 65 4 -> prints 'AAAA' - printf "\342\225\246\033[4b" -> prints U+2566 1+4 times.
* Add rin terminfo capabilityRoberto E. Vargas2020-05-16
| | | | Tianlin Qu discovered that st is missing rin (scroll back #1 lines).
* Make shift+wheel behaves as shift+Prev/Nextk0ga2020-05-16
| | | | | | | | | | | | | | | St uses a very good hack where mouse wheel genereates ^Y and ^E, that are the same keys that less and vi uses for backward and fordward scrolling. Scroll, as many terminal emulators, use shift+Prev/Next for scrolling, but it is also using ^E and ^Y for scroling, characters that are reserved in the POSIX shell in emacs mode for end of line and yanking, making scroll unsable in st. This patch adds a new hack, making shift+wheel returning the same sequences than shift+Prev/Next, meaning that scroll or any other similar program will not be able to differentiate between them.
* Fix selection: selscrollJakub Leszczak2020-05-12
|
* Fix selection: ignore ATTR_WRAP when rectangular selection in getselJakub Leszczak2020-05-12
|
* Fix selection: selclear in tputcJakub Leszczak2020-05-12
|
* code-style: add fallthrough commentHiltjo Posthuma2020-05-09
| | | | Patch by Steve Ward, thanks.
* optimize column width calculation and utf-8 encode for ASCIIHiltjo Posthuma2020-05-09
| | | | | In particular on OpenBSD and on glibc wcwidth() is quite expensive. On musl there is little difference.
* fix for incorrect (partial) written sequences when libc wcwidth() == -1Hiltjo Posthuma2020-05-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix an issue with incorrect (partial) written sequences when libc wcwidth() == -1. The sequence is updated to on wcwidth(u) == -1: c = "\357\277\275" but len isn't. A way to reproduce in practise: * st -o dump.txt * In the terminal: printf '\xcd\xb8' - This is codepoint 888, on OpenBSD it reports wcwidth() == -1. - Quit the terminal. - Look in dump.txt (partial written sequence of "UTF_INVALID"). This was introduced in: " commit 11625c7166b7e4dad414606227acec2de1c36464 Author: czarkoff@gmail.com <czarkoff@gmail.com> Date: Tue Oct 28 12:55:28 2014 +0100 Replace character with U+FFFD if wcwidth() is -1 Helpful when new Unicode codepoints are not recognized by libc." Change: Remove setting the sequence. If this happens to break something, another solution could be setting len = 3 for the sequence.
* tiny code-style and typo-fix in commentHiltjo Posthuma2020-05-09
|
* auto-sync: draw on idle to avoid flicker/tearingAvi Halachmi (:avih)2020-05-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | st could easily tear/flicker with animation or other unattended output. This commit eliminates most of the tear/flicker. Before this commit, the display timing had two "modes": - Interactively, st was waiting fixed `1000/xfps` ms after forwarding the kb/mouse event to the application and before drawing. - Unattended, and specifically with animations, the draw frequency was throttled to `actionfps`. Animation at a higher rate would throttle and likely tear, and at lower rates it was tearing big frames (specifically, when one `read` didn't get a full "frame"). The interactive behavior was decent, but it was impossible to get good unattended-draw behavior even with carefully chosen configuration. This commit changes the behavior such that it draws on idle instead of using fixed latency/frequency. This means that it tries to draw only when it's very likely that the application has completed its output (or after some duration without idle), so it mostly succeeds to avoid tear, flicker, and partial drawing. The config values minlatency/maxlatency replace xfps/actionfps and define the range which the algorithm is allowed to wait from the initial draw-trigger until the actual draw. The range enables the flexibility to choose when to draw - when least likely to flicker. It also unifies the interactive and unattended behavior and config values, which makes the code simpler as well - without sacrificing latency during interactive use, because typically interactively idle arrives very quickly, so the wait is typically minlatency. While it only slighly improves interactive behavior, for animations and other unattended-drawing it improves greatly, as it effectively adapts to any [animation] output rate without tearing, throttling, redundant drawing, or unnecessary delays (sounds impossible, but it works).
* replace exit(3) by _exit(2) in signal handler sigchld()Jan Klemkow2020-04-30
| | | | | exit(3) is not async-signal-safe but, _exit(2) is. This change prevents st to crash and dump core.
* bump version to 0.8.3Hiltjo Posthuma2020-04-27
|
* Update XIM cursor position only if changedIvan Tham2020-04-19
| | | | | Updating XIM cursor position is expensive, so only update it when cursor position changed.
* just remove the EOF messageHiltjo Posthuma2020-04-11
|