aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/display/window.rs
Commit message (Collapse)AuthorAge
* Ignore touch gestures for enabling IMEChristian Duerr2025-10-26
| | | | | | | | | | | | | | | | | | Previously whenever the user would use touch gestures to make selections or scroll the terminal, IME would automatically be enabled due to the focus change and reduce the terminal height. This isn't ideal when the goal is just scanning through the terminal history without making any input. This patch keeps track of pointer and touch focus and only enables IME when either the pointer is within the window or a tap touch sequence was performed to give the window 'touch focus'. The initial touch tap sequence used to enable IME is still forwarded to the terminal as a simulated click event, since otherwise touch devices without virtual keyboard would be forced into a confusing additional tap to make it work. This means that virtual keyboard users will not be able to open the virtual keyboard without creating a click event, which should still be preferable to the status quo.
* Bump dependenciesChristian Duerr2025-10-08
| | | | This performs all non-breaking dependency updates, which includes unicode-width 0.2.2 for Unicode 17 support.
* Fix hint highlighting when hovering with hidden mouseskewb1k2025-09-01
| | | | | | | | When the mouse cursor was hidden with `hide_when_typing` enabled, hints could still be highlighted under the hidden cursor. This typically occurred when a hint moved underneath the stationary, hidden cursor. This fix ensures hints are not highlighted by the mouse cursor while it's hidden.
* Migrate to 2024 editionChristian Duerr2025-07-13
|
* Remove cstr! macro in favor of literal notationKirill Chibisov2025-07-01
| | | | | Also apply clippy changes while at it. Closes #8002.
* Bump all dependenciesKirill Chibisov2025-05-28
|
* Add option to drain PTY on shutdownAndrew Borg (Kashin)2025-01-16
| | | | | This patch removes the `hold` option on `alacritty_terminal` in favor of a `drain_on_exit` option, which will drain the PTY before shutdown. The hold logic is instead handled in `alacritty`.
* Pass activation token in alacritty msg create-windowKirill Chibisov2025-01-04
| | | | Fixes #8337.
* Remove unnecessary staticsIntegral2024-12-09
|
* Add `window.level` config optionDavid Horner2024-11-23
|
* Switch to new objc2 cratesMads Marquart2024-11-21
|
* Focus new windows on macOSChris2024-11-02
|
* Fix app icon in alt+tab view on WindowsNeil Stewart2024-09-30
|
* Unify string formattingHamir Mahal2024-07-24
|
* Bump glutin to 0.32.0Kirill Chibisov2024-06-08
|
* Bump winit to 0.30.0Kirill Chibisov2024-05-04
|
* Fix replacing optional fieldsChristian Duerr2024-01-02
| | | | | | | This fixes an issue with the default `SerdeReplace` implementation where it would never recurse through options but always replace the entire option with the new value. Closes #7518.
* Keep IME always enabled on X11Kirill Chibisov2023-12-22
| | | Fixes #7195.
* Fix IME popup positioningKirill Chibisov2023-11-24
| | | | | | | | | | | | | | | | | | | When setting cursor area, the popup will be placed either above or below not obscuring the supplied region, however we were still offsetting line with `+1` putting the cursor at the bottom of the line, and given that area is from the top-left corner, the wrong area was marked for not being obscured. It was also discovered that some compositors, like GNOME, position IME in the bottom right corner of the supplied region, which is wrong, but it renders IME popup not very useful, since it's far away from the place it should be, thus try to not obscure just a few characters near the cursor. Given that X11 doesn't support area setting, it uses the old logic with offsetting. Co-developed-by: lilydjwg <lilydjwg@gmail.com> Signed-off-by: lilydjwg <lilydjwg@gmail.com>
* Fix visual bell getting stuck on macOSKirill Chibisov2023-11-13
| | | Fixes #7325.
* Add `window.blur` config optionKirill Chibisov2023-10-29
| | | Fixes #972.
* Update winit to 0.29.2 and copypasta to 0.10.0Kirill Chibisov2023-10-21
| | | | | | | | | Fixes #7236. Fixes #7201. Fixes #7146. Fixes #6848. Fixes #3601. Fixes #3108. Fixes #2453.
* Fix `window.decorations_theme_variant` reloadKirill Chibisov2023-10-15
| | | | | The live reload handling wasn't introduced when the option got added. Fixes #7295.
* Support startup notify on Wayland/X11Kirill Chibisov2023-09-04
| | | | | | | Activate a window to indicate that we want initial focus when the system uses startup notifications. Fixes #6931.
* Add bindings for macOS tabsKirill Chibisov2023-09-04
| | | | | This doesn't represnet the movement to add tabs on any other platform, unless winit could add a similar API for them.
* Update winit to 0.29.1-betaKirill Chibisov2023-09-04
| | | | | | | | Make use of new winit frame throttling mechanism used in RedrawRequested, which removes the need for having Wayland queue to ask for the frame callbacks. Fixes #7011.
* Remove winit dependency from alacritty_configMax Brunsfeld2023-08-17
|
* Update to the new winit keyboard APIKirill Chibisov2023-07-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The main highlight of this update is that alacritty will now use new keyboard API from the winit, which resolves a lot of issues around key bindings, such as ability to bind dead keys. It also fixes long standing issues with the virtual key code bindings and make bindings in general more predictable. It also makes our default Vi key bindings fully working. Given that alacritty was using `VirtualKey` directly in the bindings from the winit, and winit simply removed the enum, we've added internal conversions to minimize the fallout, but new way to specify the bindings should be more intuitive. Other part of this update fixes some forward compatibility bugs with the Wayland backend, given that wayland-rs 0.30 is fully forward compatible. The update also fixes weird Maximized startup issues on GNOME Wayland, however they were present on any sane compositor. Fixes #6842. Fixes #6455. Fixes #6184. Fixes #5684. Fixes #3574. Fixes #3460. Fixes #1336. Fixes #892. Fixes #458. Fixes #55.
* Resize the window by cell dimensionsKirill Chibisov2023-02-05
| | | | | | This should resize window by cell dimensions granularity instead of using pixels. Fixes #388.
* Update winit to 0.28Kirill Chibisov2023-02-02
| | | | | | | | Fixes #6644. Fixes #6615. Fixes #6558. Fixes #6515. Fixes #3187. Fixes #62.
* Use sRGB color space for NSWindow on macOSNaru2023-01-07
| | | Co-authored-by: Christian Duerr <contact@christianduerr.com>
* User timer based rendering instead of vsyncKirill Chibisov2022-12-30
| | | Fixes #824.
* Update glutin to 0.30.0Kirill Chibisov2022-11-03
| | | | | | | | | | | | | | | The glutin 0.30.0 update decouples glutin from winit which provides us with basis for a multithreaded renderer. This also improves robustness of our configuration picking, context creation, and surface handling. As an example we're now able to start on systems without a vsync, we don't try to build lots of contexts to check if some config works, and so on. That also brings us possibility to handle context losses, but that's a future work. Fixes #1268.
* Fix icon decoding on X11Hugal312022-10-05
| | | | | Glutin is waiting for an RGBA buffer with 8-bit depth, but our icon is 16-bit depth. So we need to normalize the color data when decoding the icon.
* Migrate from winapi to windows-syskillian2022-09-30
|
* Add IPC config subcommandChristian Duerr2022-09-01
| | | | | | | | | | | | | | | | | | | | This patch adds a new mechanism for changing configuration options without editing the configuration file, by sending options to running instances through `alacritty msg`. Each window will load Alacritty's configuration file by default and then accept IPC messages for config updates using the `alacritty msg config` subcommand. By default all windows will be updated, individual windows can be addressed using `alacritty msg config --window-id "$ALACRITTY_WINDOW_ID"`. Each option will replace the config's current value and cannot be reset until Alacritty is restarted or the option is overwritten with a new value. Configuration options are passed in the format `field.subfield=value`, where `value` is interpreted as yaml. Closes #472.
* Add inline input method supportKirill Chibisov2022-08-29
| | | | | | This commit adds support for inline IME handling. It also makes the search bar use underline cursor instead of using '_' character. Fixes #1613.
* Include extra directory in crateChristian Duerr2022-08-24
| | | | | | | | | | | | | Instead of having the extra symlink in the root, this puts the symlink in the alacritty crate. Since we build the package on Linux this is not a problem and even allows us to get rid of the `alacritty.png` symlink. To avoid having complicated symlinks with regards to the windows build assets directory, it has just been removed from the `extra` directory completely. Since we only need it for building, it doesn't matter where it's located and users will never have to interact with it manually anyway. Closes #6242.
* Fix general and instance class set on window (#6276)Ulrik de Muelenaere2022-08-20
| | | | This fixes a regression introduced in 7d708d5, which caused the general and instance class to be swapped.
* Bump glutin to 0.29.1Kirill Chibisov2022-08-10
| | | | | | | | Fixes #6239. Fixes #5975. Fixes #5876. Fixes #5767. Fixes #4484. Fixes #3139.
* Fix clippy warningsChris Copeland2022-07-25
|
* Fix resize on Wayland when creating new windowKirill Chibisov2022-06-29
| | | | | | | When we have currently active context when asking EGL on Wayland to create new context it'll lock the backing buffer of surface using that context. So making it non-current before-hand to prevent it. Follow-up to 90552e3.
* Enable damage tracking only on WaylandKirill Chibisov2022-05-20
| | | | | | | | | | Other platforms don't have such concepts in general or have them via different interfaces not related to EGL. This commit also resolves some minor clippy issues. Fixes #6051. Co-authored-by: Christian Duerr <contact@christianduerr.com>
* Extract `SizeInfo` from alacritty_terminalKirill Chibisov2022-04-06
| | | | | The `SizeInfo` is a SizeInfo used for rendering, which contains information about padding, and such, however all the terminal need is number of visible lines and columns.
* Persist OpenGL context creation flagsKirill Chibisov2022-03-24
| | | | | | | | | | | | | This commit persists OpenGL context creation flags from previous window build attempts saving time in multiwindow context. It also creates window as srgb by default, since it's what Alacritty is rendering in. For reference [1] and [2]. Moreover the fallback for 10 bit colors is also added. [1] - https://github.com/alacritty/alacritty/issues/4939 and [2] - https://github.com/alacritty/alacritty/issues/3756. Fixes #4703.
* Add `ToggleMaximized` key binding actionChris Copeland2022-02-27
|
* Don't load font twice during display creationKirill Chibisov2022-02-18
| | | | | This commit finishes the effort from a64553b to avoid reloading font twice during startup, since the original issue is with getting font metrics without building the glyph cache.
* Add damage tracking and reporting to compatible compositorsKirill Chibisov2022-02-02
| | | | | | | | | | | | | | This allows compositors to only process damaged (that is, updated) regions of our window buffer, which for larger window sizes (think 4k) should significantly reduce compositing workload under compositors that support/honor it, which is good for performance, battery life and lower latency over remote connections like VNC. On Wayland, clients are expected to always report correct damage, so this makes us a good citizen there. It can also aid remote desktop (waypipe, rdp, vnc, ...) and other types of screencopy by having damage bubble up correctly. Fixes #3186.
* Use `with_position` instead of `set_outer_position`Kirill Chibisov2022-01-11
| | | | This uses `with_position` method on a `WindowBuilder` instead of setting window position on the created window later on.
* Add title/class CLI parameters to create-windowKirill Chibisov2022-01-03
| | | | | This adds the ability to pass title and class over IPC via the create-window subcommand, so users can run only one instance for windows of different spurposes in the window managers of their choice.