This adds the option to automatically launch URLs with a specified
program when clicking on them.
The config option `mouse.url_launcher` has been added to specify which
program should be used to open the URL. The URL is always passed as the
last parameter to the specified command.
This fixes#113.
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.
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.
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.
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.
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
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.
* Change deb installation from crates.io to git
There have been a number of issues an PRs opened since
the cargo-deb installation does not work with the latest
version from crates.io.
To help out users until the crates.io version is updated,
the installation instructions have been temporarily
changed to install `cargo-deb` through github.
* Revert cargo-deb install back to use crates.io
Since `cargo-deb` has been updated on crates.io it is now
possible to just install it from crates.io and build Alacritty's
deb without having to rely on github.
* Update dependencies
This fixes an `illegal hardware instruction (core dumped)`
error when building in release mode.
* Remove redundant copy when selecting font_key
* Bump version number to 0.2.0
Since the Scrollback branch introduces some major changes, this bumps
the version number from 0.1.0 to 0.2.0.
The versions of Alacritty have not been updated regularly to this point,
so the scrollback branch is a good point in time to start updating
Alacritty's version on a regular basis.
Further changes to the readme, like dropping the 'alpha' status and
updating it to 'beta' could also be introduced with this branch. This
way there will be a clean cut which updates everything as soon as
scrollback is merged.
Building versions is another thing which would be a good thing to start
reasonably quickly. However starting this on the main branch after
scrollback has been merged seems like a more reliable way to move
forward.
This fixes#1240.
* Add a CHANGELOG file
A CHANGELOG file has been added to offer a bit more transparency over
which features have been changed, added and potentially removed in
Alacritty.
There are various formats available for the CHANGELOG file but the most
common and sensible one seems to be the one defined by
https://keepachangelog.com/en/1.0.0. Following the template proposed by
this it should be possible to create a clear CHANGELOG which makes it
simple for new contributors to figure out exactly which formatting
should be used for it.
Since there have been quite a few changes to Alacritty already, not all
changes have been added to the changelog. However a few entries have
been ported just to give a bit of an example what the format should look
like. This also helps with the 0.2.0 version since it will not be
completely empty in the changelog.
This fixes#1534.
* Update CHANGELOG
This updates the CHANGELOG to include the changes introduced by
43882ade33.