1. 30 Sep, 2018 2 commits
    • trimental's avatar
      Drop terminal lock before rendering · b22999f1
      trimental authored
      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
    • Jon Gjengset's avatar
      Bump fontconfig dependencies · f785f88a
      Jon Gjengset authored
      The patch uses the Cargo.toml patch section to force a single downstream
      choice of freetype-sys instead of relying on forks of other crates. It
      also bumps the fontconfig/freetype dependencies in the process.
  2. 29 Sep, 2018 1 commit
    • Christian Duerr's avatar
      Fix failing test with `bench` feature · e01317d8
      Christian Duerr authored
      Using the `bench` feature, `cargo test` was failing since one of the
      benchmarks was running into a debug assertion for attempting to access a
      line with an index beyond the grid length.
      Since this issue was caused by the `len` property not being serialized
      and deserialized, the `#[serde(skip)]` attribute has been changed to
      `#[serde(default)]`. The ref-test has been edited to include the correct
      grid length for proper deserialization.
      This fixes #1604.
  3. 28 Sep, 2018 3 commits
    • Christian Duerr's avatar
      Fix rendering of selections outside the viewport · 1887722e
      Christian Duerr authored
      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.
    • Niclas Zeising's avatar
      Add note about package install on FreeBSD · 88076938
      Niclas Zeising authored
    • Christian Duerr's avatar
      Fix deserialization of old decorations values · 93837110
      Christian Duerr authored
      The deprecated `window.decoration` values `true` and `false` were using
      the `visit_bool` visitor for serde. However, only the `str` visitor was ever
      To print the correct deprecation notice, the bool visitor has been
      removed and the warning has been added for the `"true"` and `"false"`
      str visitor.
  4. 27 Sep, 2018 1 commit
    • Christian Duerr's avatar
      Fix selection start point lagging behind cursor · 5e97fcbe
      Christian Duerr authored
      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
  5. 26 Sep, 2018 2 commits
    • Christian Duerr's avatar
      Fix selection of empty lines · 593d7718
      Christian Duerr authored
      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.
    • Niklas Claesson's avatar
  6. 25 Sep, 2018 1 commit
    • Christian Duerr's avatar
      Fix reset cursor terminfo escape · 2ef376bb
      Christian Duerr authored
      The reset cursor terminal escape sequnce specified in the terminfo file
      was using xterm's `\E[2 q`. However this just resets the cursor to the
      block cursor shape.
      Since Alacritty supports the `\E[0 q` escape sequence for resetting the
      cursor shape to the original shape specified in the configuration file,
      the terminfo file has been altered to make use of this sequence instead.
  7. 24 Sep, 2018 3 commits
    • Daniel Eklöf's avatar
      Add standalone terminfo definition · ec3a8042
      Daniel Eklöf authored
      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.
    • Christian Duerr's avatar
      Dynamically initialize grid storage · 3d7e88e8
      Christian Duerr authored
      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
      This fixes #1236.
    • Gris Ge's avatar
      Allow copying selection to primary clipboard · a752066b
      Gris Ge authored
      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.
  8. 23 Sep, 2018 2 commits
    • Christian Duerr's avatar
      Implement config option for term colors 16..256 · cd79680b
      Christian Duerr authored
      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.
    • trimental's avatar
      Fix mesa rendering outside window borders on wayland · 9b694fcc
      trimental authored
      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.
  9. 22 Sep, 2018 1 commit
    • Christian Duerr's avatar
      Unify configuration file structure · cee35b30
      Christian Duerr authored
      This changes a lot of small details in the configuration file in an
      attempt to unify its structure. These are some main guidelines used for
      this refactoring:
          - Specify that changes require restart consistently
          - Unify the specification of available field values
          - Provide clear distinction between description title and body
      Besides these guidelines used to unify minor details in the
      configuration file, the section on key configuration has been completely
      reworked in an attempt to reduce the amount of text used. This should
      make it possible to understand what's going on without having to read
      any text.
      The notice that modifiers are not supported has been removed from the
      mouse binding documentation.
  10. 20 Sep, 2018 9 commits
    • Christian Duerr's avatar
      Fix config error with missing decorations field · 6cfd7aea
      Christian Duerr authored
      The latest change to window decorations
      (3b46859e) introduced a regression when
      running Alacritty without the `decorations` field specified in the
      configuration file. Since serde wasn't setup to fallback to the default,
      the complete config deserialization would fail.
      This resolves this issue by deserializing it to the default decorations
      value "Full". To make this setting a little more forgiving, this also
      introduces another change which ignores the case for the configuration
      options. So both `full` and `FuLl` are now accepted.
    • Joe Wilm's avatar
      Fix CHANGELOG.md · 34ba485f
      Joe Wilm authored
      The bracketed paste mode change isn't so much a fix as it is a change to
      address a potential security issue.
    • Joe Moon's avatar
      Improve window.decorations options: (#1241) · 3b46859e
      Joe Moon authored
      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.
    • Joe Wilm's avatar
      Update CHANGELOG for #1243 · 641f3291
      Joe Wilm authored
    • Aidan Epstein's avatar
      Fix Bracketed Paste Mode when input contains end sequence. (#1243) · 417ad9d4
      Aidan Epstein authored
      * Fix Bracketed Paste Mode when input contains end sequence.
      * Remove \x1b instead of just the paste end sequence.
    • Joe Wilm's avatar
      Merge pull request #1573 from ChrisMacNaughton/patch-1 · 177a5c39
      Joe Wilm authored
      Update snapcraft.yaml
    • Chris MacNaughton's avatar
      Update snapcraft.yaml · 6e985939
      Chris MacNaughton authored
      The existing snapcraft.yaml is pointing to a file that has been renamed,
      subsequently breaking the snap build. This change renames the .desktop
      file to match what is in-tree.
    • Christian Duerr's avatar
      Add changelog entry for 32-bit fix · ef06109d
      Christian Duerr authored
    • Johannes's avatar
      Fix build failure on 32-bit machines · a769e80e
      Johannes authored
      Alacritty has some checks in place to make sure that unsafe
      code would not fail because of invalid struct sizes. This managed
      to successfully catch an incorrect unsafe block on 32-bit machines.
      To make sure this block works on both 32-bit and 64-bit systems,
      it has been altered to make use of the platform-dependent `usize`
      type. This will always make use of correct sizes without having to
      rely on conditional compilation.
  11. 19 Sep, 2018 3 commits
    • Jeff Muizelaar's avatar
      Update core-* dependencies · 26c4043a
      Jeff Muizelaar authored
      The core-* dependencies have been updated and every breaking
      change has been resolved.
      These are the main changes which required adaption:
      - font_path() returns a PathBuf now
      - get_descriptors() returns an Option<CFArray>
      - get_advances_for_glyphs and get_glyphs_for_characters are now unsafe.
      All packages which did not have breaking updates have also been updated.
    • Christian Duerr's avatar
      Show hollow cursor for windows starting unfocused · bd6e5a99
      Christian Duerr authored
      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.
    • Christian Duerr's avatar
      Add hidden escape sequence · d387ebe1
      Christian Duerr authored
      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:
      This fixes #1454 and fixes #1455.
  12. 18 Sep, 2018 3 commits
    • Philipp's avatar
      Opt-in to macOS Mojave Dark Mode · f0ce64e2
      Philipp authored
      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
    • Daniel Eklöf's avatar
      Mention required terminfo update when changing tabspaces · 05d40a8a
      Daniel Eklöf authored
      Changing tabspaces from the default (8) requires a corresponding
      update to the `it` item in the terminfo entry used.
      Some applications, like Emacs, rely on knowing the width of a tab, and
      will experience unexpected behavior if the terminfo data does not
      match the actual width used.
    • Christian Duerr's avatar
      Set upper limit for scrollback history size · 00bd0987
      Christian Duerr authored
      Since the scrollback history allocates all lines in memory, it is
      possible to specify a scrollback history which is big enough to freeze
      the computer due to OOM.
      To resolve this issue, an upper limit of `100_000` has been set for the
      scrollback history. Even though this might still cause some systems to
      freeze, this should provide a good balance for most users.
  13. 17 Sep, 2018 9 commits