1. 20 Sep, 2018 6 commits
  2. 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.
      26c4043a
    • 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.
      bd6e5a99
    • 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:
      https://i.imgur.com/d1XavG7.png
      
      This fixes #1454 and fixes #1455.
      d387ebe1
  3. 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
      f0ce64e2
    • 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.
      05d40a8a
    • 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.
      00bd0987
  4. 17 Sep, 2018 11 commits
    • Matthias Krüger's avatar
      Fix style issues · 63a40df5
      Matthias Krüger authored
      63a40df5
    • VoidNoire's avatar
      55e675a3
    • Nathan West's avatar
      Fix fish completion name in deb installer · a10403b7
      Nathan West authored
      a10403b7
    • Alexander Schlarb's avatar
      Give zsh completion file the correct name when installing with `cargo deb --install` · e2c1e56b
      Alexander Schlarb authored
      The zsh completion name for the deb installer has been corrected.
      
      The installation instructions for the zsh completions have also been
      updated to make it possible to install them without root permissios.
      e2c1e56b
    • David Peter's avatar
      Set COLORTERM variable to advertise 24-bit support · 35ea0cde
      David Peter authored
      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.
      35ea0cde
    • nolanl's avatar
      Acknowledge first click on unfocused windows with bsd/linux · 7a8a002d
      nolanl authored
      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.
      7a8a002d
    • Christian Rebischke's avatar
      Add mention of official arch linux package · 1f243468
      Christian Rebischke authored
      Since Alacritty does not require the AUR anymore, its mention has been
      removed from the README.
      
      To make future changes simpler, the README has also been reworded so
      less changes are required for adding new operating systems.
      1f243468
    • Joe Wilm's avatar
      Add latest blog post to README · 8b71eede
      Joe Wilm authored
      8b71eede
    • Joe Wilm's avatar
      Merge pull request #1147 from jwilm/scrollback · cff58e9d
      Joe Wilm authored
      Scrollback
      cff58e9d
    • Joe Wilm's avatar
      Bump version in CHANGELOG · 054e38e9
      Joe Wilm authored
      054e38e9
    • Christian Duerr's avatar
      Bump version number to 0.2.0 (#1492) · ca1b75b4
      Christian Duerr authored
      * 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
      43882ade.
      ca1b75b4
  5. 05 Sep, 2018 2 commits
    • Christian Duerr's avatar
      Fix substraction underflow with IL sequence · 43882ade
      Christian Duerr authored
      The IL escape sequence (CSI Ps L) allows inserting blank, uninitialized
      lines. `Ps` is a placeholder for the number of lines that should be
      inserted. Before this change Alacritty would crash when a large number
      of lines was passed as `Ps` parameter.
      
      The issue was caused whenever the current line of the cursor plus the
      lines that should be inserted would leave the bottom of the terminal,
      since this makes indexing impossible.
      
      This patch makes sure that the biggest amount of lines inserted does
      never exceed the end of the visible region minus the current line of the
      curser, which fixes the underflow issue.
      
      This fixes #1515.
      43882ade
    • Lucas Timmins's avatar
      865727c0
  6. 02 Sep, 2018 1 commit
    • Nathan Lilienthal's avatar
      Implement `ansi::ClearMode::Saved` · 72495172
      Nathan Lilienthal authored
      The clearing the screen for the `ansi::ClearMode::Saved` enum value
      has been implemented. This is used to clear all lines which are
      currently outside of the visible region but still inside the scrollback
      buffer.
      
      The specifications of XTerm indicate that the clearing of saved lines
      should only clear the saved lines and not the saved lines plus the
      currently visible part of the grid. Applications like `clear` send both
      the escape for clearing history plus the escape for clearing history
      when requested, so all sources seem to agree here.
      
      To allow both clearing the screen and the saved lines when a key is
      pressed the `process_key_bindings` method has been altered so multiple
      bindings can be specified. So it is now possible to execute both `^L`
      and `ClearHistory` with just a single binding. The
      `process_mouse_bindings` method has also been changed for consistency.
      
      To make sure everything works properly a test has been added which
      clears the history and then attempts to scroll. Since scrolling is the
      only way for a user to check if scrollback is available, this seems like
      a nice abstraction to check if there is a scrollback.
      72495172
  7. 15 Aug, 2018 1 commit
    • Christian Duerr's avatar
      Scroll visible area when growing window · 8e8ecdd0
      Christian Duerr authored
      Since Alacritty never had any scrollback history, the behavior when the
      window height was increased was to just keep the prompt on the same line
      it has been before the resize. However the usual behavior of terminal
      emulators is to keep the distance from the prompt to the bottom of the
      screen consistent whenever possible.
      
      This fixes this behavior by loading lines from the scrollback buffer
      when the window height is increased. This is only done when scrollback
      is available, so there are only N lines available, the maximum amount of
      lines which will be loaded when growing the height is N. Since the
      number of lines available in the alternate screen buffer is 0, it still
      behaves the same way it did before this patch.
      
      Different terminal emulators have different behaviors when this is done
      in the alt screen buffer, XTerm for example loads history from the
      normal screen buffer when growing the height of the window from the
      alternate screen buffer. Since this seems wrong (the alt screen is not
      supposed to have any scrollback), the behavior of Termite (VTE) has been
      chosen instead.
      
      In Termite the alt screen buffer never loads any scrollback history
      itself, however when the terminal height is grown while the alternate
      screen is active, the normal screen's scrollback history lines are
      loaded.
      
      This fixes #1502.
      8e8ecdd0
  8. 05 Aug, 2018 2 commits
    • Matthias Krüger's avatar
      Update depend · 7717bd7c
      Matthias Krüger authored
      This fixes an `illegal hardware instruction (core dumped)`
      error when building in release mode.
      7717bd7c
    • Matthias Krüger's avatar
      Update dependencies · 1adb5cb7
      Matthias Krüger authored
      This fixes an `illegal hardware instruction (core dumped)`
      error when building in release mode.
      1adb5cb7
  9. 03 Aug, 2018 1 commit
    • Christian Duerr's avatar
      Reset visible area when RIS is received · facab5be
      Christian Duerr authored
      When running bash and executing `echo -ne '\033c'`, the terminal should
      be cleared. However there was an issue with the visible area not being
      cleared, so all the text previously printed would still remain visible.
      
      To fix this, whenever a `reset` call is received now, the complete
      visible area is reset to `Cell::default()` (the default Cell) and the
      length of the available scrollback history is reset to `0`, which
      results in the scrollback history being cleared from the perspective of
      the user.
      
      This fixes #1483.
      facab5be
  10. 29 Jul, 2018 4 commits
    • Árni Dagur's avatar
      Remove "Why doesn't it support scrollback?" from FAQ · 23601fbe
      Árni Dagur authored
      Since scrollback is implemented on the scrollback branch,
      this section in the FAQ is redundant.
      23601fbe
    • Christian Duerr's avatar
      Revert cargo-deb install back to use crates.io · 24a74d44
      Christian Duerr authored
      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.
      24a74d44
    • Christian Duerr's avatar
      Enable LTO · 5d2faf43
      Christian Duerr authored
      This has been disabled temporarily to improve compile times, however
      there were some performance regressions caused by this change.
      
      Since this only affects release compiles and performance is a high
      priority for Alacritty, LTO has been enabled again.
      5d2faf43
    • Christian Duerr's avatar
      Change deb installation from crates.io to git · 95698999
      Christian Duerr authored
      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.
      95698999
  11. 28 Jul, 2018 2 commits
    • Christian Duerr's avatar
      Merge branch 'master' into scrollback · 7c5585ff
      Christian Duerr authored
      7c5585ff
    • Christian Duerr's avatar
      Merge master into scrollback · c4a0f9c4
      Christian Duerr authored
      * Allow disabling DPI scaling
      
      This makes it possible to disable DPI scaling completely, instead the
      the display pixel ration will always be fixed to 1.0.
      
      By default nothing has changed and DPI is still enabled, this just seems
      like a better way than running `WINIT_HIDPI_FACTOR=1.0 alacritty` every
      time the user wants to start alacritty.
      
      It would be possible to allow specifying any DPR, however I've decided
      against this since I'd assume it's a very rare usecase. It's also still
      possible to make use of `WINIT_HIDPI_FACTOR` to do this on X11.
      
      Currently this is not updated at runtime using the live config update,
      there is not really much of a technical limitation why this woudn't be
      possible, however a solution for that issue should be first added in
      jwilm/alacritty#1346, once a system is established for changing DPI at
      runtime, porting that functionality to this PR should be simple.
      
      * Add working --class and --title CLI parameters
      
      * Reduce Increase-/DecreaseFontSize step to 0.5
      
      Until now the Increase-/DecreaseFontSize keybinds hand a step size of 1.0. Since the font size however is multiplied by two to allow more granular font size control, this lead to the bindings skipping one font size (incrementing/decrementing by +-2).
      
      To fix this the step size of the Increase-/DecreaseFontSize bindings has been reduced to the minimum step size that exists with the current font configuration (0.5). This should allow users to increment and decrement the font size by a single point instead of two.
      
      This also adds a few tests to make sure the methods for increasing/decreasing/resetting font size work properly.
      
      * Add Copy/Cut/Paste keys
      
      This just adds support for the Copy/Cut/Paste keys and sets up
      Copy/Paste as alternative defaults for Ctrl+Shift+C/V.
      
      * Move to cargo clippy
      
      Using clippy as a library has been deprecated, instead the `cargo
      clippy` command should be used instead. To comply with this change
      clippy has been removed from the `Cargo.toml` and is now installed with
      cargo when building in CI.
      
      This has also lead to a few new clippy issues to show up, this includes
      everything in the `font` subdirectory. This has been fixed and `font`
      should now be covered by clippy CI too.
      
      This also upgrades all dependencies, as a result this fixes #1341 and
      this fixes #1344.
      
      * Override dynamic_title when --title is specified
      
      * Change green implementation to use the macro
      
      * Ignore mouse input if window is unfocused
      
      * Make compilation of binary a phony target
      
      * Add opensuse zypper install method to readme
      
      * Fix clippy issues
      
      * Update manpage to document all CLI options
      
      The introduction of `--class` has added a flag to the CLI without adding
      it to the manpage. This has been fixed by updating the manpage.
      
      This also adds the default values of `--class` and `--title` to the CLI
      options.
      
      * Remove unnecessary clippy lint annotations
      
      We moved to "cargo clippy" in 5ba34d4f and
      removing the clippy lint annotations in `src/lib.rs` does not cause any additional warnings.
      
      This also changes `cargo clippy` to use the flags required for checking integration tests.
      
      * Enable clippy in font/copypasta crates
      
      Enabled clippy in the sub-crates font and copypasta. All issues
      that were discovered by this change have also been fixed.
      
      * Remove outdated comment about NixOS
      
      * Replace debug asserts with static_assertions
      
      To check that transmutes will work correctly without having to rely on
      error-prone runtime checking, the `static_assertions` crate has been
      introduced. This allows comparing the size of types at compile time,
      preventing potentially silent breakage.
      
      This fixes #1417.
      
      * Add `cargo deb` build instructions
      
      Updated the `Cargo.toml` file and added a `package.metadata.deb`
      subsection to define how to build a debian "deb" install file using
      `cargo deb`. This will allow debian/ubuntu users to install `alacritty`
      using their system's package manager. It also will make it easier to
      provide pre-built binaries for those systems.
      
      Also fixed a stray debug line in the bash autocomplete script that was
      writting to a tempfile.
      
      * Add config for unfocused window cursor change
      
      * Add support for cursor shape escape sequence
      
      * Add bright foreground color option
      
      It was requested in jwilm/alacritty#825 that it should be possible to
      add an optional bright foreground color.
      
      This is now added to the primary colors structure and allows the user to
      set a foreground color for bold normal text. This has no effect unless
      the draw_bold_text_with_bright_colors option is also enabled.
      
      If the color is not specified, the bright foreground color will fall
      back to the normal foreground color.
      
      This fixes #825.
      
      * Fix clone URL in deb install instructions
      
      * Fix 'cargo-deb' desktop file name
      
      * Remove redundant dependency from deb build
      
      * Switch from deprecated `std::env::home_dir` to `dirs::home_dir`
      
      * Allow specifying modifiers for mouse bindings
      
      * Send newline with NumpadEnter
      
      * Add support for LCD-V pixel mode
      
      * Add binding action for hiding the window
      
      * Switch to rustup clippy component
      
      * Add optional dim foreground color
      
      Add optional color for the dim foreground (`\e[2m;`)
      Defaults to 2/3 of the foreground color. (same as other colors).
      
      If a bright color is dimmed, it's displayed as the normal color. The
      exception for this is when the bright foreground is dimmed when no
      bright foreground color is set. In that case it's treated as a normal
      foreground color and dimmed to DimForeground.
      
      To minimize the surprise for the user, the bright and dim colors have
      been completely removed from the default configuration file.
      Some documentation has also been added to make it clear to users what
      these options can be used for.
      
      This fixes #1448.
      
      * Fix clippy lints and run font tests on travis
      
      This fixes some existing clippy issues and runs the `font` tests through travis.
      
      Testing of copypasta crate was omitted due to problens when running on headless travis-ci environment (x11 clipboard would fail).
      
      * Ignore errors when logger can't write to output
      
      The (e)print macro will panic when there is no output available to
      write to, however in our scenario where we only log user errors to
      stderr, the better choice would be to ignore when writing to stdout or
      stderr is not possible.
      
      This changes the (e)print macro to make use of `write` and ignore
      any potential errors.
      
      Since (e)println rely on (e)print, this also solves potential failuers
      when calling (e)println.
      
      With this change implemented, all of logging, (e)println and (e)print
      should never fail even if the stdout/stderr is not available.
      c4a0f9c4
  12. 26 Jul, 2018 2 commits
  13. 25 Jul, 2018 2 commits
    • Christian Duerr's avatar
      Ignore errors when logger can't write to output · 57a455e5
      Christian Duerr authored
      The (e)print macro will panic when there is no output available to
      write to, however in our scenario where we only log user errors to
      stderr, the better choice would be to ignore when writing to stdout or
      stderr is not possible.
      
      This changes the (e)print macro to make use of `write` and ignore
      any potential errors.
      
      Since (e)println rely on (e)print, this also solves potential failuers
      when calling (e)println.
      
      With this change implemented, all of logging, (e)println and (e)print
      should never fail even if the stdout/stderr is not available.
      57a455e5
    • Matthias Krüger's avatar
      Fix clippy lints and run font tests on travis · ddb9a558
      Matthias Krüger authored
      This fixes some existing clippy issues and runs the `font` tests through travis.
      
      Testing of copypasta crate was omitted due to problens when running on headless travis-ci environment (x11 clipboard would fail).
      ddb9a558