Age | Commit message (Collapse) | Author |
|
It's nice to be able to use incremental compilation for release builds.
TODO quantify performance impact.
|
|
Backtraces are useful, but line-level debuginfo bloats the binary, and has impact on compile times notably. This reduces it to function-level debuginfo which is a good compromise point.
|
|
Note that `WM_CLASS` is now set to `"alacritty", "Alacritty"`
instead of the previous value of `"Alacritty", "Alacritty"`. This
seems to be more standard.
This also contains some revised recommendations for installing the
`.desktop` file.
|
|
|
|
Upgrading glutin to the latest version allows building alacritty even
with old XRandr versions.
This is relevant for Debian machines (and other ancient systems).
|
|
Updated the version of some dependencies.
This also changes to a new clippy version so clippy can work with the latest nightly compiler again. Some issues created by new lints have been fixed.
|
|
When an application takes control over the mouse, it usually disables
selection completely. However the common way to still make selection
possible is by allowing selection while the shift key is held down.
This feature is implemented here by making use of the new `modifiers`
field on mouse events with glutin/winit.
This fixes jwilm/alacritty#146.
|
|
This allows e.g. tmux to set the clipboard via the OSC 52 escape code.
|
|
|
|
|
|
|
|
|
|
This became a support burden for me due to various compile and run time
issues.
|
|
|
|
Useful when requesting more info to help investigating issues.
|
|
|
|
When RUST_LOG environment variable is set, uses env_logger instead of
our custom logger. This is desirable for debugging purposes.
|
|
This reverts commit e17d38167e174a2cf664e430fe968ec6492e1f08.
Was breaking builds for mac users.
|
|
This PR fixes a few wayland issues of alacritty (and updates glutin on
the process because it is needed).
Mainly two changes are done:
1. Add a drawing_ready() method on Window: see
https://docs.rs/winit/0.8.2/winit/os/unix/trait.WindowExt.html#tymethod.is_ready
for explanations. Hopefully glutin will be able to handle it itself in
the future, but it currently does not.
2. resize window and OpenGL contextes.
The way wayland forces winit to draw its own decorations and how surface
size is defined by its content means that in practice:
- winit's window.set_inner_size() defines the dimensions of the
borders
- glutins gl_window.resize() defines the dimensions of the content
(and is a noop in other platforms)
It is for now glutin's user responsibility to keep them in sync
otherwise borders are drawn stupidly. This PR changes the resize methods
of alacritty::Window to always update both.
This fixed the borders issues for me, tested on weston.
|
|
Because there are so many clippy warnings in the current codebase,
this commit removes '#![cfg_attr(feature = "clippy", deny(clippy))]',
to make it easier to fix warnings incrementally.
|
|
|
|
|
|
|
|
|
|
Resolves #679
|
|
* Update to latest Glutin/winit
This *finally* gets us off the fork of Glutin we've been on for so long
and will unblock a number of other items. Functionality should be the
same as before.
The update forced our hand on a compiler update. It's no longer
feasible to pin on an old version. From now on, we require latest
stable.
|
|
This reverts commit 3cdba291242cc1c1684bff7f8242262b1cdeb582.
On some systems, the target commit actually caused a massive performance
issue rather than fixing one.
|
|
The InstanceData type in the rendering subsystem was previously 16
floats which occupied a total of 64 bytes per instance. This meant that
for every character or background cell drawn, 64 bytes were sent to the
GPU. In the case of a 400x100 cell grid, a total of 2.5MB would be sent.
This patch reduces InstanceData's size to 26 bytes, a 60% improvement!
Using the above example for comparison, a worst case of 1MB would be
transferred.
The motivation for this patch comes from macOS. Once the terminal grid
would reach a certain size, performance experienced a sharp and dramatic
drop (render times would go from ~3ms to ~16ms). I don't want to
speculate too much on the underlying issue, but suffice it to say that
this patch alleviates the problem in my testing.
|
|
Notable about this implementation is it takes a different approach for
managing cursor cells that previously. The terminal Grid is now
borrowed *immutably*. Instead of mutating Cells in the Grid, a list is
managed within the RenderableCellsIter. The cell at the cursor location
is skipped over, and instead cells are popped off a list of cursor
cells.
It would be good in the future to share some more code between the
different cursor style implementations for populating the cursor cells
list.
Supercedes #349.
|
|
|
|
Support is added for setting _NET_WM_PID automatically. This is to
support scripting of the window environment. For example, this makes it
possible to script opening a window with same CWD:
1. Retrieve the current window
2. (new) get PID of window
3. Check if it's Alacritty, find first child (presumably a shell), and
get the child's cwd.
4. Spawn new instance of terminal with cwd.
Unaddressed in this commit is how this will coexist on a Wayland system.
|
|
OSC strings with UTF-8 previously failed.
|
|
|
|
Resolves #422
|
|
Resolves #211.
|
|
|
|
This passes the vttest for save and restore cursor position. The
implementation was done according to:
http://www.vt100.net/docs/vt510-rm/DECSC.html
As of yet, there are a few things not supported by the terminal which
should otherwise be saved/restored.
vte was updated for a fix with CSI param parsing
|
|
|
|
Loading a glyph from the cache is a very hot operation in the renderer.
The original implementation would first check if a glyph was loaded and
then call `get()` which would have to search a second time. This showed
up as a very slow point in profiles.
This patch addresses glyph cache access in two ways: by using a faster
hasher optimized for small keys (fnv), and by using the entry API for
fetching a cached glyph. The `fnv` hasher is faster than the default and
is very efficient for small keys. Using the entry API on the HashMap
means only 1 lookup instead of two. The entry API has a downside where
the key needs to get cloned on fetches.
Reducing the GlyphKey width to 64-bits helps in both areas. Copying an
8-byte wide type is very cheap and thus limits downside of the entry
API. The small width also helps with the hasher performance.
Over all, this patch reduced typical render times by several hundred
microseconds on a 2013 MacBook Pro with a full screen terminal full of
text.
|
|
|
|
|
|
The `rustc-test` crate has this feature disabled by default causing all
of the test `println!` output to be displayed.
|
|
This uses the rustc-test crate, a copy of the standard test crate, to
dynamically create tests for each reference test. No need to remember to
update the macro, just add the directory to ref!
|
|
Resolves #23
Resolves #144
|
|
|
|
|
|
|
|
Resolves #35.
|
|
All of the changes in this commit are due to clippy lints.
|
|
|