Commit graph

549 commits

Author SHA1 Message Date
Kirill Chibisov 5b1dd38806
Fix cursor and underlines always being black
Some old hardware doesn't like universal shader approach for all the
rectangle kinds leading to ALU instruction limits. This commit fixes
it by splitting the shader per rectangle kind.

Fixes #6417.
2022-10-21 22:19:42 +03:00
Andrzej Grzeslak c3b915b695
Fix --help output for --class to match man pages
The output of --help did not match the man pages with regards to the
ordering of arguments for the --class flag. This has now been fixed.

Fixes #6413.
2022-10-18 22:11:40 +00:00
Christian Duerr 269b6e3dba
Fix changelog versioning 2022-10-14 05:57:20 +03:00
Christian Duerr a51dbe25d6
Bump development version to 0.12.0-dev
This is only an update to the development version and does not represent
a stable release.
2022-09-03 19:43:05 +00:00
Kirill Chibisov 18f9c27939
Add inline input method support
This commit adds support for inline IME handling. It also makes the
search bar use underline cursor instead of using '_' character.

Fixes #1613.
2022-08-29 16:29:13 +03:00
Kirill Chibisov 791f79a02a
Rework --class CLI option
This commit swaps the order of `general` and `instance` arguments
and also sets `instance` to `general` when only one argument was
provided. This should make this option behave like in other terminals
on X11, since they set either both or general by default, but
not instance like Alacritty.

Fixes #6279.
2022-08-25 05:51:19 +00:00
Kirill Chibisov 5549e9eb04
Bump winit to 0.27.2 2022-08-13 10:06:54 +04:00
trimental 376300385b
Use WindowEvent::Occluded to hint rendering
This should prevent rendering on macOS and X11 to invisible
windows.
2022-08-11 13:06:19 +04:00
Kirill Chibisov 7d708d53f7
Bump glutin to 0.29.1
Fixes #6239.
Fixes #5975.
Fixes #5876.
Fixes #5767.
Fixes #4484.
Fixes #3139.
2022-08-10 16:48:46 +04:00
Sabu Siyad 76c5d01ee2
Warn if only columns XOR lines is set
Co-authored-by: Christian Duerr <contact@christianduerr.com>
2022-08-02 20:43:37 +00:00
Chris Copeland c3f3bd3666
Register Alacritty shells as tty sessions on macOS
Unless the `shell` config is specified, launch the user's shell with:

```sh
login -flp $USER /bin/sh -c "exec -a -shell /path/to/shell"
```

On macOS, just running a shell prefixed by `-` is not sufficient to be
registered as a login session for things like `w` and `logname`.
However, using the `login` command changes the directory to `$HOME`
before running the program by default, which is not desired. The `-l`
flag disables this behavior, but also skips prepending `-` to the
executed program, so shells will not run as login shells. Instead we
just do this part ourselves with `exec -a`. The result is login shells
that run in the intended directory and are registered as tty sessions.

Fixes #3420.
2022-07-24 02:51:16 +00:00
Chris Copeland 2a676dfad8
Fix thin strokes on macOS
Remove the `font.use_thin_strokes` config, which only did anything on
macOS and only prior to Big Sur. Instead, we will enable or disable
"font smoothing" on macOS based on the `AppleFontSmoothing` user
default.

These changes let users get the "thin strokes" behavior by setting
`AppleFontSmoothing` to 0 with:

```sh
$ defaults write -g AppleFontSmoothing -int 0
```

(Or replace `-g` with `org.alacritty` to apply this setting only to
Alacritty.app, rather than the whole system.)

Add a `removed` config attribute to show helpful warnings to users
who are using config options that don't do anything anymore, and apply
this attribute to `font.use_thin_strokes`.

Bump `crossfont` to 0.5.0 to pick up the new font smoothing behavior.
This release also includes a fix for a crash when trying to load a
disabled font.

