Age | Commit message (Collapse) | Author | Files | Lines |
|
Apply the following patch on top of the previous two to allow scrollback
using mouse wheel only when not in MODE_ALTSCREEN. For example the
content is being scrolled instead of the scrollback buffer in less.
Consequently the Shift modifier for scrolling is not needed anymore.
The mouse and altscreen patches 20191024-a2c479c (and later, including
this one) are simpler and more robust because st gained better support
for customized mouse shortcuts. As a result, the altscreen patch doesn't
really need the mouse patch. However to keep it simple the instructions
stay the same: the alrscreen patch still applies on top of the (now very
minimal) mouse patch.
|
|
Scroll back through terminal output using Shift+{PageUp, PageDown}.
|
|
Ctrl-Shift-Return now creates a new st terminal, whose CWD is the same
as the parent st's CWD.
This version of the patch does a double fork, a technique commonly used
by daemons to spawn orphan processes.
This solution is specific to the swallow patch for dwm which traverses
the process tree to determine if the new window is a decendant of a
terminal window, in which case the new window should take the place of
the terminal window.
The way the original newterm patch worked the new st terminal would be a
direct decendant of the parent st terminal process, which could lead to
the wrong terminal window being swallowed.
The double fork method avoids this by leaving all new st terminals as
orphans, i.e. they will have no parent process.
|
|
This patch allows users to change the opacity of the background. Note
that you need an X composite manager (e.g. compton, xcompmgr) to make
this patch effective.
Notes:
* The alpha value affects the default background only.
* The color designated by 'defaultbg' should not be used
elsewhere.
* Embedding might fail after applying this patch.
Changes in 0.8.2:
* The internal method for querying X visual is changed. St will
respect the visual of its parent window, allowing it to be
embedded easily.
* Opacity value is now typed in float.
* -A option is added to allow changing the opacity value without
compiling.
|
|
* adds missing function prototype
* move xgetcolor() prototype to win.h (that's where all the other x.c
func prototype seems to be declared at)
* check for snprintf error/truncation
* reduces code duplication for osc 10/11/12
* unify osc_color_response() and osc4_color_response() into a single function
the latter two was suggested by Quentin Rameau in his patch review on
the hackers list.
|
|
|
|
Only touch a few things, the main focus is to
improve code readability.
|
|
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'
|
|
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.
|
|
Previously mouse shortcuts supported only ttywrite.
This required adding an "Arg" function ttysend - which does what the
original mouse shortcuts did.
|
|
"use iswspace()/iswpunct() to find word delimiters
this inverts the configuration logic: you no longer provide a list of
delimiters -- all space and punctuation characters are considered
delimiters, unless listed in extrawordchars."
Feedback from IRC and personal preference.
|
|
this inverts the configuration logic: you no longer provide a list of
delimiters -- all space and punctuation characters are considered
delimiters, unless listed in extrawordchars.
|
|
|
|
And move it to the patches section.
Keeping it would force to add an exec pledge on OpenBSD, and some
people think it's bloated, so bye!
|
|
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
When possible, declare functions/variables static and move struct
definitions out of headers. In order to allow utf8decode to become
internal, use codepoint for DECSCUSR extension directly.
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
Prefer passing arguments to declaring external global variables. The
only remaining usage of extern is for config.h variables which are
needed in st.c instead of x.c (where it is now included).
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
The xinit function only needs to the rows/cols, so pass those in rather
than accessing term directly. With a bit of arithmetic, we are able to
avoid the need for term.row and term.col in x2col, y2row, and
xdrawglyphfontspecs as well, completing the removal.
Term is now fully internal to st.c.
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
Gradually reducing x.c dependency on Term object. Old and new cursor
glyph/position are passed to xdrawcursor. (There may be an opportunity
to refactor further if we can unify "clear old cursor" and "draw new
cursor" functionality.)
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
Introduces three functions to encapsulate X-specific behavior:
* xdrawline: draws a portion of a single line (used by drawregion)
* xbegindraw: called to prepare for drawing (will be useful for e.g.
Wayland) and returns true if drawing should happen
* xfinishdraw: called to finish drawing (used by draw)
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
Moves the mode bits used by x.c from Term to TermWindow, absorbing
UI/input-related mode bits (visible/focused/numlock) along the way.
This is gradually reducing external references to Term. Since
TermWindow is already internal to x.c, we add xsetmode() to allow st to
modify window bits in accordance with escape sequences.
IS_SET() is redefined accordingly (term.mode in st.c, win.mode in x.c).
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
The only thing differentiating ttywrite and ttysend was the potential
for echo; make this a parameter and remove ttysend.
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
The "done" parameter indicates a change which finalizes the selection
(e.g. a mouse button release as opposed to motion).
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
The front-end determines information about mouse clicks and motion, and
the terminal handles the actual selection start/extend/dirty logic by
row and column.
While we're in the neighborhood, we'll also rename getbuttoninfo() to
mousesel() which is, at least, less wrong.
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
Data about PRIMARY/CLIPBOARD and clicks are part of the front-end, not
the terminal.
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
There was only a single reference to the `win` variable in st.c, so
exporting that to x.c allows us to rid ourselves of another extern.
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
No need to expose Shortcut, MouseShortcut, and Key anymore.
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
config.h includes references to KeySyms and other X stuff. Until we
come up with a cleaner way to separate configuration, it is simpler
(leads to more code removal) to have this here.
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
The echo-to-terminal portions of ttyread and ttysend were actually doing
the same thing. New function twrite() now handles this. The parameter
show_ctrl determines whether control characters are shown as "^A". This
was the only difference between tputc and techo, and techo is now unused
and removed.
(This commit should not change st's behaviour.)
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
This commit is purely about reducing externs and LOC. If the main and
run functions ever move elsewhere (which will probably make sense
eventually), these should come along with them.
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
Modifiers and keysyms are specific to X, and the functions match and
kmap are only used in x.c. Needed to global-ize the key arrays and
lengths from config.h (for now).
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
This removes another reference to TermWindow from st.c.
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
xresize is now internal to x.c
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
This allows us to make xseturgency internal.
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
This makes x(un)loadfonts internal to x.c. Needed to reorder includes
and move a typedef to keep the compiler happy.
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
run/usage/xinit are now all internal to x.c
Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|