Commit Graph

48 Commits

Author SHA1 Message Date
Stein Gunnar Bakkeby 3b87b07404
Adding reflow patch (#120) 2024-03-13 10:33:51 +01:00
Bakkeby e88f2bf20c Removing the VIM browse patch.
The general reasoning is that the vim browse patch is very invasive,
has a high level of complexity, and is incompatible with a significant
number of other patches and it complicates further maintenance.

Additionally the patch has its own scrollback mechanism which seemingly
did not work properly - and nobody seems to have complained about this
since the patch was added back in May 2021.

If you want to try out the vim browse patch then I would recommend having
a play around with the patch author's own build that has this patch
integrated:
   - https://github.com/juliusHuelsmann/st-history-vim
   - https://github.com/juliusHuelsmann/st

Alternatively a tag has been added to this repository that refers to the
last commit that still has the vim browse patch:
   - https://github.com/bakkeby/st-flexipatch/tree/VIM_BROWSE_PATCH
2024-03-07 22:35:11 +01:00
Bakkeby c089485aa4 hidecursor: add config option to disable hidecursor functionality 2024-03-07 21:43:18 +01:00
Stein Gunnar Bakkeby 677c2da0be
Reworking sixel implementation based on veltza's implementation (#117)
* sixel: remove black bars from sixel images

When the images don't fully cover the text cells, black bars are added
to them. This fix removes those bars, but if you need the old behavior,
you can restore it by setting 'sixelremovebars' to zero in config.h

* sixel: fix a potential memory leak

* sixel: improve behavior with text reflow

* sixel: prevent animated gifs from choking the terminal

Animated gifs constantly spawn new images that eventually choke the
terminal because the old animation frames are kept in the image buffer.
This fix removes overlapping images from the image buffer and prevents
them from piling up.

* sixel: add zooming and clipping

* sixel: copying bulk of changes

* sixel: move sixel_parser_parse() and add missing sequences and blocks (#113)

- Move sixel_parser_parse() from tputc() to twrite()
- Add missing 8452, DECSDM, XTSMGRAPHICS and XTWINOPS sequences
- Add more conditional blocks for the scrollback and sync patches
- Remove unused reflow_y from ImageList. It is only used for the
  scrollback-reflow patch in st-sx.

* sixel: update vtiden to VT200 family

* sixel: fix scrolling issues inside tmux (#114)

tmux is using the scrolling region and sequence to clear the screen
below the shell prompt. This peculiar behavior caused the tscrollup()
function to be called, which always scrolled the images regardless of
whether they were inside the region or not. So the images moved out of
place whenever the bottom of the screen was cleared. This fix checks
that the images are inside the region before scrolling them.

* sixel: prevent images from being deleted when resizing (#115)

This fixes resizing issues outside of tmux not inside.

* Rewriting tresize logic based on veltza's proposed implementation in PR #115

* tresize: correction for tscrollup call when scrollback patch is used

---------

Co-authored-by: veltza <106755522+veltza@users.noreply.github.com>
2024-03-07 09:22:44 +01:00
Jordan Callicoat 2e0e84d56a
Add selectioncolors patch (#110)
https://st.suckless.org/patches/selectioncolors/

Closes #91
2024-02-28 14:34:06 +01:00
Bakkeby d8529b66a4 Adding fullscreen patch ref. #88 2022-10-24 11:27:51 +02:00
Utkarsh Verma 2d74e49c4f Add function for changing alpha (#47)
Co-authored-by: Stein Gunnar Bakkeby <bakkeby@gmail.com>
2022-09-24 11:04:38 +02:00
Bakkeby 34cd955f14 Adding key and mouse binding option to control whether they apply to primary screen, alt screen or both ref. #81 2022-09-01 22:01:20 +02:00
step 427895a7c2
Fix externalpipein patch (#78)
* fix externalpipein patch

don't close the slave fd, according to the original patch in
https://lists.suckless.org/hackers/2004/17218.html

* externalpipein patch: add example command

press S-C-M to set the terminal background green dynamically.

Replace `printf ...` with `dynamic-colors cycle` command mentioned in
https://lists.suckless.org/hackers/2004/17218.html to cycle though the
available dynamic color themes.
2022-08-16 16:49:10 +02:00
veltza 3eb170a9a5 Add scrollback support to the openurlonclick patch
The openurlonclick and scrollback patches are now working together,
so links can be clicked in the scrollback buffer too. This update also
adds url underlining and other improvements to the openurlonclick patch.

The full list of changes in the openurlonclick patch:
- Adds scrollback support
- Adds modkey option
- Better url detection
- Underlines url when the mouse pointer is over a link
- Opens a browser as a background process, so it won't lock the terminal anymore
- Fixes a segmentation fault bug
2022-08-10 21:32:44 +03:00
bakkeby 1a8175a337 Adding background image patch 2022-03-10 13:54:28 +01:00
bakkeby f0e4dc3bd5 undercurl: upgrading patch with curly, spiky and capped options
Ref. https://git.suckless.org/sites/commit/9bb304a974185cbd9fa48c890450c6582d3e0546.html
2021-08-22 18:35:31 +02:00
bakkeby ee4cdc8d6e Adding openurlonclick patch ref. #32 2021-07-07 10:08:43 +02:00
bakkeby e039854635 Adding vim browse patch ref. #21 2021-05-09 17:48:28 +02:00
bakkeby 1a1d492cd8 Adding alpha-focus-highlight patch 2021-05-09 14:40:30 +02:00
bakkeby 56e208e0de Adding sync patch ref. #21 2021-05-09 09:25:22 +02:00
bakkeby a5435903d4 Adding universcroll patch ref. #21 2021-05-08 17:49:04 +02:00
bakkeby a1303a8811 Adding delkey patch ref. #21 2021-05-08 16:57:59 +02:00
bakkeby ce05a34de1 Adding blinking cursor patch ref. #20 2021-05-08 10:13:20 +02:00
Loic Coyle f72e1cd3fb advertise sixel support 2021-05-07 16:52:49 +02:00
Loic Coyle dbf9e9475c add RELATIVEBORDER_PATCH check 2021-05-07 00:46:04 +02:00
bakkeby 99903c67d9 Adding alpha gradient patch 2021-02-15 14:37:37 +01:00
bakkeby effc2107e4 config.def.h: add an option allowwindowops, by default off (secure)
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'
2020-06-10 20:53:01 +02:00
bakkeby f6637c640e Xresources improvements for default config 2020-05-22 11:47:04 +02:00
bakkeby bda4877b5f Make shift+wheel behaves as shift+Prev/Next
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.
2020-05-20 14:39:35 +02:00
bakkeby 5c7d8ab1ad auto-sync: draw on idle to avoid flicker/tearing
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).
2020-05-20 14:15:57 +02:00
bakkeby bda5b50b99 [st][PATCH] OSC 10/11/12 fg, bg and cursor colors
Support for OSC escape sequences 10, 11 and 12 to modify the bg, fg and
cursor colors. I selected entries in the colorname table after the 255
position for defaultfg, defaultbg and defaultcs
2020-04-20 12:35:11 +02:00
bakkeby f91a10d0e6 config.def.h: add a comment for the scroll variable 2020-04-20 10:49:54 +02:00
bakkeby 2090981be3 Add support for scroll(1)
Scroll is a program that stores all the lines of its child and be used in st as
a way of implementing scrollback.

This solution is much better than implementing the scrollback in st itself
because having a different program allows to use it in any other program
without doing modifications to those programs.
2020-04-20 10:24:34 +02:00
bakkeby d26b46ffa7 Adding invert patch 2020-03-29 15:38:16 +02:00
bakkeby 4966f31256 Custom changes to make the altscreen mouse scollback patch working with latest version of st 2020-03-24 20:05:07 +01:00
bakkeby 0cdfd86e5e mouse shortcuts: don't hardcode selpaste (ff828c) 2020-03-24 14:14:10 +01:00
bakkeby ed7837a816 mouse shortcuts: allow override for all shortcuts (7729e7) 2020-03-24 14:08:08 +01:00
bakkeby 584f3928ad mouse shortcuts: allow same functions as kb shortcuts (410651) 2020-03-24 14:02:44 +01:00
bakkeby 4aa6989993 config.def.h: remove crlf value section (938580) 2020-03-24 13:56:40 +01:00
bakkeby 87c1d1e598 revert part of commit add0211522 (cae586) 2020-03-24 13:51:45 +01:00
bakkeby 9e18ce3cb1 config.def.h: tweak extra worddelimiters (057e32) 2020-03-24 13:47:39 +01:00
bakkeby f86b641b5f use iswspace()/iswpunct() to find word delimiters (5cc1dd) 2020-03-24 13:41:19 +01:00
bakkeby 42f401b428 replace utf8strchr with wcschr (4b51e7) 2020-03-24 13:38:27 +01:00
bakkeby 9f1a2db7c5 Adding font2 patch as per request #3 2020-03-21 16:41:43 +01:00
bakkeby cfecd195ba Adding relativeborder, fix-keyboard-input, iso14755, visualbell, rightclicktoplumb, boxdraw and keyboard-select patches 2019-09-17 15:16:22 +02:00
bakkeby db32474a7f Adding spoiler, external pipe and themed cursor patches 2019-09-17 01:18:44 +02:00
bakkeby d52c5e4ce8 Adding scrollback patch 2019-09-16 15:31:58 +02:00
bakkeby 4bd0ed3327 Adding xresources patch 2019-09-16 14:21:09 +02:00
bakkeby 7615c2f0aa Adding fixime, newterm and opencopied patches 2019-09-16 12:40:07 +02:00
bakkeby 35e6403c69 Adding copyurl and disable-fonts patch 2019-09-16 10:40:16 +02:00
bakkeby ec58f77b6b Adding clipboard patch 2019-09-16 09:51:41 +02:00
bakkeby 5d336c2796 Initial commit, adding alpha and anysize patches 2019-09-16 09:35:57 +02:00