Fixes #4616.
Fixes #6108.
2022-07-15 21:56:26 +00:00
Kirill Chibisov e09ff0b4b0
Use org.alacritty instead of io.alacritty
The common naming is reverse DNS, and given that alacritty is using
alacritty.org it makes more sense to use org.alacritty instead of
old io.alacritty.
2022-07-10 23:55:57 +03:00
Kirill Chibisov 694a52bcff
Add support for hyperlink escape sequence
This commit adds support for hyperlink escape sequence
`OSC 8 ; params ; URI ST`. The configuration option responsible for
those is `hints.enabled.hyperlinks`.

Fixes #922.
2022-07-10 20:11:28 +03:00
Ethan Conneely 8451b75689
Fix error when opening in root dir on Windows 2022-07-10 12:10:28 +03:00
Kirill Chibisov ebc6922eaa
Add cursor.blink_timeout config option
This option should prevent extensive power usage due to cursor blinking
when there's no user activity being performed.

Fixes #5992.
2022-07-01 11:40:27 +03:00
Sabu Siyad 75b0005619
Add hexadecimal support to --embed
Closes #6145.
2022-06-28 18:22:38 +00:00
Kirill Chibisov ff63344b7e
Ignore special files for live config reload
When using `--config-file /dev/null` with `live_config_reload`, each
write to `/dev/null` was forcing alacritty to reload its configuration.

This commit makes alacritty ignore special files for live config reload.

Co-authored-by: Christian Duerr <contact@christianduerr.com>
2022-06-16 22:33:47 +00:00
Christian Duerr 4c171e7678
Bump copypasta to 0.8.0
This also applies all non-breaking semver updates.
2022-06-16 18:36:27 +03:00
jeremycostanzo fdcf99b0c1
Add vi action to center view around vi cursor 2022-06-10 00:08:18 +03:00
Kirill Chibisov 90552e3e7f
Fix flickering during resize on Wayland
This also fixes an issue of windows not being rendered while resizing.

Fixes #6069.
2022-06-09 16:31:08 +00:00
André Kugland e20541a83e
Fix DEC Special Character Set (Line drawing)
This patch resolves some mapping issues with the line drawing character
set where characters like linefeed were incorrectly mapped to their
proper character representation rather than the codepoint of their
identification glpyh.

Co-authored-by: Christian Duerr <contact@christianduerr.com>
2022-06-01 03:33:08 +00:00
Kirill Chibisov 3bfc4c2808
Don't inherit --command for SpawnNewInstance
Fixes #6060.
2022-05-23 03:35:09 +03:00
algon e319ca93a6
Fix builtin glyphs for U+2567 and U+2568 2022-05-20 13:08:25 +03:00
Kirill Chibisov 5c51d528ea
Fix gap in builtin box drawing
Builtin box drawing glyphs in range from '\u{2580}' to `\u{2587}`
could have gap due to missing rounding. Previously height was rounded,
however not the `y` offset. This commit fixes it.
2022-05-08 11:24:51 +03:00
mahkoh 9bbb296d1d
Fix selection copy without button release
To prevent the current selection clipboard from being overwritten right
before pasting, text is no longer copied solely because the user
scrolled the scrollback buffer.

The selection also isn't copied when a mouse button other than LMB/RMB
are released, since these are the only ones capable of modifying the
selection range.

This should prevent issues where the selection of the user gets
unexpectedly overwritten, especially in scenarios where the user is
currently in the process of pasting something into Alacritty.

Signed-off-by: Julian Orth <ju.orth@gmail.com>
2022-04-16 18:39:26 +00:00
Kirill Chibisov 851dbc328e
Disallow OSC 52 for unfocused window
This leads to issues on macOS, since if we store clipboard at the same
time it could error out. Also, on e.g. Wayland the clipboard store for
unfocused window won't work anyway.
2022-04-03 23:08:44 +03:00
Kirill Chibisov b16fe1259c
Reset blinking on search bindings in Vi mode
The Vi cursor is used as the current match indicator, however when
it's blinking during search jumps the current match is invisible.

