This is a large refactor of the config parsing structure, attempting to
reduce the size of the file a bit by splitting it up into different
modules with more specific purposes.
This also fixes#2279.
This resolves permission failures when modifying root-owned files
and such, e.g., modifying /etc/hosts. It had been possible
to work around this by adding alacritty to the set of
applications with "Full Disk Access" in System Preferences. macOS
now opens a prompt to confirm permission with a new installation.
This fixes#2337.
On macOS the clipboard actually returns an error when loading it and it
is empty. However this is not an `Empty` error but all errors are simple
boxed Errors from std.
Since loading the clipboard data usually should not fail, we now do not
log it as error if it fails but just print it to the debug log instead.
This fixes#2389.
This switches our own `copypasta` crate with the more standardized
`clipboard` library, which allows us to get rid of the `xclip`
dependency on X11.
Additionally, this lays the foundation for native Wayland clipboard
support once the clipboard crate is updated (or a fork is created).
Fixes#5.
The cfc20d4f34 commit introduced a
regression which would cause the cursor to disappear after the glyph
cache has been filled.
Since the cursor was not cached on the glyph cache, the cursor would
quickly fill up the OpenGL texture with lots of cursor textures and then
things would break after the atlas was filled completely.
This adds a separate cursor cache which is keyed by the cursor style
that will persist the texture without flooding the atlas.
This fixes#2355.
If a cell has a matching foreground and background and is inversed
through the escape or selection, it will now fall back to the default
background on top of the default foreground.
This makes it possible to show invisible text like this by selecting it.
Hidden text is unaffected by this change.
This fixes#2315.
This adds a DirectWrite font rasterizer for Windows and enables
subpixel rendering and hinting.
It also completely replaces rusttype for font rendering on Windows,
allowing Alacritty to use the native font stacks on all operating systems.
Fixes#1673.
Fixes#2316.
Since the block cursor inverts the background and foreground colors of a
cell, the hidden cursor has done the same thing without rendering a
cursor since it was using the block cursor shape.
A new `Hidden` cursor style has been introduced for explicitly handling
the invisible cursor differently.
This fixes#2342.
The ConPTY had a cryptic 'assertion failed: success' error whenever
spawning the shell failed.
This changes the ConPTY assertion to a human-readable error which
clearly states that the file could not be found.
The WinPTY backend has not been fixed yet.
This fixes#2016.
The `copypasta` crate incorrectly mapped the secondary clipboard on
Windows to the primary clipboard, leading to the primary clipboard
getting overwritten whenever the selection clipboard was updated.
The new Windows clipboard mimics the macOS clipboard, which also does
not have a selection clipboard.
This fixes#2050.
This fixes a recent regression in
cfc20d4f34 which broke cursor colors when
specified in the `colors.cursor` field in the config.
It also removes a lot of unneeded code from the font crate related to
the cursor rendering.
This fixes#2338.
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.