| Commit message (Collapse) | Author | Age |
| ... | |
| |
|
|
|
| |
Currently it only supports x11 via the xclip program, and that only
supports reading the clipboard contents.
|
| |
|
|
|
|
|
| |
This is a bit of an experiment to see if simply handling 'v' in the
bindings will work or has any bugs not going through ReceivedCharacter.
The change is necessary though to prevent 'v' from being written in
front of every clipboard paste.
|
| |
|
|
| |
doesn't work on ubuntu 16.04 for some reason
|
| |
|
|
|
|
|
|
|
|
|
| |
The main loop body was originally all written inline. There's now
separate functions for each of the actions the loop handles including
channel events, pty reading, and pty writing. There's also helper
functions on State for managing the write list.
The `EventLoop` and its `State` are returned when joining with the
thread it spawns. This will potentially be helpful once config reloading
is introduced.
|
| |
|
|
| |
This type and its implementations were seriously cluttering main.rs.
|
| | |
|
| |
|
|
|
|
| |
Linefeeds were triggering scrolls in incorrect situations.
Resolves #9.
|
| |
|
|
|
|
|
|
|
|
| |
This was largely an experiment to see whether writing and reading from a
separate thread was causing terminal state corruption as described in
https://github.com/jwilm/alacritty/issues/9. Although this doesn't seem
to fix that particular issue.
Keeping this because it generally seems more correct than
reading/writing from separate locations.
|
| |
|
|
|
|
|
|
|
| |
Also enables debug symbols in release profile by default. Until
Alacritty ships, there's going to be lots of perf analysis which needs
debug symbols.
The PriorityMutex low priority method was never used. Now it's just a
fair mutex.
|
| | |
|
| |
|
|
| |
This was previously logging as an unhandled `execute`.
|
| |
|
|
|
|
| |
Terminal output wouldn't reliably refresh the screen. Fix is to only
modify this flag when the terminal lock is held which suggests a larger
refactoring should happen.
|
| | |
|
| |
|
|
|
| |
There's some bounds checks we do that panic if the condition is ever
true.
|
| |
|
|
| |
Remove random println and add a missing #[inline]
|
| |
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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 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 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.
|