Age | Commit message (Collapse) | Author |
|
|
|
|
|
Previously cursor dimensions were not calculated correctly when a font
offset was specified, since the font offset was completely ignored.
This has been fixed by moving all the cursor logic from the font into
the Alacritty crate, applying the config's offsets before rasterizing
the cursors.
This has also fixed an issue with some cursors not being rendered as
double-width correctly when over double-width glyphs.
This fixes #2209.
|
|
This resolves performance issues with the `update_lines` method that
were caused by excessive updates without underlines or strikeout
present.
This also resolves a bug that was causing the underline and strikeout to
extend beyond the end of line in some rare cases.
This fixes #114.
|
|
Instead of calling TIOCSWINSZ for every pixel change it will now be called only on changes to the grid size. This should reduce screen refreshes.
This fixes #2177.
|
|
If a resize event is identical to the current size, it is no longer
propagated but the resize is discarded immediately.
To further prevent resizes when not necessary, the list of monitors is
enumerated and the DPR of the first display is assumed to be the target
DPR.
This allows spawning a window with dimensions when the config has
columns and lines specified and the window only needs to be resized if
the estimated DPR is not correct.
Fixes #1825.
Fixes #204.
|
|
This fixes the execution of subprocesses on macOS which could sometimes
prevent actions like `SpawnNewProcess` or custom commands from launching
their processes correctly.
This fixes #2259.
|
|
By setting the minimum Rust version and enforcing it with CI, Alacritty
should hopefully make it possible for maintainers to package the
application even on distributions which are not rolling release.
The 1.31.0 target has been chosen here because it's the first version of
the Rust 2018 release. Bumping this version in the future should be
considered to be a breaking change and should only be done with caution
and in consideration of the supported Rust versions of the major
distributions available.
This fixes #2277.
|
|
|
|
|
|
|
|
|
|
This updates winit and glutin to the latest git versions instead of
relying on releases to fix a build failure on BSD.
Unfortunately the upstream version bumps might still take a bit and
there hasn't been any feedback with regards to a planned release date.
This also fixes a slight issue on Windows where selections would start
when focusing a window and a build failure with some Linux systems
Fixes #2243.
Fixes #2170.
Fixes #2244.
|
|
Temporarily disabled automatic graphics switching due to a bug in macOS
which leads to crashing.
See #2221.
|
|
|
|
|
|
This completely reworks URL highlighting to fix two issues which were
caused by the original approach.
The primary issues that were not straight-forward to resolve with the
previous implementation were about handling the URL highlighted content
moving while the highlight is active.
This lead to issues with highlighting with scrolling and when the
display offset was not 0.
The new approach sticks closely to prior art done for the selection,
where the selection is tracked on the grid and updated whenever the
buffer is rotated.
The truncation of URLs was incorrectly assuming input to be just a
single codepoint wide to truncate the end of URLs with unmatching
closing parenthesis. This is now handled properly using Rust's built-in
Unicode support.
This fixes #2231.
This fixes #2225.
|
|
|
|
|
|
Since double-width characters are followed by an empty cell containing
only the `WIDE_CELL_SPACER` flag, the URL parser would stop once
encountering the cell after a double-width character.
By skipping cells that contain the `WIDE_CELL_SPACER` flag and
incrementing the URL length by unicode width of the character instead of
cell count, this can be resolved for both URL launching and URL
highlighting.
Fixes #2158.
|
|
If a URL ends right at the end of the terminal, it would sometimes
incorrectly include the characters from the following line when
launching the URL.
Similar to the semantic search function, the URL parsing iterator will
now stop if it encounters a cell at the end of the line which does not
contain the `WRAPLINE` flag.
This fixes #1906.
|
|
This changes the cursor whenever it moves to a cell which contains
part of a URL.
When a URL is hovered over, all characters that are recognized as part
of the URL will be underlined and the mouse cursor shape will be
changed. After the cursor leaves the URL, the previous hover state is
restored.
This also changes the behavior when clicking an illegal character right
in front of a URL. Previously this would still launch the URL, but strip
the illegal character. Now these clicks are ignored to make sure there's
no mismatch between underline and legal URL click positions
|
|
Fixes #2104.
|
|
This fixes #2010.
|
|
Fixes #458.
Fixes #1681.
|
|
Alacritty will now automatically reflow lines and shrink them when they
would usually exceed the new width of the terminal instead of
truncation.
If a line had to be truncated, it will also be reflown into the previous
line after growing the terminal width.
The reflow behavior when not at the bottom of the history is similar to
that of VTE and aims to keep the viewport stationary whenever possible.
Opposed to VTE, reflow will also be performed in the alternate screen
buffer.
There will be bugs when resizing the terminal emulator to a size smaller
than the prompt, though these issues were present in all terminal
emulators with reflow support.
This fixes #591.
|
|
|
|
This removes the the signal handling machinery in tty::unix, and
replaces it with functionality from signal-hook, which should be more
robust. Signals caught by signal-hook wake up the existing I/O event
loop, which then delegates back to the PTY to handle them.
In particular, this allows `SIGCHLD` (i.e. child process exits) to shut
down the terminal promptly, instead of sometimes leaving the window
lingering.
Fixes #915.
Fixes #1276.
Fixes #1313.
As a side effect, this fixes a very rare bug on Linux, where a `read`
from the PTY on the master side would sometimes "fail" with `EIO` if the
child closed the client side at a particular moment. This was subject to
a race condition, and was very difficult to trigger in practice.
|
|
|
|
This fixes opening a new instance in the shell's current working
directory. The code currently assumes that there is a Linux
compatible procfs mounted on /proc which is not the case on FreeBSD.
However linprocfs(5) is often mounted on /compat/linux/proc so we
can use that here for the time being.
A proper solution would look up the kern.proc.cwd.<pid> sysctl
instead, but that is not currently easily doable due to missing
KERN_PROC_CWD and struct kinfo_file definitions in the libc crate.
|
|
|
|
In cases where the Alacritty process had invalid std handles then
the ConPTY subprocess would fail to spawn. By setting appropriate
flags we prevent these handles from being passed to the ConPTY
subprocess.
|
|
This fixes #2109.
|
|
To make sure all extended capabilities can be queried correctly, it is
necessary to compile the terminfo file using the `-x` flag.
Since Alacritty specified support for the XTerm mouse mode (XM/xm),
using the `-x` flag was not possible until now without breaking programs
like `htop`. By removing this flag, these issues should be resolved.
This fixes https://github.com/jwilm/alacritty/issues/2131.
|
|
This fixes two bugs with the alternate screen buffer.
When resetting while in the alt screen, Alacritty would not swap out
the grids leading to scrollback getting disabled. By swapping out the
grids again when resetting in the alternate screen buffer, scrollback is
now unaffected from a reset.
There was another issue with the cursor jumping around when leaving the
alt screen even though it was not active, this was fixed by skipping all
alt screen swap routines unless the current state matches the expected
state.
This fixes #2145.
|
|
|
|
This fixes two issues with live reloading the `scrolling.history`
property.
It is now possible to increase the scrollback history without restarting
Alacritty.
When decreasing the scrollback history while scrolled beyond the new
history limit, Alacritty will reset the viewport position to the new
limit instead of crashing.
This fixes #2147.
|
|
|
|
There was an issue caused by 35efb4619c4b7a77b3c30de763856bc4441e236e
which would lead to the current selection not getting copied to the
clipboard if the mouse was released outside of the window.
Instead of aborting any press/release actions when the cursor is not
inside of Alacritty, the handling is now delayed until actual usage.
|
|
Even though the `ClosePseudoConsole` API does not have a return
value, it was incorrectly queried by the `Drop` implementation for
the ConPTY, leading to a panic on exit.
The definition of this call has been updated to match the actual
function signatures, which resolve this problem.
|
|
|
|
Fixes #2098.
|
|
|
|
|
|
This prevents cell_width or cell_height being zero.
Fixes #1693
|
|
Automatically remove all selections when part of the screen is cleared.
This fixes issues in applications like `less -S` where a selection would
stay around after scrolling horizontally.
XTerm and URxvt both choose to always remove the selection, even if it's
outside of the cleared area, however VTE only clears the selection if
any part of it is inside the cleared area.
To keep things simple, Alacritty has adopted the behavior of XTerm and
URxvt to always clear selections.
This fixes #1644.
|
|
The default shift+pgup/pgdown buttons were sending the escape sequences
specified by the official standard, however most terminal emulators like
XTerm, URxvt and VTE make an exception for this special case and instead
scroll the native history buffer.
Both XTerm and URxvt do never send the escapes for Shift+PgUp/PgDown,
however VTE does send them in the alternate screen.
Since Alacritty already supports keybindings based on terminal mode and
the binding to scroll the history is useless when in the alternate
screen buffer, Alacritty is now following VTEs behavior here, allowing
applications in the alt screen (like vim) to handle this escape.
Fixes #1989.
|
|
The warning and error messages now don't overwrite other terminal
content anymore but instead resize the terminal to make sure that text
can always be read.
Instead of just showing that there is a new error and pointing to the log,
errors will now be displayed fully in multiple lines of text, assuming that
there is enough space left in the terminal.
Explicit mouse click handling has also been added to the message bar,
which made it possible to add a simple `close` button in the form of
`[X]`.
Alacritty's log file location is now stored in the `$ALACRITTY_LOG`
environment variable which the shell inherits automatically.
Previously there were some issues with the log file only being deleted
when certain methods for closing Alacritty were used (like typing
`exit`). This has been reworked and now Ctrl+D, exit and signals should
all work properly.
Before the config is reloaded, all current messages are now dropped.
This should help with multiple terminals all getting clogged up at the
same time when the config is broken.
When one message is removed, all other duplicate messages are
automatically removed too.
|
|
Since scrolling the terminal moves around the underlying data structure
of the terminal, the URL selection would search for the URL at the
position where the click would have been without any scrolling.
By adding the viewport offset to the click position, the URL clicking
now searches at the correct location.
This fixes https://github.com/jwilm/alacritty/issues/2076.
|
|
Fixes #1582.
Fixes #1875.
|