Fixes #5934.
2022-03-25 15:02:44 +03:00
Kirill Chibisov e7bb6c2ea7
Persist OpenGL context creation flags
This commit persists OpenGL context creation flags from previous window
build attempts saving time in multiwindow context.

It also creates window as srgb by default, since it's what Alacritty is
rendering in. For reference [1] and [2]. Moreover the fallback for 10
bit colors is also added.

[1] - https://github.com/alacritty/alacritty/issues/4939 and
[2] - https://github.com/alacritty/alacritty/issues/3756.

Fixes #4703.
2022-03-24 12:13:30 +03:00
Kirill Chibisov f4bdf5fb36
Add colored underline support
This commit adds support for colored underline and refines the dynamic
extra storage. The extra storage now is using `Arc` making cloning it way
faster compared to `Box` approach which scales really well when it comes
to cloning in `Term::write_at_cursor`, since cloning `Arc` is constant
time.

Fixes #4142.
2022-03-16 19:27:55 +03:00
Kirill Chibisov 7312f33f67
Fix font.glyph_offset not live reloading
Fixes #5944.
2022-03-11 12:34:15 +03:00
Christian Duerr 0965773657
Fix crash when searching during reset
This fixes a crash which occurs when the terminal is reset while
searching, due to the vi mode cursor being outside of the visible area.

This also fixes an issue where the search state reset would incorrectly
clamp the vi mode cursor to the grid, rather than the absolute viewport
position.

While this fix does resolve all crashes when searching while running
`cat /dev/urandom`, it does raise the question if manually clamping the
vi mode cursor in every location where it is modified is the right
choice.

A follow-up to provide a safer API which guarantees correct modification
of the vi mode cursor location is probably a good idea.

Fixes #5942.
2022-03-10 22:45:20 +03:00
Kirill Chibisov 1880522b64
Add fallback GLES2 renderer
Currently Alacritty only works on hardware which supports OpenGL 3.3 or
more, which can become problematic with older devices. This patch adds a
new GLES2 renderer, since it is much more widely supported, especially
on weaker hardware like phones or a Raspberry Pi.

While the GLES2 renderer is slower than the OpenGL 3.3+ version, it is
still significantly faster than software rendering. However because of
this performance difference it is only used when necessary and there
should be no difference for machines supporting OpenGL 3.3+.

The two renderers are largely independent and separated in the
`renderer/text/glsl3` and `renderer/text/gles2` modules. Separate
shaders are also required for text rendering. The rectangle rendering
for underlines and the visual bell works identically for both versions,
but does have some version-specific shader code.

Fixes #128.

Co-authored-by: Christian Duerr <contact@christianduerr.com>
2022-03-02 10:05:12 +00:00
Chris Copeland 00383ae967
Add ToggleMaximized key binding action 2022-02-27 18:35:23 +00:00
Christian Duerr 13b6248dd9
Add version 0.10.1 to changelog 2022-02-24 07:17:25 +03:00
mahkoh aaab88c5c5
Account for absolute WAYLAND_DISPLAY paths
If WAYLAND_DISPLAY contains a '/', we have to replace with with another
character before using WAYLAND_DISPLAY as a path component.
2022-02-16 21:15:50 +00:00
Kirill Chibisov ed5dbc1118
Add support for dashed and dotted underlines
This finishes implementation of underline styles provided by
`CSI 4 : [1-5] m` escape sequence.
2022-02-14 19:10:13 +03:00
Kirill Chibisov 59f16f6b15
Fix alpha when using colors.transparent_background_colors
The alpha is expected to be premultiplied from the text shader, so
we should apply it to the background color.
2022-02-09 17:41:57 +03:00
Kirill Chibisov 73c3dd8628
Add support for drawing undercurls
Fixes #1628.
2022-02-08 20:47:31 +03:00
Christian Duerr 4bf8f375ef
Fix repeated permission requests on M1 macs
This adds a codesign step to our makefile build which should
automatically sign the application and resolve the issues on M1 macs
where Alacritty constantly requests permissions.

