summaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)Author
2017-05-31somewhat DRYer code for font loadingMartin Algesten
2017-05-29Implement FocusIn/FocusOut reports (#589)Aaron Hill
Implements sending FocusIn/FocusOut events, as defined at http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-FocusIn_FocusOut
2017-05-28Add config file as cli option (#576)Niklas Claesson
* Parse cli arguments before configuration file Parsing the cli arguments before the configuration file allows `--help` and `--version` to be used even if the configuration file is broken. * Add configuration file to command line arguments This commit adds a new command line flag `--config-file` to override the default configuration file location. If the specified file is unavailable, Alacritty will quit instead of generating a fallback. If the specified file is invalid, i.e. /dev/null, the compiled in defaults will be loaded instead.
2017-05-27Find and set $WINDOWID to X11 window ID (#586)ns
2017-05-27Remove incorrect close (#552)Niklas Claesson
Ownership of the slave file descriptor is passed to the process::Stdio structs and will be closed when they are dropped. If the slave fd is closed explicitly then the next fd that is opened during the same scope will get silently closed by the Stdio structs when they are dropped.
2017-05-25Add support for running commands on key press (#566)Dominik Miedziński
Based on option `command` in key binding section in config, e.g. - { key: N, mods: Control|Shift, command: alacritty } # or - { key: N, mods: Control|Shift, command: { program: "alacritty", args: ["-e", "vttest"], }} specified command will be run in the background on key press. Alacritty doesn't wait for its result nor block IO.
2017-05-24Minor cleanup, style fix, dead code removalJoe Wilm
2017-05-24Add DrainResult enumAaron Hill
2017-05-24Fix typoAaron Hill
2017-05-24Ensure that the event loop thread cleanly exits on shutdownAaron Hill
Background: If a shell process exits with children still alive (typically due to the `disown` shell builtin), POLLHUP will not be sent to the master PTY file descriptor. This is due to the fact that the disowned process still has the slave PTY open as its STDIN, STDOUT, and STDERR. If a disowned process never reads or writes from its file descriptors (which is often the case for graphical applications), the event loop will end up blocking on poll()/select() when not handling user input received over the mio channel. When Alacritty shuts down and joins on the event loop thread, there can never be any more input on the mio channel - the main thread is no longer handling user keystrokes from the window. Unless a disowned process happens to access its slave PTY file descriptors, the event loop will never get the chance to deetect that it should exit. This commit extends the `Msg` enum to include an explicit `Shutdown` message, which ensures a clean shutdown (e.g. closing the 'recording' file). This allows the select()/poll() call to remain blocking, instead of needing to periodically check the shutdown state in between timed-out calls. Fixes #339
2017-05-24Fix #573. Ensure we don't write 0 bytes to ptyMartin Algesten
Any action that results in 0 bytes, such as pasting 0 bytes from the clipboard hangs the terminal (`pbcopy </dev/null` followed by ctrl-v), hangs the terminal on both macOS and Linux. This ensures we never send 0 bytes.
2017-05-12Use debug! instead of println!Dominik Miedziński
2017-05-10Fix viewport_size.height calculationN-006
Closes #556
2017-05-08Fix Device Status reportsDominik Miedziński
2017-05-07Add support for Query Device StatusDominik Miedziński
2017-05-06Fix bug in SizeInfo::contains_pointJoe Wilm
Accidentally broke it when refactoring.
2017-05-06Work around ICEJoe Wilm
2017-05-06Add window padding optionTuomas Siipola
Padding can be configured by using the `padding` field in the config file, like so: padding: x: 2 y: 2 which would result in a 2px padding within each side of the window.
2017-05-06Fix glyph offsets in cellJoe Wilm
We previously had a hard-coded value for aligning glyphs within cells. The font descent is now used, and the offset should be correct by default.
2017-05-01Fix bug with tab renderingJoe Wilm
Closes #494. Resolves #529. Resolves #512. Resolves #493.
2017-05-01Combine FontOffset and GlyphOffset structs into Delta structAaron Williamson
The two structs are very similar, so there is no reason for them to be separate. Instead combine them into a single Delta struct, which can be used to shift a point in a two dimensional plane.
2017-05-01Add glyph offset option to user configurationAaron Williamson
Add the ability to move glyphs within their cells on a global basis via an option in the configuration file.
2017-05-01Remove unnecessary size argument to metrics functionAaron Williamson
The changes to metric consumption rendered the size argument unnecessary, remove it.
2017-05-01Improve freetype metric usageAaron Williamson
The font metrics function was using freetype metrics in an ineffective way, improve the use of those metrics and remove the now unnecessary separate default values for font offset in linux.
2017-05-01Support setting _NET_WM_PID in X11 environmentsJoe Wilm
Support is added for setting _NET_WM_PID automatically. This is to support scripting of the window environment. For example, this makes it possible to script opening a window with same CWD: 1. Retrieve the current window 2. (new) get PID of window 3. Check if it's Alacritty, find first child (presumably a shell), and get the child's cwd. 4. Spawn new instance of terminal with cwd. Unaddressed in this commit is how this will coexist on a Wayland system.
2017-05-01Support insert modeJoe Wilm
2017-05-01Add limit check in scroll_up/down_relativeJoe Wilm
2017-05-01Implement tab stop manipulationJoe Wilm
Adds implementations for TBC (tabulation clear) and HTS (set horizontal tabstop).
2017-04-20Remove unused limit functionJoe Wilm
2017-04-20Fix some bugs with resizeJoe Wilm
2017-04-19Fix issue with back_color_eraseJoe Wilm
back_color_erase should not set flags like bold, underline, etc.
2017-04-19Pass scrolling region tests in vttest 2Joe Wilm
2017-04-19Partially add DECCOLM supportJoe Wilm
It's not possible with DECCOLM to temporarily set 80 or 132 column mode since the function is a toggle between the two. Instead, only the additional affects are run in order to get closer to passing vttest. vttest will never be perfect due to the column mode issue.
2017-04-18Support DECOM (Origin Mode)Joe Wilm
2017-04-18Add CLI arg for setting working directoryZach Day
Resolves #478.
2017-04-18Fixes for vttest cursor movement screen 1Joe Wilm
2017-04-18Implement LF/NLJoe Wilm
2017-04-04fix tabulation renderingRoman Shmatov
2017-04-03Better error handling in event loopJoe Wilm
Also checks hup first since if the terminal is either not readable or writable there's nothing for Alacritty to do. Closes #480.
2017-04-03Fix hang on exit after child process failedLukas Holecek
Quick test (works ~50%) is to press Ctrl+C followed by Ctrl+D. Reproducible on Arch Linux with OpenGL from NVidia. Fixes #228
2017-04-03Do not replace $SHELL with --command optionJustin Charette
Signed-off-by: Justin Charette <charetjc@gmail.com>
2017-04-03Add better printing for ref test failureJoe Wilm
The previous format was extremely difficult for a human to parse.
2017-04-03Fix issue with htop rendering incorrectlyJoe Wilm
Since we're emulating xterm, we need to support back_color_erase. If this is found to cause any issues, please open a ticket on GitHub. Resolves #85.
2017-03-04Handle CSI command J3 (Clear saved lines)Aaron Hill
Xterm supports an extension to the CSI command `Erase in Display (ED)`, under the command number 3. This command is used to clear the scrollback buffer - e.g. anything not visible on the screen. Since scrollback is not part of alacritty, the handler for this command currently does nothing. If at some point scrollback is implemented, the corresponding `match` arm can be modified to properly handle this. For an example of a program which uses this command, run the `clear` command (using ncurses 6.0). In a supported terminal such as `gnome-terminal`, this will clear anything off of the screen from the scrollback buffer. Before this change, `alacritty` would generate an `Unhandled CSI` message.
2017-03-03Handle OSC command '1' (Set Icon Name)Aaron Hill
2017-03-02Add support for wide charactersJoe Wilm
2017-02-27Update cell to cursor template when adding a tab.Anders Rasmussen
2017-02-25Change cursor colors config to use text and cursorJoe Wilm
This changes the cursor color config to use the `text` and `cursor` properties instead of the current `foreground` and `background` properties. The latter names stop making sense when dealing with cursors like a vertical bar or underscore. In the new system, the block, underscore, or vertical bar would always take the color of `cursor`, and the text would take the color of `text` when using a block, or keep its normal color when using the underscore or vertical bar. A warning is now emitted on startup when the old form of cursor color config is used. This will be a hard error in the future.
2017-02-22hide mouse cursor mac osAnders Rasmussen
2017-02-22Lazily reset `start_time` in VisualBell's `completed` methodMark Andrus Roberts
Fixes #416. Here's what I think is happening: at short `duration`s, the VisualBell's [`completed` check](https://github.com/jwilm/alacritty/blob/3ce6e1e4b2924b0d432cbb3e62b4bbef88dd38ff/src/term/mod.rs#L377) is returning `true` before we've actually had a chance to draw the "normal" background color. I thought about driving this condition off of whether or not `intensity` returns 0.0, but we may still miss a draw, I think. Perhaps the best way to tackle this is to let `completed` lazily reset the VisualBell's `start_time` (something @jwilm asked about when this feature originally landed), and to only return `true` when the VisualBell's `start_time` is `None`. This should effectively delay the final draw until after the VisualBell completes.