aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG.md
AgeCommit message (Collapse)Author
2018-11-17Display errors and warningsChristian Duerr
To make sure that all error and information reporting to the user is unified, all instances of `print!`, `eprint!`, `println!` and `eprintln!` have been removed and replaced by logging. When `RUST_LOG` is not specified, the default Alacritty logger now also prints to both the stderr and a log file. The log file is only created when a message is written to it and its name is printed to stdout the first time it is used. Whenever a warning or an error has been written to the log file/stderr, a message is now displayed in Alacritty which points to the log file where the full error is documented. The message is cleared whenever the screen is cleared using either the `clear` command or the `Ctrl+L` key binding. To make sure that log files created by root don't prevent normal users from interacting with them, the Alacritty log file is `/tmp/Alacritty-$PID.log`. Since it's still possible that the log file can't be created, the UI error/warning message now informs the user if the message was only written to stderr. The reason why it couldn't be created is then printed to stderr. To make sure the deletion of the log file at runtime doesn't create any issues, the file is re-created if a write is attempted without the file being present. To help with debugging Alacritty issues, a timestamp and the error level are printed in all log messages. All log messages now follow this format: [YYYY-MM-DD HH:MM] [LEVEL] Message Since it's not unusual to spawn a lot of different terminal emulators without restarting, Alacritty can create a ton of different log files. To combat this problem, logfiles are removed by default after Alacritty has been closed. If the user wants to persist the log of a single session, the `--persistent_logging` option can be used. For persisting all log files, the `persistent_logging` option can be set in the configuration file
2018-11-15Add option for dynamic padding (#1780)Christian Duerr
This adds the `window.dynamic_padding` option which allows disabling the dynamic spread of additional padding around the grid's content. Based on the feedback I've gotten so far and the fact that most other terminal emulators do not seem to center the content inside themselves, I've changed the default configuration option to disable centering of the grid. This fixes #1778.
2018-11-14Add change log entry for `scale_with_dpi` settingChristian Duerr
2018-11-13Bump version to 0.2.3Christian Duerr
Since the version 0.2.2 had some significant breakage which affects a large number of users, this 0.2.3 release aims at providing a stable release which works for everyone without any major regressions.
2018-11-12Fix incorrect padding calculationsChristian Duerr
The extra window padding was calculated in the renderer which lead to problems with the paddings calculated in the `src/display.rs` and `src/term/mod.rs`. As a solution, every instance of `config.padding().x/y` has been removed from the renderer (`src/renderer/mod.rs`), instead the padding is always passed through from the `src/display.rs`. The initial calculations during display creation and after resize then are scaled appropriately and then the extra padding is calculated. As a result every other location can just make use of the correctly calculated `size_info.padding_x` and `size_info.padding_y`. The documentation has been changed to clearly state that the padding is scaled by DPI now. This fixes #1773.
2018-11-11Bump version number to v0.2.2v0.2.2Christian Duerr
2018-11-11Center the grid inside the windowChristian Duerr
Currently alacritty always puts the grid at the top-left position of the window. The only distance to the top-left window border is set by the padding in the config. However the grid always has a fixed size, and if a cell doesn't completely fit the screen anymore, the padding at the bottom right window corner can be significantly bigger than the padding at the top left. To fix this whenever there is more space left and there would usually be a bigger padding at the bottom right, the space is now split up and added to the padding. This should always center the grid inside the window and make sure all borders have the same padding from the text area. This screenshot shows how it has been until now: ![Before](https://u.teknik.io/kRJwg.png) Here is how it looks now: ![After](https://u.teknik.io/m4puV.png) This fixes #1065.
2018-11-11Set env variables before window startChristian Duerr
The environment variables specified in the configuration file are now all set before the window is created. As a result, this makes it possible to add the `WINIT_HIDPI_FACTOR` env variable directly to the Alacritty configuration. This fixes https://github.com/jwilm/alacritty/issues/1768.
2018-11-10Upgrade Glutin to v0.19.0Matt Keeler
Some changes include: • Use the with_hardware_acceleration function on the ContextBuilder to not require the discrete GPU • Remove the LMenu and RMenu virtual key codes (winit 0.16.0 removed these because Windows now generates LAlt and RAlt instead • Replace set_cursor_state with hide_cursor (winit 0.16.0 removed the set_cursor_state function) • Replace GlWindow::hidpi_factor with GlWindow::get_hidpi_factor and change to expecting an f64 • Use the glutin/winit dpi size and position types where possible Glutin's dpi change event has been implemented. All size events now return logical sizes. As a result of that, the logical sizes are translated in the `display::handle_rezize` method so DPI scaling works correctly. When the DPI is changed, the glyph cache is updated to make use of the correct font size again. Moving a window to a different screen which is a different DPI caused a racing condition where the logical size of the event was sent to the `handle_resize` method in `src/display.rs`, however if there was a DPI change event before `handle_resize` is able to process this message, it would incorrectly use the new DPI to scale the resize event. To solve this issue instead of sending the logical size to the `handle_resize` method and then converting it to a physical size in there, the `LogicalSize` of the resize event is transformed into a `PhysicalSize` as soon as it's received. This fixes potential racing conditions since all events are processed in order. The padding has been changed so it's also scaled by DPR. The `scale_with_dpi` config option has been removed. If it's not present a warning will be emitted. The `winit` dependency on Windows has been removed. All interactions with winit in Alacritty are handled through glutin.
2018-11-07Capitalization changes in README.md (#1757)Alex Touchet
2018-11-03Publish Github releases from TravisMicha Gorelick
This release introduces some config to automatically build deploy a binaries on the github release page using travis. The build only happens when a commit is tagged and it uses the stable version of rust. The main travis sections (install/script/before_deploy) have been moved out of the .travis.yml to make it easier to read, maintain and extend the different steps of the CI process. Since checking for the Rust version in CI is enough to know if clippy should be used or not, the environment variable `CLIPPY` has also been removed, which further allowed simplifying the CI process. Besides the executables, some auxillary files are now also published as part of a release when they have changed since the last tagged Alacritty release. This should make it clear for returning users when a new version of a specific auxillary file is required. Instead of using the 14.04 image which travis provides by default, an 18.04 docker image is used to build the output binaries for Linux. This affects both the .deb and the .tar.gz binary. The advantage of this is that while binaries compiled on 14.04, do not work on 18.04, it does work the other way around. The generated .tar.gz binary has been tested on 18.04, Debian, Fedora and Archlinux and all systems were able to run it without any warnings or errors.
2018-11-02Fix selection while scrollingNathan Lilienthal
Properly update an active selection while scrolling the main scrollback buffer. This does not affect the alternate screen buffer, since no scrollback buffer is available.
2018-11-01Fix mouse pasting in mouse mode with shiftChristian Duerr
It is now possible to paste in mouse mode again by making use of the `shift` key while pressing the mouse button reserved for PasteSelection. All mouse bindings are now also matching the modifiers in a relaxed way, so extra modifiers are ignored.
2018-11-01Rework cursor configurationChristian Duerr
There are a couple of cursor-related options in the Alacritty config file now, however they aren't grouped together in any way. To resolve this a new `cursor` field has been added where all cursor configuration options (besides colors) have been moved. The `custom_cursor_colors` option has also been removed, since it's not necessary anymore. Simply making the `colors.cursor.*` fields optional, allows overriding the cursor colors whenever one of them is present. Like that the user doesn't have to think about a relation between two separate configuration options. This PR initially put the `hide_cursor_when_typing` variable under `cursor.hide_when_typing`. However this field is completely unrelated to the cursor, but instead relates to the mouse cursor. Since the word `cursor` is already used for the active cell in the grid of a terminal emulator, all occurences of the word `cursor` when talking about the mouse have been replaced with the word `mouse`. The configuration option has also been moved to `mouse.hide_when_typing`, to make it clear what this option is changing. This fixes #1080.
2018-10-31 Add change log entry for configuration fixChristian Duerr
This updates the CHANGELOG.md to include information about the changes which have been made in #1634.
2018-10-22Fix change log entry for URL clickingChristian Duerr
2018-10-22Add option to open URLs on clickChristian Duerr
This adds the option to automatically launch URLs with a specified program when clicking on them. The config option `mouse.url_launcher` has been added to specify which program should be used to open the URL. The URL is always passed as the last parameter to the specified command. It is not always desired for URLs to open automatically when clicking on them. To resolve this a new `modifiers` field has been introduced to the config, which allows specifying which keyboard modifiers need to be held down to launch URLs in the specified launcher. Some tests have been added to make sure that the edge-cases of the URL parsing are protected against future regressions. To make testing easier the parsing method has been moved into the `SemanticSearch` trait. The name of the trait has also been changed to just `Search` and it has been moved to `src/term/mod.rs` to fit the additional functionality. This fixes #113.
2018-10-20Fix rotation of selection below 0Christian Duerr
Whenever the viewport is scrolled, the selection is rotated to make sure that it moves with the viewport. However this did not correctly handle the underflow that happens when the selection goes below 0. This resolves that problem for the selection by moving the internal line representation to an isize, thus correctly keeping track of the selection start/end points even when they have a negative index. Once the selection is converted to a span, the lines are clamped to the visible region. This fixes #1640 and fixes #1643.
2018-10-20Add support for rendering cursors to rusttypeZac Pullar-Strecker
2018-10-16Allow the usage of scancodes in the configChristian Duerr
This change should allow the usage of scancodes in the configuration file. When a VirtualKeyCode for glutin is not present, this should now allow the user to use the scancodes instead. If the user specifiecs a key with its scancode even though the key has a VirtualKeyCode, it should still work. The behavior of directly specifying a VirtualKeyCode should be unchanged by this. This fixes #1265.
2018-10-16Add support for Windows (#1374)Zac Pullar-Strecker
Initial support for Windows is implemented using the winpty translation layer. Clipboard support for Windows is provided through the `clipboard` crate, and font rasterization is provided by RustType. The tty.rs file has been split into OS-specific files to separate standard pty handling from the winpty implementation. Several binary components are fetched via build script on windows including libclang and winpty. These could be integrated more directly in the future either by building those dependencies as part of the Alacritty build process or by leveraging git lfs to store the artifacts. Fixes #28.
2018-10-14Add statusline capabilities to TerminfoRunningDroid
2018-10-07fix erroneous indexed_color resultsRobert Martin Winterstein
2018-10-03Version 0.2.1v0.2.1Joe Wilm
2018-09-30Drop terminal lock before renderingtrimental
The terminal lock is now dropped before rendering by storing all grid cells before clearing the screen. This frees the terminal to do other things since the lock is now free, which lead to a performance benefit with high throughput applications.
2018-09-28Fix rendering of selections outside the viewportChristian Duerr
When rendering selections with both start and end outside of the visible area, Alacritty would assume that both start and end are either above or below the viewport and not render the selection at all. To fix this the `buffer_line_to_visible` method now returns a `ViewportPosition` instead of an `Option<Line>`, this allows giving more feedback about where outside of the visible region the line is using the `ViewportPosition::Above` and `ViewportPosition::Below` variants. Using these newly introduced variants, a selection spanning the whole screen is now rendered if the selection should go from above the visible area to below it. This fixes #1557.
2018-09-27Fix selection start point lagging behind cursorChristian Duerr
Since the mouse start position has been the first movement event after the mouse button was held down, there have been some issues with the start point lagging behind the cursor because movement events were not reported from the initial position but there was a gap until movement starts reporting. To fix this whenever the mouse button is pressed, the position and cell side is stored on the `Mouse` struct. Because of this it does not matter anymore if the movement events are all reported and we can just start a selection using the stored position/side whenever there currently is no selection present. This fixes #1366
2018-09-26Fix selection of empty linesChristian Duerr
When selecting multiple lines in Alacritty, there was an issue with empty lines not being copied. This behavior has been chanaged so empty lines should be correctly copied now. When copying content which ends with an empty line, Alacritty would copy an additional empty line. This has been resolved by only adding empty lines when the empty line was not in the last selected line.
2018-09-26Implement CNL and CPL escape codes (#1590)Niklas Claesson
2018-09-24Add standalone terminfo definitionDaniel Eklöf
This replaces the current definitions, which depend on the system's 'xterm-256color' terminfo definition with the `alacritty` and `alacritty-direct` definitions. The new definitions are completely standalone. The default `TERM` value has been changed to be dynamically set based on the definitions installed on the system. Alacritty will try to use the `alacritty` definition first and fall back to `xterm-256color` if the `alacritty` definition is not present.
2018-09-24Dynamically initialize grid storageChristian Duerr
Previously Alacritty has initialized all lines in the buffer as soon as it is started. This had the effect that terminals which aren't making use of the scrollback buffer yet, would still consume large amounts of memory, potentially even freezing the system at startup. To resolve this problem, the grid is now dynamically resized in chunks of `1000` rows. The initial size is just the visible area itself, then every time lines are written to the terminal emulator, the grid storage is grown when required. With the worst-case scenario of having 100_000 lines scrollback configured, this change improves startup performance at the cost of scrolling performance. On my machine the startup changes from ~0.3 to ~0.2 seconds. The scrolling performance with large throughput is not affected, however it is slowed down when the number of lines scrolled are close to the 100_000 configured as scrollback. The most taxing benchmark I've found for this was running `yes | dd count=500 > 500.txt` (note the relatively small file size). This will cause a slowdown on the first run from 0.05s to 0.15s. While this is significant, it lines up with the time saved at startup. This fixes #1236.
2018-09-24Allow copying selection to primary clipboardGris Ge
A new configuration option `save_to_clipboard` has been added to the `selection` section of the configuration. This allows writing every selection to the primary system clipboard when it is set to `true`. On linux the selection is still written to the selection clipboard, independent of the value of the `save_to_clipboard` setting.
2018-09-23 Implement config option for term colors 16..256Christian Duerr
This adds a config option which allows setting terminal colors above the 0..16 range. Live config reload already works for this, so it is possible to change these colors the same way it works with the normal colors. If a color below 16 is specified, the configuration will throw an error, so the normal colors can't be overridden. This is just to prevent possible complications with the settings that already exist.
2018-09-23Fix mesa rendering outside window borders on waylandtrimental
The mesa workaround has lead to some issues with rendering on Wayland. To resolve this problem, the mesa workaround has been restructured in a way which still allows clearing the screen before rendering without killing performance with the mesa driver. The performance is identical to the master brach and there have been no recorded regressions.
2018-09-20Fix CHANGELOG.mdJoe Wilm
The bracketed paste mode change isn't so much a fix as it is a change to address a potential security issue.
2018-09-20Improve window.decorations options: (#1241)Joe Moon
The decorations config was changed from a bool to an enum. `full` has taken the place of `true`, and `none`, has replaced `false`. On macOS, there are now options for `transparent` and `buttonless`. These options are explained in both the CHANGELOG and in the configuration files.
2018-09-20Update CHANGELOG for #1243Joe Wilm
2018-09-20Add changelog entry for 32-bit fixChristian Duerr
2018-09-19Show hollow cursor for windows starting unfocusedChristian Duerr
Alacritty made the assumption that every window started as focused and because of that the hollow cursor wouldn't show up for windows which are launched without focus. Since even the initial focus should be reported as a focus event by winit, this could be easily fixed just setting the default window state to unfocused instead of focused. This fixes #1563.
2018-09-19Add hidden escape sequenceChristian Duerr
This adds support for the `hidden` escape sequence `\e[8m`, which will render the text as invisible. This has also raised a few questions about the rendering of foreground and background colors and their interaction with the different escape sequences. Previously, Alacritty has oriented itself after URxvt, which has some strange and unexpected behavior. The new implementation of color inversion is modeled after XTerm, which has a consistent pattern of always inverting the foreground and background colors. This should hopefully lead to less confusion for the user and a more consistent behavior. A full matrix showcasing the new way Alacritty inverses text can be found here: https://i.imgur.com/d1XavG7.png This fixes #1454 and fixes #1455.
2018-09-18Opt-in to macOS Mojave Dark ModePhilipp
macOS 10.14 will bring a new system wide dark mode. To enable this, the [official guides][] suggest to relink using the newest OS. This approach, however, did not work for me as described in [an issue][] in the glutin repository. As a second option, the accompanying `Info.plist` file can also overwrite the link-time check and enable dark mode rendering if the system config is set by setting `NSRequiresAquaSystemAppearance` to `YES`. This approach seems to work flawlessly no matter if a user opts into dark mode or not. I would appreciate it if someone can test this on macOS 10.13 as well, but I suppose the key there is unused and would not break anything. [official guides]: https://developer.apple.com/documentation/appkit/appkit_release_notes_for_macos_10.14_beta [an issue]: https://github.com/tomaka/glutin/issues/1053#issuecomment-409315461
2018-09-17Set COLORTERM variable to advertise 24-bit supportDavid Peter
Set `COLORTERM` to `truecolor` in order for applications to be able to detect that alacritty supports 24-bit colors. See https://gist.github.com/XVilka/8346728 for more details. Closes #1526.
2018-09-17Acknowledge first click on unfocused windows with bsd/linuxnolanl
Fixes a regression on non-macOS platforms caused by the fix for issue #1291. The fix is to follow platform norms for mouse click behavior on unfocused terminals. On macOS, the first click (that gives the window focus) is swallowed, and has no effect on the terminal. On all other platforms, the first click is passed through to the terminal.
2018-09-17Bump version in CHANGELOGscrollbackJoe Wilm
2018-09-17Bump version number to 0.2.0 (#1492)Christian Duerr
* Change deb installation from crates.io to git There have been a number of issues an PRs opened since the cargo-deb installation does not work with the latest version from crates.io. To help out users until the crates.io version is updated, the installation instructions have been temporarily changed to install `cargo-deb` through github. * Revert cargo-deb install back to use crates.io Since `cargo-deb` has been updated on crates.io it is now possible to just install it from crates.io and build Alacritty's deb without having to rely on github. * Update dependencies This fixes an `illegal hardware instruction (core dumped)` error when building in release mode. * Remove redundant copy when selecting font_key * Bump version number to 0.2.0 Since the Scrollback branch introduces some major changes, this bumps the version number from 0.1.0 to 0.2.0. The versions of Alacritty have not been updated regularly to this point, so the scrollback branch is a good point in time to start updating Alacritty's version on a regular basis. Further changes to the readme, like dropping the 'alpha' status and updating it to 'beta' could also be introduced with this branch. This way there will be a clean cut which updates everything as soon as scrollback is merged. Building versions is another thing which would be a good thing to start reasonably quickly. However starting this on the main branch after scrollback has been merged seems like a more reliable way to move forward. This fixes #1240. * Add a CHANGELOG file A CHANGELOG file has been added to offer a bit more transparency over which features have been changed, added and potentially removed in Alacritty. There are various formats available for the CHANGELOG file but the most common and sensible one seems to be the one defined by https://keepachangelog.com/en/1.0.0. Following the template proposed by this it should be possible to create a clear CHANGELOG which makes it simple for new contributors to figure out exactly which formatting should be used for it. Since there have been quite a few changes to Alacritty already, not all changes have been added to the changelog. However a few entries have been ported just to give a bit of an example what the format should look like. This also helps with the 0.2.0 version since it will not be completely empty in the changelog. This fixes #1534. * Update CHANGELOG This updates the CHANGELOG to include the changes introduced by 43882ade33d4c14ee7248e489a2d33395faaa0b1.