Since self-signing does still seem to fix this issue after sharing the
resulting `Alacritty.app` with other M1 macs, the binary produced by our
release build should also be fixed automatically.

Fixes #5840.
2022-02-02 19:23:29 +00:00
Kirill Chibisov 8f1abe13e6
Add damage tracking and reporting to compatible compositors
This allows compositors to only process damaged (that is, updated)
regions of our window buffer, which for larger window sizes (think 4k)
should significantly reduce compositing workload under compositors that
support/honor it, which is good for performance, battery life and lower
latency over remote connections like VNC.

On Wayland, clients are expected to always report correct damage, so
this makes us a good citizen there. It can also aid remote desktop
(waypipe, rdp, vnc, ...) and other types of screencopy by having damage
bubble up correctly.

Fixes #3186.
2022-02-02 00:12:58 +03:00
Kirill Chibisov 5459492eae
Use cell width to compute builtin font thickness
While using underline thickness could sound logical to draw other
lines most fonts don't make underlines thick compared to cell bounding
box if you increase font size. So instead we're using cell width to
scale builtin font nicely.

This commit also adjusts arcs drawing and alignment.

Fixes #5826.
Fixes #5821.
2022-01-30 15:46:02 +03:00
Kirill Chibisov f6651a997b
Account for font.offset and glyph.offset in built-in font
This commit takes into account `font.offset` and `font.glyph_offset`
when generating built-in font.
2022-01-29 23:06:44 +03:00
zandr 094c2c9269
Add option to control built-in box drawing chars
This commit adds the config `font.builtin_box_drawing` option to
control built-in font, which is enabled by default.
2022-01-29 22:50:44 +03:00
Christian Duerr 9f6b49ca8f
Fix logfile overwriting existing files 2022-01-22 22:48:44 +00:00
DaftMouse c4d610d5bf
Fix OSC 104 with empty second parameter
This fixes a bug where using OSC 104 without parameters but
with a trailling semicolon (e.g. '\e]104;\e\\') would not be handled.

Fixes #5542.
2022-01-20 23:57:58 +00:00
DaftMouse 60ef17e8e9
Add ´?´ support to OSC 4 2022-01-15 03:35:05 +00:00
Christian Duerr e38f51c6bd
Remove time dependency
In 7398e9f a regression was introduced which causes Alacritty to crash
on startup since wayland has a keyboard repeat rate thread started
before our logger is initialized.

Since the latest version of time was rather inconvenient to use anyway
and there is no nice solution for this issue other than downgrading the
`time` version again, the time since startup is now logged instead of
the local time.

This should still provide all the relevant information, while getting
rid of an unnecessary dependency. While it would be possible to also
print the delta between log messages, this can be trivially computed so
it has been omitted to skip adding another `Mutex` to the `Logger`
struct.
2022-01-13 08:36:22 +03:00
Christian Duerr ed35d033ae
Fix fullwidth char regex search infinite loop
This resolves an issue where the regex search could loop indefinitely
when the end point was defined in a location containing a fullwidth
character, thus skipping over the end before termination.

Fixes #5753.
2022-01-08 20:24:42 +00:00
Kirill Chibisov f7177101ed
Use builtin font for box drawing unicode characters
This commit adds hand rolled drawing of unicode box drawing[1] and
block elements[2] from ranges U+2500 up to U+259f. While using system
font for such characters will look better most of the time, the
characters tend to overlap or not align, so providing builtin font is
the lesser evil here.

[1] - https://www.unicode.org/charts/PDF/U2500.pdf
[2] - https://www.unicode.org/charts/PDF/U2580.pdf

Fixes #5485.
2022-01-06 00:45:06 +03:00