| Commit message (Collapse) | Author | Age |
| ... | |
| | |
|
| | |
|
| |
|
|
|
| |
There's some bounds checks we do that panic if the condition is ever
true.
|
| |
|
|
| |
Remove random println and add a missing #[inline]
|
| |
|
|
|
|
|
| |
Adds a `rustc-version` file which can be used to get the proper
compiler.
rustup override set $(cat rustc-version)
|
| |
|
|
|
|
|
| |
Using the vte crate allows removal of the ansi parser state machine and
enables us to just be concerned with actions described in the protocol.
In addition to making alacritty simpler, this also improves correctness
and performance.
|
| |
|
|
|
| |
Allegedly x11 wants you to wait for a refresh event before using the
context, but that doesn't arrive on all platforms (notably macOS).
|
| |
|
|
|
| |
There might be a better way to track cursor state such that these checks
aren't necessary.
|
| |
|
|
|
| |
Among other issues, this fixes a very vissible issue with typing in the
middle of a shell command.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is only like the third time I've made this change. The issue of
having a blank screen at startup is due to x11 event loop + glX
interactions. Not sure what the problem is specifically, but
glXMakecurrent was blocking until the x11 event loop advanced.
The input and rendering are able to live on the same thread while still
removing unnecessary renders due to the
glutin::WindowProxy::wakeup_event_loop() method. The PtyReader just
kicks the event loop when there's something to do; otherwise, the event
loop just waits for something to happen and _doesn't_ draw in free run
mode.
|
| |
|
|
|
|
|
|
|
|
| |
Currently has a bug where screen is blank at startup. That aside,
Alacritty uses basically 0 CPU now. The input thread is still separate
from the render thread, but, given the ability to wake the event loop,
it may be possible to merge them again. I'm not sure if that's actually
desirable.
Performance is seemingly unchanged.
|
| |
|
|
| |
Glutin includes GlContext::clear_current() for linux
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
To minimize rendering, the input must be handled in a separate thread.
To see, why, consider the optimal rendering solution: renders are only
necessary when the pty has data that changes the terminal state, OR
there is a window event which changes the graphics state. When not
drawing, the render thread is to remain parked at a condition variable,
and it's not possible to handle input while parked! Thus, we need a
separate thread.
In addition to adding the separate thread, each subsystem thread is now
spawned in a separate function to (hopefully) improve readability.
|
| |
|
|
|
|
|
|
|
|
|
| |
The previous scrolling + scroll region implementation exhibited display
corruption bugs in several applications including tmux, irssi, htop, and
vim. The new implementation doesn't seem to suffer from any of those
issues.
This implementation is able to `find /usr` on my machine (nearly 600k
lines) in ~2.0 seconds while st is able to do the same in ~2.2 seconds.
Alacritty is officially faster!
|
| |
|
|
|
|
| |
Previously these were only printed in debug mode, but they are nice to
have in release to see if something should be called that's not when an
application doesn't behave properly.
|
| | |
|
| |
|
|
|
| |
This also fixed an issue with reverse index where columns where used
instead of lines.
|
| | |
|
| |
|
|
|
| |
In applications with a scroll region, newlines were not being properly
added because the scroll region was ignored.
|
| |
|
|
|
| |
Fixes an issue where input with the cursor at the bottom-right of the
terminal would cause a crash.
|
| |
|
|
| |
Errors/warnings fixed.
|
| |
|
|
|
| |
This will prevent builds from being constantly broken... arbitrary
nightlies are not yet supported.
|
| |
|
|
|
|
| |
The FreeType font Rasterizer API is updated to match the CoreText
Rasterizer. This enabled bold/italic fonts since the rest of the
codebase has already been updated.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds support for rendering italic fonts and bold fonts.
The `font` crate has a couple of new paradigms to support this: font
keys and glyph keys. `FontKey` is a lightweight (4 byte) identifier for
a font loaded out of the rasterizer. This replaces `FontDesc` for
rasterizing glyphs from a loaded font. `FontDesc` had the problem that
it contained two strings, and the glyph cache needs to store a copy of
the font key for every loaded glyph. `GlyphKey` is now passed to the
glyph rasterization method instead of a simple `char`. `GlyphKey`
contains information including font, size, and the character.
The rasterizer APIs do not define what happens when loading the same
font from a `FontDesc` more than once. It is assumed that the
application will track the resulting `FontKey` instead of asking the
font to be loaded multiple times.
|
| |
|
|
|
| |
This enables narrower rendering of glyphs and it tends to look a bit
better. iTerm2 and Terminal both do this.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This is experimental on a separate branch of Glutin. It's intended to
fix the problem of certain key events not being delivered on alt-tab and
breaking the modifier state tracking.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Resetting a cell now takes a template. The template is `memcpy`d onto
the cell being reset. This also solves the problem of `Cell.reset()`
being hardcoded to a particular terminal foreground and background.
Scrolling was refactored to need one less branch. There are now
separate functions for scrolling up/down.
Fixes a bug where the first tabstop would not be displayed properly.
`set_char()` code was merged into the handler `input()` method.
|
| |
|
|
| |
It was always printing intead of only debug builds.
|
| |
|
|
| |
Added a test while debugging arrow keys, no reason to delete it.
|
| |
|
|
| |
Don't need to handle modifier keys beyond updating state
|
| |
|
|
| |
Make sure all input bytes get flushed
|
| | |
|
| | |
|
| |
|
|
| |
Switched to vendored Utf8Chars.
|
| |
|
|
| |
Escapes terminated by a bell were not properly handled.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
Glutin sends both a received character and the key pressed event when a
key is pressed. Because delete and backspace are mapped in reverse by
terminal standards, we ignore the received character 0x07 and 0x7f
values. However, this breaks Control-H since this normally sends 0x07 as
well. The fix here adds handling for Control-H through the input
tracking system.
|
| |
|
|
| |
The line should not be cleared.
|
| |
|
|
|
|
| |
Cells with no content that had the cell::INVERSE flag were not being
rendered. This was noticeable in `man` where the bar at the bottom would
have gaps in it.
|
| |
|
|
|
|
|
| |
Previous version of serde no longer worked; cargo packages were updated
as a result. `Zero` and `One` traits were deprecated. Use of those was
removed. The `Step` trait gained a lot more methods, and the index::$ty
implementations were updated.
|
| | |
|
| |
|
|
| |
Unused things have been removed.
|
| |
|
|
|
| |
The cursor now matches perfectly cell widths and actually shows the
character underneath.
|
| |
|
|
|
| |
insert_blank_lines and delete_lines were requesting scrolls in wrong
directions since a recent refactor to use strongly typed directions.
|
| | |
|
| |
|
|
|
|
| |
A few instances of println! are replaced with debug_println! as to be
excluded in release builds. Unimplemented methods are now tagged with
[unimlemented] in the format string.
|