aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/display
Commit message (Collapse)AuthorAge
* Add configurable crosshairs to Alacritty.Josh Rahm2021-10-08
| | | | | | This allows the user to put semitransparent rectangles around the current cursor line and column, á la Vim's cursor line/column, but for the whole terminal.
* Merge remote-tracking branch 'betaboon/graphics' into experimentalJosh Rahm2021-10-05
|\
| * Add Sixel supportAyose2021-08-17
| | | | | | | | Fixes #910
* | Added a dotted underline feature and changed the undercurl feature to beJosh Rahm2021-09-27
| | | | | | | | more antialiased.
* | Add overline attribute.Josh Rahm2021-09-15
| |
* | Added ability to set the special color for the undercur and underlines using ↵Josh Rahm2021-09-15
| | | | | | | | the standard ANSI code 59
* | Added a rudimentary undercurl to Alacritty. Currently does not support ↵Josh Rahm2021-09-15
|/ | | | setting the color. That is the next task
* Add option to apply opacity to all background colorsKirill Chibisov2021-08-16
| | | | | | | In some cases it could be desired to apply 'background_opacity' to all background colors instead of just 'colors.primary.background', thus adding an 'colors.opaque_background_colors' option to control that. Fixes #741.
* Fix clippy warningsChristian Duerr2021-07-03
|
* Improve rendering performanceChristian Duerr2021-05-22
| | | | | | | | | | | | | | | | | | | | | | | | | | This PR combines a couple of optimizations to drastically reduce the time it takes to gather everything necessary for rendering Alacritty's terminal grid. To help with the iteration over the grid, the `DisplayIter` which made heavy use of dynamic dispatch has been replaced with a simple addition to the `GridIterator` which also had the benefit of making the code a little easier to understand. The hints/search check for each cell was always performing an array lookup before figuring out that the cell is not part of a hint or search. Since the general case is that the cell is neither part of hints or search, they've been wrapped in an `Option` to make verifying their activity a simple `is_some()` check. For some reason the compiler was also struggling with the `cursor` method of the `RenderableContent`. Since the iterator is explicitly drained, the performance took a hit of multiple milliseconds for a single branch. Our implementation does never reach the case where draining the iterator would be necessary, so this sanity check has just been replaced with a `debug_assert`. Overall this has managed to reduce the time it takes to collect all renderable content from ~7-8ms in my large grid test to just ~3-4ms.
* Fix unnecessary redraws due to hint highlightingChristian Duerr2021-05-09
| | | | | | | | | | When the mouse cursor is moved by at least one cell, an update to the highlighted hints is triggered automatically. Previously this would always update the hints and redraw Alacritty regardless of the actualy change to the hint highlighting. By checking if the hint highlighting has actually changed, pointless redraws can be prevented. This is especially helpful since mouse motions often generate a lot of hint re-computations.
* Add Ctrl+c binding for exiting hint modeabsorber2021-05-08
|
* Use cell colors for focused match CellRgbNathan Lilienthal2021-04-30
| | | | | Fixes #5022. Co-authored-by: Christian Duerr <contact@christianduerr.com>
* Fix highlighting multiple hints in the same lineChristian Duerr2021-04-30
| | | Fixes #5010.
* Update vi-mode `Open` config docs for hintsNathan Lilienthal2021-04-26
|
* Fix cursor expansion across wide charsChristian Duerr2021-04-22
| | | | | | | | | This fixes a regression introduced in 0.7.0 where the block cursor would not expand across both cells anymore when on top of a wide char spacer cell. The logic to always move the cursor on the wide char instead of the spacer has been moved to the alacritty_terminal crate, making sure it is always performed before any processing in the UI.
* Fix mouse point crash on resizeChristian Duerr2021-04-15
| | | | | | | | | This resolves an issue with Alacritty crashing after a resize, due to the last cached mouse point being out of bounds. Instead of caching the mouse point, it is now computed on demand to make sure it can never be invalid. Fixes #4977.
* Fix hint label with start above viewportChristian Duerr2021-04-14
| | | Fixes #4960.
* Fix URL highlight in mouse mode without shiftChristian Duerr2021-04-14
| | | | | This resolves a regression introduced in 96fc9ec where URLs would get highlighted on mouse hover while mouse mode is active even when the shift modifier was not held down.
* Add vi/mouse hint highlighting supportChristian Duerr2021-04-13
| | | | | This patch removes the old url highlighting code and replaces it with a new implementation making use of hints as sources for finding matches in the terminal.
* Add copy/paste/select hint actionsChristian Duerr2021-04-03
| | | | | | This adds some built-in actions for handling hint selections without having to spawn external applications. The new actions are `Copy`, `Select` and `Paste`.
* Fix focused match selection colorChristian Duerr2021-04-02
| | | | | | | | | | | | | | | In 3bd5ac221ab3b122962063edd1f4c10f9f2d117f a regression was introduced which caused the selection of a focused match to invert the cell color back to its original color. This was due to the removal of the `is_match` flag on the renderable cell, which was used to make sure a cell is not marked as part of a match if it is already part of a selection. Instead of relying on a flag that is passed through from content.rs, the application of the cell colors is instead done in the content.rs file directly. This not only fixes the bug with selecting the focused match, but also makes the logic a bit more transparent. Fixes #4934.
* Unify the grid line indexing typesChristian Duerr2021-03-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously Alacritty was using two different ways to reference lines in the terminal. Either a `usize`, or a `Line(usize)`. These indexing systems both served different purposes, but made it difficult to reason about logic involving these systems because of its inconsistency. To resolve this issue, a single new `Line(i32)` type has been introduced. All existing references to lines and points now rely on this definition of a line. The indexing starts at the top of the terminal region with the line 0, which matches the line 1 used by escape sequences. Each line in the history becomes increasingly negative and the bottommost line is equal to the number of visible lines minus one. Having a system which goes into the negatives allows following the escape sequence's indexing system closely, while at the same time making it trivial to implement `Ord` for points. The Alacritty UI crate is the only place which has a different indexing system, since rendering and input puts the zero line at the top of the viewport, rather than the top of the terminal region. All instances which refer to a number of lines/columns instead of just a single Line/Column have also been changed to use a `usize` instead. This way a Line/Column will always refer to a specific place in the grid and no confusion is created by having a count of lines as a possible index into the grid storage.
* Fix cursor thickness on wide cellsStokhos2021-03-28
| | | Fixes #4922.
* Fix inconsistent_struct_constructor clippy lintMatthias Krüger2021-03-12
|
* Fix vi mode searchChristian Duerr2021-03-06
| | | | | | | | This fixes a regression introduced in a954e07 which caused the vi mode cursor to be invisible after starting a search. This was caused by a discrepancy between the search DFA and search active state, since a search is not active after it has been confirmed but the DFAs are still present for highlighting.
* Add regex terminal hintsChristian Duerr2021-03-01
| | | | | | | | | | | | | | | | This adds support for hints, which allow opening parts of the visual buffer with external programs if they match a certain regex. This is done using a visual overlay triggered on a specified key binding, which then instructs the user which keys they need to press to pass the text to the application. In the future it should be possible to supply some built-in actions for Copy/Pasting the action and using this to launch text when clicking on it with the mouse. But the current implementation should already be useful as-is. Fixes #2792. Fixes #2536.
* Fix hollow block cursor being drawn for hidden cursorKirill Chibisov2021-02-26
| | | | | | | Commit 530de00 refactored large chunk of Alacritty's internal handling of renderable cells, cursors, and such. This patch fixes a regression where a hollow block cursor was drawn for unfocused windows even if the terminal cursor was hidden.
* Limit the maximum DPR on X11 to 10Christian Duerr2021-02-15
| | | | | | | | | | | Since there have a bunch of problems caused by an excessive DPI reported by XRandr, this limits the maximum DPR on X11 to 10. These issues would commonly cause problems like long startup times or crashes, which are hard to troubleshoot for the user. While a limit of 10 might not eliminate all of these issues, it should still make it possible for Alacritty to start to make troubleshooting simpler. Fixes #3214.
* Update dependenciesChristian Duerr2021-02-13
| | | | | | This introduces some duplicate dependencies, though they are necessary to build properly without any warnings. Fixes #4735.
* Fix the estimated DPR to 1 on Wayland.Nathan Lilienthal2021-02-04
| | | | | | | | | | | On Wayland, regardless of the underlying scale factor for an output, The scale factor is 1.0 until we receive the first DPRChanged event. To correctly calculate the window sizes, we must use a DPR of 1.0 as well. Ideally we would know what the DPR of the window we're being opened in is going to be, and avoid the estimation guessing game, but that doesn't seem possible with the current interfaces provided by the window systems.
* Fix segmentation fault on shutdown with WaylandChristian Duerr2021-01-29
| | | Fixes #4702.
* Move renderable cell transformation to alacrittyChristian Duerr2021-01-24
This refactors a large chunk of the alacritty_terminal API to expose all data necessary for rendering uniformly through the `renderable_content` call. This also no longer transforms the cells for rendering by a GUI but instead just reports the content from a terminal emulation perspective. The transformation into renderable cells is now done inside the alacritty crate. Since the terminal itself only ever needs to know about modified color RGB values, the configuration for colors was moved to the alacritty UI code.