Age | Commit message (Collapse) | Author |
|
|
|
The renderer should be able to use the discriminant_value to determine
vertex colors.
|
|
The architecture here is really poor. Need to move file watching into a
dedicated location and probably have an spmc broadcast queue. other
modules besides rendering will care about config reloading in the
future.
|
|
|
|
Added solarized dark color scheme for testing purposes.
Resolves #1.
|
|
Now uses serde_dervive \o/
|
|
Resolves #10.
|
|
This is used by things like Bash's reverse-i-search and things get
*very* messed up without it.
|
|
Resolves #8
|
|
|
|
|
|
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]
|
|
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.
|