| Commit message (Collapse) | Author | Age |
| ... | |
| |
|
|
| |
Resolves #634.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
Now pass more vttests as well.
Resolves #123
cc #660 - screenshot there exhibited the problem, but issue is not
entirely about the background problem.
|
| |
|
|
|
|
|
|
|
|
| |
Resolves an issue with partial draws where programs like vim would send
data, but only part of it would be drawn.
The logic for escaping when a write is pending has been removed in favor
of limiting bytes processed during a pty_read call.
The value of MAX_READ may not be ideal.
|
| | |
|
| |
|
|
| |
Currently setting cursor visibility always fails on Wayland. It
shouldn't be a critical error on any platform.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
* Update to latest Glutin/winit
This *finally* gets us off the fork of Glutin we've been on for so long
and will unblock a number of other items. Functionality should be the
same as before.
The update forced our hand on a compiler update. It's no longer
feasible to pin on an old version. From now on, we require latest
stable.
|
| |
|
|
| |
This should resolve an issue where config behind a symlink was not being
properly reloaded when edited.
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
This reverts commit 3cdba291242cc1c1684bff7f8242262b1cdeb582.
On some systems, the target commit actually caused a massive performance
issue rather than fixing one.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The InstanceData type in the rendering subsystem was previously 16
floats which occupied a total of 64 bytes per instance. This meant that
for every character or background cell drawn, 64 bytes were sent to the
GPU. In the case of a 400x100 cell grid, a total of 2.5MB would be sent.
This patch reduces InstanceData's size to 26 bytes, a 60% improvement!
Using the above example for comparison, a worst case of 1MB would be
transferred.
The motivation for this patch comes from macOS. Once the terminal grid
would reach a certain size, performance experienced a sharp and dramatic
drop (render times would go from ~3ms to ~16ms). I don't want to
speculate too much on the underlying issue, but suffice it to say that
this patch alleviates the problem in my testing.
|
| |
|
|
|
|
|
|
|
|
|
| |
Add support for the VTE 'dim' flag, with additional support for
custom-themed dim colors. If no color is specified in the config, it
will default to 2/3 the previous (not a spec, but the value other
terminals seem to use).
The actual dimming behavior brings bright colors to normal and regular
colors to the new dim ones. Custom RGB values are not changed, nor are
non-named indexed colors.
|
| | |
|
| |
|
|
|
|
|
| |
Could be cleaned up a bit if there was a wrapper for Option<Selection>
that contained this flag.
Also fixes a few compiler warnings.
|
| |
|
|
|
|
| |
Unlike the regular selection that is by cell, these selection modes
highlight either semantic groupings or entire lines while the mouse is
dragged.
|
| |
|
| |
Fixes #611.
|
| |
|
|
|
| |
This escape sequence isn't officially documented anywhere, but is
supported by xterm and gnome-vte.
|
| |
|
|
|
|
|
| |
This ensures that the cleared cells are set to the proper background
color, which is the main usage of this escape sequence.
Fixes #612
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Notable about this implementation is it takes a different approach for
managing cursor cells that previously. The terminal Grid is now
borrowed *immutably*. Instead of mutating Cells in the Grid, a list is
managed within the RenderableCellsIter. The cell at the cursor location
is skipped over, and instead cells are popped off a list of cursor
cells.
It would be good in the future to share some more code between the
different cursor style implementations for populating the cursor cells
list.
Supercedes #349.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
Implements sending FocusIn/FocusOut events, as defined at
http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-FocusIn_FocusOut
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Parse cli arguments before configuration file
Parsing the cli arguments before the configuration file allows `--help`
and `--version` to be used even if the configuration file is broken.
* Add configuration file to command line arguments
This commit adds a new command line flag `--config-file` to override the default
configuration file location. If the specified file is unavailable,
Alacritty will quit instead of generating a fallback. If the specified
file is invalid, i.e. /dev/null, the compiled in defaults will be loaded
instead.
|
| | |
|
| |
|
|
|
|
| |
Ownership of the slave file descriptor is passed to the process::Stdio
structs and will be closed when they are dropped. If the slave fd is
closed explicitly then the next fd that is opened during the same scope
will get silently closed by the Stdio structs when they are dropped.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Based on option `command` in key binding section in config, e.g.
- { key: N, mods: Control|Shift, command: alacritty }
# or
- {
key: N,
mods: Control|Shift,
command: {
program: "alacritty",
args: ["-e", "vttest"],
}}
specified command will be run in the background on key press. Alacritty
doesn't wait for its result nor block IO.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Background:
If a shell process exits with children still alive (typically due to the
`disown` shell builtin), POLLHUP will not be sent to the master PTY file
descriptor. This is due to the fact that the disowned process still has
the slave PTY open as its STDIN, STDOUT, and STDERR.
If a disowned process never reads or writes from its file descriptors
(which is often the case for graphical applications), the event loop
will end up blocking on poll()/select() when not handling user input
received over the mio channel. When Alacritty shuts down and joins on the
event loop thread, there can never be any more input on the mio channel -
the main thread is no longer handling user keystrokes from the window. Unless
a disowned process happens to access its slave PTY file descriptors, the
event loop will never get the chance to deetect that it should exit.
This commit extends the `Msg` enum to include an explicit `Shutdown`
message, which ensures a clean shutdown (e.g. closing the 'recording'
file). This allows the select()/poll() call to remain blocking, instead
of needing to periodically check the shutdown state in between
timed-out calls.
Fixes #339
|
| |
|
|
|
|
|
| |
Any action that results in 0 bytes, such as pasting 0 bytes
from the clipboard hangs the terminal (`pbcopy </dev/null`
followed by ctrl-v), hangs the terminal on both macOS and
Linux. This ensures we never send 0 bytes.
|
| | |
|
| |
|
| |
Closes #556
|
| | |
|
| | |
|
| |
|
|
| |
Accidentally broke it when refactoring.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
Padding can be configured by using the `padding` field in the config
file, like so:
padding:
x: 2
y: 2
which would result in a 2px padding within each side of the window.
|
| |
|
|
|
|
| |
We previously had a hard-coded value for aligning glyphs within cells.
The font descent is now used, and the offset should be correct by
default.
|
| |
|
|
|
|
|
| |
Closes #494.
Resolves #529.
Resolves #512.
Resolves #493.
|
| |
|
|
|
|
| |
The two structs are very similar, so there is no reason for them to be
separate. Instead combine them into a single Delta struct, which can be
used to shift a point in a two dimensional plane.
|
| |
|
|
|
| |
Add the ability to move glyphs within their cells on a global basis via
an option in the configuration file.
|
| |
|
|
|
| |
The changes to metric consumption rendered the size argument
unnecessary, remove it.
|
| |
|
|
|
|
| |
The font metrics function was using freetype metrics in an ineffective
way, improve the use of those metrics and remove the now unnecessary
separate default values for font offset in linux.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Support is added for setting _NET_WM_PID automatically. This is to
support scripting of the window environment. For example, this makes it
possible to script opening a window with same CWD:
1. Retrieve the current window
2. (new) get PID of window
3. Check if it's Alacritty, find first child (presumably a shell), and
get the child's cwd.
4. Spawn new instance of terminal with cwd.
Unaddressed in this commit is how this will coexist on a Wayland system.
|