aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/window.rs
Commit message (Collapse)AuthorAge
* 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.
* Add IME support for WindowsKhinenw2021-01-15
|
* Disable shadows for transparent windows on macOSChristian Duerr2020-12-22
| | | | | | | | | | | | Commit 5725f58 introduced a performance regression on macOS due to excessive calls to the `invalidateShadow` function, however calling this function only on redraw after a resize was performed does not fix the underlying problem. As a solution, window shadows are now disabled completely for all transparent windows. This makes sure there is no performance impact, while still solving the problem with text artifacts on resize. Fixes #4604.
* Fix artifacts on macOS with transparent windowsChristian Duerr2020-12-21
| | | | | | | | | | | Due to the way macOS draws shadows for transparent windows, resizing them will lead to text artifacts remaining present after a window has been resized. The `invalidateShadow` call is used whenever the opacity isn't `1.0` to make sure these shadows are cleared before redrawing, so no artifacts remain when resizing transparent windows. Fixes #889.
* Replace serde's derive with custom proc macroChristian Duerr2020-12-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This replaces the existing `Deserialize` derive from serde with a `ConfigDeserialize` derive. The goal of this new proc macro is to allow a more error-friendly deserialization for the Alacritty configuration file without having to manage a lot of boilerplate code inside the configuration modules. The first part of the derive macro is for struct deserialization. This takes structs which have `Default` implemented and will only replace fields which can be successfully deserialized. Otherwise the `log` crate is used for printing errors. Since this deserialization takes the default value from the struct instead of the value, it removes the necessity for creating new types just to implement `Default` on them for deserialization. Additionally, the struct deserialization also checks for `Option` values and makes sure that explicitly specifying `none` as text literal is allowed for all options. The other part of the derive macro is responsible for deserializing enums. While only enums with Unit variants are supported, it will automatically implement a deserializer for these enums which accepts any form of capitalization. Since this custom derive prevents us from using serde's attributes on fields, some of the attributes have been reimplemented for `ConfigDeserialize`. These include `#[config(flatten)]`, `#[config(skip)]` and `#[config(alias = "alias)]`. The flatten attribute is currently limited to at most one per struct. Additionally the `#[config(deprecated = "optional message")]` attribute allows easily defining uniform deprecation messages for fields on structs.
* Fix embedded _NET_WM_ICON on X11Christian Duerr2020-12-20
| | | | | | | | | | Previously the _NET_WM_ICON would use the .ico which was also used for the Windows icon. This icon used the dimensions 256x256, but the maximum supported image size is 192x192, so a new image with the dimensions 64x64 has been added. Since we know the image format anyways, the `image` dependency could also be easily replaced with `png`, which cuts out a few extra unused dependencies.
* Bump glutin to 0.26.0Kirill Chibisov2020-12-11
| | | | | Fixes #4530. Fixes #4072. Fixes #1927.
* Feature gate 'image' when building without x11 featureKirill Chibisov2020-11-14
| | | | On Wayland there's no way to embed icon into the window, thus there's no point in loading it when x11 feature is disabled.
* Fix build failure on macOS without featuresChristian Duerr2020-10-28
| | | Fixes #4353.
* Fix incorrect X11 feature checkChristian Duerr2020-10-12
| | | See https://github.com/alacritty/alacritty/commit/721f789b5f98ab5c47e6e817c3c2228636ca0a1a#r43183826.
* Make use of glutin wayland/x11 featuresKirill Chibisov2020-10-12
| | | | This should allow users that are not using Wayland/X11 to reduce the resulted binary size and compilation times.
* Bump glutin to 0.25.0Kirill Chibisov2020-10-07
| | | | | | | | | | | | Fixes #4206. Fixes #4162. Fixes #4017. Fixes #3998. Fixes #3831. Fixes #3782. Fixes #3708. Fixes #2734. Fixes #2714. Fixes #1801.
* Add support for single line terminalsii412020-09-27
| | | | | | | | | | | | | | | | | This changes the minimum terminal dimensions from 2 lines and 2 columns, to 1 line and 2 columns. This also reworks the `SizeInfo` to store the number of columns and lines and consistently has only the terminal lines/columns stored, instead of including the message bar and search in some places of the Alacritty renderer/input. These new changes also make it easy to properly start the selection scrolling as soon as the mouse is over the message bar, instead of waiting until it is beyond it. Fixes #4207. Co-authored-by: Christian Duerr <contact@christianduerr.com>
* Fix clippy issuesChristian Duerr2020-08-06
| | | Co-authored-by: Kirill Chibisov <contact@kchibisov.com>
* Fix negative window positionChristian Duerr2020-08-02
| | | | | | | This resolves an issue where negative window positions set in the configuration file would not place the Alacritty window in the correct location. Fixes #4061.
* Fix crates.io publishing restrictionsChristian Duerr2020-08-01
| | | | This works around the problem that crates pushed to crates.io cannot reference files outside of their crate directory.
* Bump minimum supported Rust version to 1.43.0Kirill Chibisov2020-07-28
|
* Rename font crate to crossfontChristian Duerr2020-07-18
|
* Add different search label for backward searchChristian Duerr2020-07-17
|
* Remove gui dependencies from alacritty_terminalKirill Chibisov2020-07-11
| | | | | | | | This commit removes font dependency from alacritty_terminal, so it'll simplify the usage of alacritty_terminal as a library, since you won't link to system's libraries anymore. It also moves many alacritty related config options from it. Fixes #3393.
* Add regex scrollback buffer searchChristian Duerr2020-07-09
| | | | | | | | | | This adds a new regex search which allows searching the entire scrollback and jumping between matches using the vi mode. All visible matches should be highlighted unless their lines are excessively long. This should help with performance since highlighting is done during render time. Fixes #1017.
* Add automatic scrolling during selectionChristian Duerr2020-06-18
| | | | | | | | | | | | | This adds a new `Scheduler` which allows for staging events to be processed at a later time. If there is a selection active and the mouse is above or below the window, the viewport will now scroll torwards the direction of the mouse. The amount of lines scrolled depends on the distance of the mouse to the boundaries used for selection scrolling. To make it possible to scroll while in fullscreen, the selection scrolling area includes the padding of the window and is at least 5 pixels high in case there is not enough padding present.
* Cleanup window.rs importsChristian Duerr2020-06-08
| | | | | | | | | | | | | | | | The window.rs imports have been extremely messy due to heavy platform-specific import usage. While some of them are just stray imports for a single platform, a lot of these are specific to Linux/BSD. To make these a little easier to read and maintain, the Linux/BSD specific imports were grouped together, since this allows us to just have a single platform annotation. Most of our imports follow the order of how relevant and foreign these imports are to Alacritty, putting our own frequently used imports at the far bottom and STD with things people usually don't need to care about at the top. Since platform specific imports are generally important to fewer people, I've decided to put them before all the other imports rather than behind them.
* Remove copyright notice from filesChristian Duerr2020-06-06
| | | | | | | | | | | | | | Keeping the license as part of every file bloats up the files unnecessarily and introduces an additional overhead to the creation of new modules. Since cargo already provides excellent dependency management, most of the code-reuse of Alacritty should occur through Rust's dependency management instead of copying it source. If code is copied partially, copying the license from the main license file should be just as easy as copying from the top of the file and making some adjustments based on where it is used is likely necessary anyways.
* Refactor Term/Grid separationChristian Duerr2020-05-30
| | | | | | | | | | | This commit aims to clear up the separation between Term and Grid to make way for implementing search. The `cursor` and `cursor_save` have been moved to the grid, since they're always bound to their specific grid and this makes updating easier. Since the selection is independent of the active grid, it has been moved to the `Term`.
* Extend style guideline documentationChristian Duerr2020-05-05
|
* Use frame callbacks instead of vsync on WaylandKirill Chibisov2020-05-03
| | | | | | | | | Instead of blocking on vsync, Alacritty now requests a notification from wayland about when the next frame should be rendered. this helps with input latency, since it gives alacritty more time to process events before a redraw. it also prevents alacritty from drawing unless the compositor tells it to do so. Fixes #2851.
* Fix clippy warningsMatthias Krüger2020-05-01
|
* Use embedded resource for window iconDavid Hewitt2020-04-25
|
* Update depedenciesBastien Orivel2020-04-18
|
* Log critical errors with error! instead of println!Kirill Chibisov2020-04-12
|
* Use config colors to theme Wayland decorationsKirill Chibisov2020-04-09
| | | Fixes #2092.
* Start window invisible on WindowsKirill Chibisov2020-02-04
|
* Bump glutin to 0.22.0Christian Duerr2020-01-10
| | | Fixes #3165.
* Add `Minimize` binding actionKirill Chibisov2020-01-05
| | | Fixes #2534.
* Replace deprecated Error methodssterlingjensen2020-01-03
|
* Move renderer from alacritty_terminal to alacrittyKirill Chibisov2019-11-23
|
* Fix wrong default cursor iconKirill Chibisov2019-11-02
|
* Remove unused imports on WindowsDavid Hewitt2019-10-31
|
* Fix unused import warning on macOS/WindowsKohki Miki2019-10-22
|
* Fix XEmbed compilation error on 32-bit platformscyclopsian2019-10-20
|
* Revert "Disable depth and stencil buffers"Christian Duerr2019-10-16
| | | This reverts commit 3475e449870b382cda4ea6d48f980577cd8c929e.
* Add support for title stack escape sequencesDustin2019-10-14
| | | | | | | | | | | | This commit adds the concept of a "title stack" to the terminal. Some programs (e.g. vim) send control sequences `CSI 22 ; 0` (push title) and `CSI 23 ; 0` (pop title). The title stack is just a history of previous titles. Applications can push the current title onto the stack, and pop it back off (setting the window title in the process). Fixes #2840.
* Disable depth and stencil buffersJasper Mattsson2019-10-11
| | | | Disable allocation of depth and stencil buffers. This reduces active GPU memory consumption by almost a third, at least on Linux.
* Update to winit/glutin EventLoop 2.0Christian Duerr2019-10-05
This takes the latest glutin master to port Alacritty to the EventLoop 2.0 rework. This changes a big part of the event loop handling by pushing the event loop in a separate thread from the renderer and running both in parallel. Fixes #2796. Fixes #2694. Fixes #2643. Fixes #2625. Fixes #2618. Fixes #2601. Fixes #2564. Fixes #2456. Fixes #2438. Fixes #2334. Fixes #2254. Fixes #2217. Fixes #1789. Fixes #1750. Fixes #1125.