Age | Commit message (Collapse) | Author |
|
|
|
|
|
This change should allow the usage of scancodes in the configuration
file.
When a VirtualKeyCode for glutin is not present, this should now allow
the user to use the scancodes instead. If the user specifiecs a key with
its scancode even though the key has a VirtualKeyCode, it should still
work.
The behavior of directly specifying a VirtualKeyCode should be unchanged
by this.
This fixes #1265.
|
|
Initial support for Windows is implemented using the winpty translation
layer. Clipboard support for Windows is provided through the `clipboard`
crate, and font rasterization is provided by RustType.
The tty.rs file has been split into OS-specific files to separate
standard pty handling from the winpty implementation.
Several binary components are fetched via build script on windows
including libclang and winpty. These could be integrated more directly
in the future either by building those dependencies as part of the
Alacritty build process or by leveraging git lfs to store the artifacts.
Fixes #28.
|
|
|
|
Alacritty's manual installation instructions take up a lot of space in
the README and they are hard to navigate because there's a lot of
information for specific distros which are irrelevant to most users.
To improve this situation, the manual installation section has been
moved to the `INSTALL.md` file. This allows keeping the readme to a
minimum which just includes the straight-forward instructions required
to install it on systems which provide packages for it.
Having a separate file also makes it possible to add a full index just
for the installation instructions, which makes it possible to skip
sections which are irrelevant.
|
|
|
|
Serde has problems deserializing yaml files which contain sections
without any values. Since the `TERM` setting has been removed recently,
the `env` section was completely empty leading to deserialization
errors.
To resolve this the `env` section has been commented-out by default, if
the user wants to set a variable, it is now necessary to uncomment that
section.
Some minor tweaks have also been made to the existing `TERM` comments,
to clearly indicate these are value examples instead of comments.
|
|
|
|
|
|
On macOS 10.12.6, running `make app` creates a bundle that refuses to
start (it complains application is only compatible with more recent
versions of macOS). The binary works great when running it directly.
To resolve this, the `MACOSX_DEPLOYMENT_TARGET` environment
variable is now set automatically from the makefile. This allows
building on macOS 10.12 and earlier, without negatively impacting the
later versions of macOS.
|
|
The terminal lock is now dropped before rendering by storing
all grid cells before clearing the screen.
This frees the terminal to do other things since the lock is now
free, which lead to a performance benefit with high throughput
applications.
|
|
The patch uses the Cargo.toml patch section to force a single downstream
choice of freetype-sys instead of relying on forks of other crates. It
also bumps the fontconfig/freetype dependencies in the process.
|
|
Using the `bench` feature, `cargo test` was failing since one of the
benchmarks was running into a debug assertion for attempting to access a
line with an index beyond the grid length.
Since this issue was caused by the `len` property not being serialized
and deserialized, the `#[serde(skip)]` attribute has been changed to
`#[serde(default)]`. The ref-test has been edited to include the correct
grid length for proper deserialization.
This fixes #1604.
|
|
When rendering selections with both start and end outside of the visible
area, Alacritty would assume that both start and end are either above or
below the viewport and not render the selection at all.
To fix this the `buffer_line_to_visible` method now returns a
`ViewportPosition` instead of an `Option<Line>`, this allows giving more
feedback about where outside of the visible region the line is using the
`ViewportPosition::Above` and `ViewportPosition::Below` variants.
Using these newly introduced variants, a selection spanning the whole
screen is now rendered if the selection should go from above the visible
area to below it.
This fixes #1557.
|
|
|
|
The deprecated `window.decoration` values `true` and `false` were using
the `visit_bool` visitor for serde. However, only the `str` visitor was ever
called.
To print the correct deprecation notice, the bool visitor has been
removed and the warning has been added for the `"true"` and `"false"`
str visitor.
|
|
Since the mouse start position has been the first movement event after
the mouse button was held down, there have been some issues with the
start point lagging behind the cursor because movement events were not
reported from the initial position but there was a gap until movement
starts reporting.
To fix this whenever the mouse button is pressed, the position and cell
side is stored on the `Mouse` struct. Because of this it does not matter
anymore if the movement events are all reported and we can just start a
selection using the stored position/side whenever there currently is no
selection present.
This fixes #1366
|
|
When selecting multiple lines in Alacritty, there was an issue with
empty lines not being copied. This behavior has been chanaged so empty
lines should be correctly copied now.
When copying content which ends with an empty line, Alacritty would copy
an additional empty line.
This has been resolved by only adding empty lines when the empty line
was not in the last selected line.
|
|
|
|
The reset cursor terminal escape sequnce specified in the terminfo file
was using xterm's `\E[2 q`. However this just resets the cursor to the
block cursor shape.
Since Alacritty supports the `\E[0 q` escape sequence for resetting the
cursor shape to the original shape specified in the configuration file,
the terminfo file has been altered to make use of this sequence instead.
|
|
This replaces the current definitions, which depend on the system's
'xterm-256color' terminfo definition with the `alacritty` and
`alacritty-direct` definitions.
The new definitions are completely standalone.
The default `TERM` value has been changed to be dynamically
set based on the definitions installed on the system. Alacritty will
try to use the `alacritty` definition first and fall back to
`xterm-256color` if the `alacritty` definition is not present.
|
|
Previously Alacritty has initialized all lines in the buffer as soon as
it is started. This had the effect that terminals which aren't making
use of the scrollback buffer yet, would still consume large amounts of
memory, potentially even freezing the system at startup.
To resolve this problem, the grid is now dynamically resized in chunks
of `1000` rows. The initial size is just the visible area itself, then
every time lines are written to the terminal emulator, the grid storage
is grown when required.
With the worst-case scenario of having 100_000 lines scrollback
configured, this change improves startup performance at the cost of
scrolling performance.
On my machine the startup changes from ~0.3 to ~0.2 seconds.
The scrolling performance with large throughput is not affected, however
it is slowed down when the number of lines scrolled are close to the
100_000 configured as scrollback. The most taxing benchmark I've found
for this was running `yes | dd count=500 > 500.txt` (note the relatively
small file size). This will cause a slowdown on the first run from 0.05s
to 0.15s. While this is significant, it lines up with the time saved at
startup.
This fixes #1236.
|
|
A new configuration option `save_to_clipboard` has been added
to the `selection` section of the configuration. This allows writing
every selection to the primary system clipboard when it is set
to `true`.
On linux the selection is still written to the selection clipboard,
independent of the value of the `save_to_clipboard` setting.
|
|
This adds a config option which allows setting terminal colors above the
0..16 range.
Live config reload already works for this, so it is possible to change
these colors the same way it works with the normal colors.
If a color below 16 is specified, the configuration will throw an error,
so the normal colors can't be overridden. This is just to prevent
possible complications with the settings that already exist.
|
|
The mesa workaround has lead to some issues with
rendering on Wayland.
To resolve this problem, the mesa workaround has been
restructured in a way which still allows clearing the screen
before rendering without killing performance with the mesa
driver. The performance is identical to the master brach
and there have been no recorded regressions.
|
|
This changes a lot of small details in the configuration file in an
attempt to unify its structure. These are some main guidelines used for
this refactoring:
- Specify that changes require restart consistently
- Unify the specification of available field values
- Provide clear distinction between description title and body
Besides these guidelines used to unify minor details in the
configuration file, the section on key configuration has been completely
reworked in an attempt to reduce the amount of text used. This should
make it possible to understand what's going on without having to read
any text.
The notice that modifiers are not supported has been removed from the
mouse binding documentation.
|
|
The latest change to window decorations
(3b46859eceea39afb8bbc760235cc15de78d3ff3) introduced a regression when
running Alacritty without the `decorations` field specified in the
configuration file. Since serde wasn't setup to fallback to the default,
the complete config deserialization would fail.
This resolves this issue by deserializing it to the default decorations
value "Full". To make this setting a little more forgiving, this also
introduces another change which ignores the case for the configuration
options. So both `full` and `FuLl` are now accepted.
|
|
The bracketed paste mode change isn't so much a fix as it is a change to
address a potential security issue.
|
|
The decorations config was changed from a bool to an enum.
`full` has taken the place of `true`, and `none`, has replaced `false`.
On macOS, there are now options for `transparent` and `buttonless`.
These options are explained in both the CHANGELOG and in the
configuration files.
|
|
|
|
* Fix Bracketed Paste Mode when input contains end sequence.
* Remove \x1b instead of just the paste end sequence.
|
|
Update snapcraft.yaml
|
|
The existing snapcraft.yaml is pointing to a file that has been renamed,
subsequently breaking the snap build. This change renames the .desktop
file to match what is in-tree.
|
|
|
|
Alacritty has some checks in place to make sure that unsafe
code would not fail because of invalid struct sizes. This managed
to successfully catch an incorrect unsafe block on 32-bit machines.
To make sure this block works on both 32-bit and 64-bit systems,
it has been altered to make use of the platform-dependent `usize`
type. This will always make use of correct sizes without having to
rely on conditional compilation.
|
|
The core-* dependencies have been updated and every breaking
change has been resolved.
These are the main changes which required adaption:
- font_path() returns a PathBuf now
- get_descriptors() returns an Option<CFArray>
- get_advances_for_glyphs and get_glyphs_for_characters are now unsafe.
All packages which did not have breaking updates have also been updated.
|
|
Alacritty made the assumption that every window started as focused and
because of that the hollow cursor wouldn't show up for windows which are
launched without focus.
Since even the initial focus should be reported as a focus event by
winit, this could be easily fixed just setting the default window state
to unfocused instead of focused.
This fixes #1563.
|
|
This adds support for the `hidden` escape sequence `\e[8m`, which will
render the text as invisible.
This has also raised a few questions about the rendering of foreground
and background colors and their interaction with the different escape
sequences. Previously, Alacritty has oriented itself after URxvt, which
has some strange and unexpected behavior.
The new implementation of color inversion is modeled after XTerm, which
has a consistent pattern of always inverting the foreground and
background colors. This should hopefully lead to less confusion for the
user and a more consistent behavior.
A full matrix showcasing the new way Alacritty inverses text can be
found here:
https://i.imgur.com/d1XavG7.png
This fixes #1454 and fixes #1455.
|
|
macOS 10.14 will bring a new system wide dark mode. To enable this, the
[official guides][] suggest to relink using the newest OS. This
approach, however, did not work for me as described in [an issue][] in
the glutin repository.
As a second option, the accompanying `Info.plist` file can also
overwrite the link-time check and enable dark mode rendering if the
system config is set by setting `NSRequiresAquaSystemAppearance` to
`YES`. This approach seems to work flawlessly no matter if a user opts
into dark mode or not.
I would appreciate it if someone can test this on macOS 10.13 as well,
but I suppose the key there is unused and would not break anything.
[official guides]: https://developer.apple.com/documentation/appkit/appkit_release_notes_for_macos_10.14_beta
[an issue]: https://github.com/tomaka/glutin/issues/1053#issuecomment-409315461
|
|
Changing tabspaces from the default (8) requires a corresponding
update to the `it` item in the terminfo entry used.
Some applications, like Emacs, rely on knowing the width of a tab, and
will experience unexpected behavior if the terminfo data does not
match the actual width used.
|
|
Since the scrollback history allocates all lines in memory, it is
possible to specify a scrollback history which is big enough to freeze
the computer due to OOM.
To resolve this issue, an upper limit of `100_000` has been set for the
scrollback history. Even though this might still cause some systems to
freeze, this should provide a good balance for most users.
|
|
|
|
|
|
|
|
--install`
The zsh completion name for the deb installer has been corrected.
The installation instructions for the zsh completions have also been
updated to make it possible to install them without root permissios.
|
|
Set `COLORTERM` to `truecolor` in order for applications to be able to
detect that alacritty supports 24-bit colors.
See https://gist.github.com/XVilka/8346728 for more details.
Closes #1526.
|
|
Fixes a regression on non-macOS platforms caused by the fix for
issue #1291. The fix is to follow platform norms for mouse click
behavior on unfocused terminals. On macOS, the first click (that
gives the window focus) is swallowed, and has no effect on the
terminal. On all other platforms, the first click is passed through
to the terminal.
|
|
Since Alacritty does not require the AUR anymore, its mention has been
removed from the README.
To make future changes simpler, the README has also been reworded so
less changes are required for adding new operating systems.
|
|
|