aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAyose <ayosec@gmail.com>2021-04-18 22:45:19 +0100
committerAyose <ayosec@gmail.com>2021-04-18 22:45:19 +0100
commite5e9c8293535ea6eaaa3d017cbfb322c7ac95c14 (patch)
treeb805d27d397246e3684224e7aac0b833d763e7b6
parentfd0218f2545762c0d13dc17a55a1b6a334e31c19 (diff)
parent28abb1f9c78ab316126bdf94e2ca12f034f1d8fd (diff)
downloadr-alacritty-e5e9c8293535ea6eaaa3d017cbfb322c7ac95c14.tar.gz
r-alacritty-e5e9c8293535ea6eaaa3d017cbfb322c7ac95c14.tar.bz2
r-alacritty-e5e9c8293535ea6eaaa3d017cbfb322c7ac95c14.zip
Merge remote-tracking branch 'vendor/master' into graphics
-rw-r--r--CHANGELOG.md5
-rw-r--r--Cargo.lock203
-rw-r--r--alacritty.yml99
-rw-r--r--alacritty/Cargo.toml1
-rw-r--r--alacritty/src/config/bindings.rs7
-rw-r--r--alacritty/src/config/mouse.rs38
-rw-r--r--alacritty/src/config/ui_config.rs101
-rw-r--r--alacritty/src/display/content.rs24
-rw-r--r--alacritty/src/display/hint.rs188
-rw-r--r--alacritty/src/display/mod.rs122
-rw-r--r--alacritty/src/event.rs169
-rw-r--r--alacritty/src/input.rs288
-rw-r--r--alacritty/src/main.rs1
-rw-r--r--alacritty_terminal/Cargo.toml2
-rw-r--r--alacritty_terminal/src/ansi.rs93
-rw-r--r--alacritty_terminal/src/event.rs4
-rw-r--r--alacritty_terminal/src/event_loop.rs4
-rw-r--r--alacritty_terminal/src/grid/resize.rs4
-rw-r--r--alacritty_terminal/src/term/mod.rs50
-rw-r--r--alacritty_terminal/src/term/search.rs4
-rw-r--r--alacritty_terminal/tests/ref.rs4
-rw-r--r--docs/features.md12
22 files changed, 791 insertions, 632 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 74391ed8..2df7c779 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Synchronized terminal updates using `DCS = 1 s ST`/`DCS = 2 s ST`
- Regex terminal hints ([see features.md](./docs/features.md#hints))
- Support for Sixel protocol
+- macOS keybinding (cmd+alt+H) hiding all windows other than Alacritty
+
+### Changed
+
+- The vi mode cursor is now created in the top-left if the terminal cursor is invisible
### Fixed
diff --git a/Cargo.lock b/Cargo.lock
index 3f220b08..5c227e71 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1,5 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
+version = 3
+
[[package]]
name = "ab_glyph_rasterizer"
version = "0.1.4"
@@ -41,7 +43,6 @@ dependencies = [
"serde_yaml",
"time",
"unicode-width",
- "urlocator",
"wayland-client",
"winapi 0.3.9",
"x11-dl",
@@ -73,8 +74,8 @@ dependencies = [
"mio",
"mio-anonymous-pipes",
"mio-extras",
- "miow 0.3.6",
- "nix 0.19.1",
+ "miow 0.3.7",
+ "nix 0.20.0",
"parking_lot",
"regex-automata",
"serde",
@@ -174,9 +175,9 @@ checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
[[package]]
name = "byteorder"
-version = "1.4.2"
+version = "1.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b"
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
[[package]]
name = "calloop"
@@ -421,14 +422,13 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
-version = "0.8.2"
+version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bae8f328835f8f5a6ceb6a7842a7f2d0c03692adb5c889347235d59194731fe3"
+checksum = "e7e9d99fa91428effe99c5c6d4634cdeba32b8cf784fc428a2a687f61a952c49"
dependencies = [
"autocfg",
"cfg-if 1.0.0",
"lazy_static",
- "loom",
]
[[package]]
@@ -530,7 +530,16 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b11f15d1e3268f140f68d390637d5e76d849782d971ae7063e0da69fe9709a76"
dependencies = [
- "libloading",
+ "libloading 0.6.7",
+]
+
+[[package]]
+name = "dlib"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794"
+dependencies = [
+ "libloading 0.7.0",
]
[[package]]
@@ -541,9 +550,9 @@ checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
[[package]]
name = "dtoa"
-version = "0.4.7"
+version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88d7ed2934d741c6b37e33e3832298e8850b53fd2d2bea03873375596c7cea4e"
+checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0"
[[package]]
name = "dwrote"
@@ -588,7 +597,7 @@ checksum = "1d34cfa13a63ae058bfa601fe9e313bbdb3746427c1459185464ce0fcf62e1e8"
dependencies = [
"cfg-if 1.0.0",
"libc",
- "redox_syscall 0.2.5",
+ "redox_syscall 0.2.6",
"winapi 0.3.9",
]
@@ -698,19 +707,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
[[package]]
-name = "generator"
-version = "0.6.24"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9fed24fd1e18827652b4d55652899a1e9da8e54d91624dc3437a5bc3a9f9a9c"
-dependencies = [
- "cc",
- "libc",
- "log",
- "rustversion",
- "winapi 0.3.9",
-]
-
-[[package]]
name = "getrandom"
version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -748,7 +744,7 @@ dependencies = [
"glutin_glx_sys",
"glutin_wgl_sys",
"lazy_static",
- "libloading",
+ "libloading 0.6.7",
"log",
"objc",
"osmesa-sys",
@@ -905,9 +901,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
[[package]]
name = "libc"
-version = "0.2.86"
+version = "0.2.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c"
+checksum = "9385f66bf6105b241aa65a61cb923ef20efc665cb9f9bb50ac2f0c4b7f378d41"
[[package]]
name = "libloading"
@@ -920,6 +916,16 @@ dependencies = [
]
[[package]]
+name = "libloading"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f84d96438c15fcd6c3f244c8fce01d1e2b9c6b5623e9c711dc9286d8fc92d6a"
+dependencies = [
+ "cfg-if 1.0.0",
+ "winapi 0.3.9",
+]
+
+[[package]]
name = "linked-hash-map"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -927,9 +933,9 @@ checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
[[package]]
name = "lock_api"
-version = "0.4.2"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312"
+checksum = "5a3c91c24eae6777794bb1997ad98bbb87daf92890acab859f7eaa4320333176"
dependencies = [
"scopeguard",
]
@@ -945,17 +951,6 @@ dependencies = [
]
[[package]]
-name = "loom"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d44c73b4636e497b4917eb21c33539efa3816741a2d3ff26c6316f1b529481a4"
-dependencies = [
- "cfg-if 1.0.0",
- "generator",
- "scoped-tls",
-]
-
-[[package]]
name = "malloc_buf"
version = "0.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1029,7 +1024,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8c274c3c52dcd1d78c5d7ed841eca1e9ea2db8353f3b8ec25789cc62c471aaf"
dependencies = [
"mio",
- "miow 0.3.6",
+ "miow 0.3.7",
"spsc-buffer",
"winapi 0.3.9",
]
@@ -1060,11 +1055,10 @@ dependencies = [
[[package]]
name = "miow"
-version = "0.3.6"
+version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a33c1b55807fbed163481b5ba66db4b2fa6cde694a5027be10fb724206c5897"
+checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
dependencies = [
- "socket2",
"winapi 0.3.9",
]
@@ -1138,9 +1132,9 @@ dependencies = [
[[package]]
name = "nix"
-version = "0.19.1"
+version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2ccba0cfe4fdf15982d1674c69b1fd80bad427d293849982668dfe454bd61f2"
+checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a"
dependencies = [
"bitflags",
"cc",
@@ -1160,9 +1154,9 @@ dependencies = [
[[package]]
name = "notify"
-version = "4.0.15"
+version = "4.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80ae4a7688d1fab81c5bf19c64fc8db920be8d519ce6336ed4e7efe024724dbd"
+checksum = "2599080e87c9bd051ddb11b10074f4da7b1223298df65d4c2ec5bcf309af1533"
dependencies = [
"bitflags",
"filetime",
@@ -1229,9 +1223,9 @@ dependencies = [
[[package]]
name = "once_cell"
-version = "1.5.2"
+version = "1.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0"
+checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3"
[[package]]
name = "osmesa-sys"
@@ -1271,7 +1265,7 @@ dependencies = [
"cfg-if 1.0.0",
"instant",
"libc",
- "redox_syscall 0.2.5",
+ "redox_syscall 0.2.6",
"smallvec",
"winapi 0.3.9",
]
@@ -1310,9 +1304,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.24"
+version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71"
+checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec"
dependencies = [
"unicode-xid",
]
@@ -1343,9 +1337,9 @@ checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
[[package]]
name = "redox_syscall"
-version = "0.2.5"
+version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9"
+checksum = "8270314b5ccceb518e7e578952f0b72b88222d02e8f77f5ecf7abbb673539041"
dependencies = [
"bitflags",
]
@@ -1373,9 +1367,9 @@ dependencies = [
[[package]]
name = "regex-syntax"
-version = "0.6.22"
+version = "0.6.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581"
+checksum = "24d5f089152e60f62d28b835fbff2cd2e8dc0baf1ac13343bef92ab7eed84548"
[[package]]
name = "rust-argon2"
@@ -1400,12 +1394,6 @@ dependencies = [
]
[[package]]
-name = "rustversion"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd"
-
-[[package]]
name = "ryu"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1434,18 +1422,18 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "serde"
-version = "1.0.123"
+version = "1.0.125"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae"
+checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.123"
+version = "1.0.125"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9391c295d64fc0abb2c556bad848f33cb8296276b1ad2677d1ae1ace4f258f31"
+checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d"
dependencies = [
"proc-macro2",
"quote",
@@ -1454,9 +1442,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.62"
+version = "1.0.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea1c6153794552ea7cf7cf63b1231a25de00ec90db326ba6264440fa08e31486"
+checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79"
dependencies = [
"itoa",
"ryu",
@@ -1540,14 +1528,14 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
[[package]]
name = "smithay-client-toolkit"
-version = "0.12.2"
+version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "316e13a3eb853ce7bf72ad3530dc186cb2005c57c521ef5f4ada5ee4eed74de6"
+checksum = "4750c76fd5d3ac95fa3ed80fe667d6a3d8590a960e5b575b98eea93339a80b80"
dependencies = [
"andrew",
"bitflags",
"calloop",
- "dlib",
+ "dlib 0.4.2",
"lazy_static",
"log",
"memmap2",
@@ -1568,17 +1556,6 @@ dependencies = [
]
[[package]]
-name = "socket2"
-version = "0.3.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e"
-dependencies = [
- "cfg-if 1.0.0",
- "libc",
- "winapi 0.3.9",
-]
-
-[[package]]
name = "spsc-buffer"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1598,9 +1575,9 @@ checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c"
[[package]]
name = "syn"
-version = "1.0.60"
+version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081"
+checksum = "48fe99c6bd8b1cc636890bcc071842de909d902c81ac7dab53ba33c421ab8ffb"
dependencies = [
"proc-macro2",
"quote",
@@ -1675,12 +1652,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
[[package]]
-name = "urlocator"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14e39a4f106dafb0a748b951494667a44e62b55fd7942b4fc12706d63cc535a0"
-
-[[package]]
name = "utf8parse"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1694,9 +1665,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
[[package]]
name = "version_check"
-version = "0.9.2"
+version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
+checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
[[package]]
name = "vswhom"
@@ -1720,9 +1691,9 @@ dependencies = [
[[package]]
name = "vte"
-version = "0.10.0"
+version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2df25fed2855d2fbcbdf1016c69a6ac070fa1aabc8b5d7aedaab8703dce0d2d6"
+checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983"
dependencies = [
"utf8parse",
"vte_generate_state_changes",
@@ -1740,9 +1711,9 @@ dependencies = [
[[package]]
name = "walkdir"
-version = "2.3.1"
+version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d"
+checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
dependencies = [
"same-file",
"winapi 0.3.9",
@@ -1763,14 +1734,14 @@ checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
[[package]]
name = "wayland-client"
-version = "0.28.3"
+version = "0.28.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bdbdbe01d03b2267809f3ed99495b37395387fde789e0f2ebb78e8b43f75b6d7"
+checksum = "06ca44d86554b85cf449f1557edc6cc7da935cc748c8e4bf1c507cbd43bae02c"
dependencies = [
"bitflags",
"downcast-rs",
"libc",
- "nix 0.18.0",
+ "nix 0.20.0",
"scoped-tls",
"wayland-commons",
"wayland-scanner",
@@ -1779,11 +1750,11 @@ dependencies = [
[[package]]
name = "wayland-commons"
-version = "0.28.3"
+version = "0.28.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "480450f76717edd64ad04a4426280d737fc3d10a236b982df7b1aee19f0e2d56"
+checksum = "8bd75ae380325dbcff2707f0cd9869827ea1d2d6d534cff076858d3f0460fd5a"
dependencies = [
- "nix 0.18.0",
+ "nix 0.20.0",
"once_cell",
"smallvec",
"wayland-sys",
@@ -1791,20 +1762,20 @@ dependencies = [
[[package]]
name = "wayland-cursor"
-version = "0.28.3"
+version = "0.28.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6eb122c160223a7660feeaf949d0100281d1279acaaed3720eb3c9894496e5f"
+checksum = "b37e5455ec72f5de555ec39b5c3704036ac07c2ecd50d0bffe02d5fe2d4e65ab"
dependencies = [
- "nix 0.18.0",
+ "nix 0.20.0",
"wayland-client",
"xcursor",
]
[[package]]
name = "wayland-egl"
-version = "0.28.3"
+version = "0.28.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c653507447113c967a1aeee413699acb42d96d6302ec967c6d51930eae8aa7f5"
+checksum = "9461a67930ec16da7a4fd8b50e9ffa23f4417240b43ec84008bd1b2c94421c94"
dependencies = [
"wayland-client",
"wayland-sys",
@@ -1812,9 +1783,9 @@ dependencies = [
[[package]]
name = "wayland-protocols"
-version = "0.28.3"
+version = "0.28.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "319a82b4d3054dd25acc32d9aee0f84fa95b63bc983fffe4703b6b8d47e01a30"
+checksum = "95df3317872bcf9eec096c864b69aa4769a1d5d6291a5b513f8ba0af0efbd52c"
dependencies = [
"bitflags",
"wayland-client",
@@ -1824,9 +1795,9 @@ dependencies = [
[[package]]
name = "wayland-scanner"
-version = "0.28.3"
+version = "0.28.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7010ba5767b3fcd350decc59055390b4ebe6bd1b9279a9feb1f1888987f1133d"
+checksum = "389d680d7bd67512dc9c37f39560224327038deb0f0e8d33f870900441b68720"
dependencies = [
"proc-macro2",
"quote",
@@ -1835,11 +1806,11 @@ dependencies = [
[[package]]
name = "wayland-sys"
-version = "0.28.3"
+version = "0.28.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6793834e0c35d11fd96a97297abe03d37be627e1847da52e17d7e0e3b51cc099"
+checksum = "2907bd297eef464a95ba9349ea771611771aa285b932526c633dc94d5400a8e2"
dependencies = [
- "dlib",
+ "dlib 0.5.0",
"lazy_static",
"pkg-config",
]
diff --git a/alacritty.yml b/alacritty.yml
index 3df946a9..8c3a1ab0 100644
--- a/alacritty.yml
+++ b/alacritty.yml
@@ -445,29 +445,6 @@
# If this is `true`, the cursor is temporarily hidden when typing.
#hide_when_typing: false
- #url:
- # URL launcher
- #
- # This program is executed when clicking on a text which is recognized as a
- # URL. The URL is always added to the command as the last parameter.
- #
- # When set to `launcher: None`, URL launching will be disabled completely.
- #
- # Default:
- # - (macOS) open
- # - (Linux/BSD) xdg-open
- # - (Windows) cmd /c start ""
- #launcher:
- # program: xdg-open
- # args: []
-
- # URL modifiers
- #
- # These are the modifiers that need to be held down for opening URLs when
- # clicking on them. The available modifiers are documented in the key
- # binding section.
- #modifiers: None
-
# Regex hints
#
# Terminal hints can be used to find text in the visible part of the terminal
@@ -478,10 +455,18 @@
# List with all available hints
#
- # Each hint takes a `regex`, `binding` and either a `command` or an `action`.
+ # Each hint must have a `regex` and either an `action` or a `command` field.
+ # The fields `mouse`, `binding` and `post_processing` are optional.
+ #
+ # The fields `command`, `binding.key`, `binding.mods` and `mouse.mods` accept
+ # the same values as they do in the `key_bindings` section.
+ #
+ # The `mouse.enabled` field controls if the hint should be underlined while
+ # the mouse with all `mouse.mods` keys held or the vi mode cursor is above it.
#
- # The fields `command`, `binding.key` and `binding.mods` accept the same
- # values as they do in the `key_bindings` section.
+ # If the `post_processing` field is set to `true`, heuristics will be used to
+ # shorten the match if there are characters likely not to be part of the hint
+ # (e.g. a trailing `.`). This is most useful for URIs.
#
# Values for `action`:
# - Copy
@@ -490,16 +475,19 @@
# Paste the hint's text to the terminal or search.
# - Select
# Select the hint's text.
- #
- # Example
- #
- # enabled:
- # - regex: "alacritty/alacritty#\\d*"
- # command: firefox
- # binding:
- # key: G
- # mods: Control|Shift
- #enabled: []
+ # - MoveViModeCursor
+ # Move the vi mode cursor to the beginning of the hint.
+ #enabled:
+ # - regex: "(mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
+ # [^\u0000-\u001F\u007F-\u009F<>\" {-}\\^⟨⟩`]+"
+ # command: xdg-open
+ # post_processing: true
+ # mouse:
+ # enabled: true
+ # mods: None
+ # binding:
+ # key: U
+ # mods: Control|Shift
# Mouse bindings
#
@@ -821,25 +809,26 @@
#- { key: Return, mods: Alt, action: ToggleFullscreen }
# (macOS only)
- #- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" }
- #- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory }
- #- { key: Key0, mods: Command, action: ResetFontSize }
- #- { key: Equals, mods: Command, action: IncreaseFontSize }
- #- { key: Plus, mods: Command, action: IncreaseFontSize }
- #- { key: NumpadAdd, mods: Command, action: IncreaseFontSize }
- #- { key: Minus, mods: Command, action: DecreaseFontSize }
- #- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize }
- #- { key: V, mods: Command, action: Paste }
- #- { key: C, mods: Command, action: Copy }
- #- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection }
- #- { key: H, mods: Command, action: Hide }
- #- { key: M, mods: Command, action: Minimize }
- #- { key: Q, mods: Command, action: Quit }
- #- { key: W, mods: Command, action: Quit }
- #- { key: N, mods: Command, action: SpawnNewInstance }
- #- { key: F, mods: Command|Control, action: ToggleFullscreen }
- #- { key: F, mods: Command, mode: ~Search, action: SearchForward }
- #- { key: B, mods: Command, mode: ~Search, action: SearchBackward }
+ #- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" }
+ #- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory }
+ #- { key: Key0, mods: Command, action: ResetFontSize }
+ #- { key: Equals, mods: Command, action: IncreaseFontSize }
+ #- { key: Plus, mods: Command, action: IncreaseFontSize }
+ #- { key: NumpadAdd, mods: Command, action: IncreaseFontSize }
+ #- { key: Minus, mods: Command, action: DecreaseFontSize }
+ #- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize }
+ #- { key: V, mods: Command, action: Paste }
+ #- { key: C, mods: Command, action: Copy }
+ #- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection }
+ #- { key: H, mods: Command, action: Hide }
+ #- { key: H, mods: Command|Alt, action: HideOtherApplications }
+ #- { key: M, mods: Command, action: Minimize }
+ #- { key: Q, mods: Command, action: Quit }
+ #- { key: W, mods: Command, action: Quit }
+ #- { key: N, mods: Command, action: SpawnNewInstance }
+ #- { key: F, mods: Command|Control, action: ToggleFullscreen }
+ #- { key: F, mods: Command, mode: ~Search, action: SearchForward }
+ #- { key: B, mods: Command, mode: ~Search, action: SearchBackward }
#debug:
# Display the time it takes to redraw each frame.
diff --git a/alacritty/Cargo.toml b/alacritty/Cargo.toml
index 5f0c06ae..31e63d87 100644
--- a/alacritty/Cargo.toml
+++ b/alacritty/Cargo.toml
@@ -29,7 +29,6 @@ glutin = { version = "0.26.0", default-features = false, features = ["serde"] }
notify = "4"
parking_lot = "0.11.0"
crossfont = { version = "0.2.0", features = ["force_system_fontconfig"] }
-urlocator = "0.1.3"
copypasta = { version = "0.7.0", default-features = false }
libc = "0.2"
unicode-width = "0.1"
diff --git a/alacritty/src/config/bindings.rs b/alacritty/src/config/bindings.rs
index 732875db..4e7c2fcb 100644
--- a/alacritty/src/config/bindings.rs
+++ b/alacritty/src/config/bindings.rs
@@ -161,6 +161,10 @@ pub enum Action {
/// Hide the Alacritty window.
Hide,
+ /// Hide all windows other than Alacritty on macOS.
+ #[cfg(target_os = "macos")]
+ HideOtherApplications,
+
/// Minimize the Alacritty window.
Minimize,
@@ -685,6 +689,7 @@ pub fn platform_key_bindings() -> Vec<KeyBinding> {
C, ModifiersState::LOGO; Action::Copy;
C, ModifiersState::LOGO, +BindingMode::VI, ~BindingMode::SEARCH; Action::ClearSelection;
H, ModifiersState::LOGO; Action::Hide;
+ H, ModifiersState::LOGO | ModifiersState::ALT; Action::HideOtherApplications;
M, ModifiersState::LOGO; Action::Minimize;
Q, ModifiersState::LOGO; Action::Quit;
W, ModifiersState::LOGO; Action::Quit;
@@ -1157,7 +1162,7 @@ impl<'a> de::Deserialize<'a> for ModsWrapper {
type Value = ModsWrapper;
fn expecting(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.write_str("a subset of Shift|Control|Super|Command|Alt|Option")
+ f.write_str("None or a subset of Shift|Control|Super|Command|Alt|Option")
}
fn visit_str<E>(self, value: &str) -> Result<ModsWrapper, E>
diff --git a/alacritty/src/config/mouse.rs b/alacritty/src/config/mouse.rs
index 2aa7557c..aed1ab04 100644
--- a/alacritty/src/config/mouse.rs
+++ b/alacritty/src/config/mouse.rs
@@ -1,50 +1,12 @@
use std::time::Duration;
-use glutin::event::ModifiersState;
-
use alacritty_config_derive::ConfigDeserialize;
-use alacritty_terminal::config::Program;
-
-use crate::config::bindings::ModsWrapper;
#[derive(ConfigDeserialize, Default, Clone, Debug, PartialEq, Eq)]
pub struct Mouse {
pub double_click: ClickHandler,
pub triple_click: ClickHandler,
pub hide_when_typing: bool,
- pub url: Url,
-}
-
-#[derive(ConfigDeserialize, Clone, Debug, PartialEq, Eq)]
-pub struct Url {
- /// Program for opening links.
- pub launcher: Option<Program>,
-
- /// Modifier used to open links.
- modifiers: ModsWrapper,
-}
-
-impl Url {
- pub fn mods(&self) -> ModifiersState {
- self.modifiers.into_inner()
- }
-}
-
-impl Default for Url {
- fn default() -> Url {
- Url {
- #[cfg(not(any(target_os = "macos", windows)))]
- launcher: Some(Program::Just(String::from("xdg-open"))),
- #[cfg(target_os = "macos")]
- launcher: Some(Program::Just(String::from("open"))),
- #[cfg(windows)]
- launcher: Some(Program::WithArgs {
- program: String::from("cmd"),
- args: vec!["/c".to_string(), "start".to_string(), "".to_string()],
- }),
- modifiers: Default::default(),
- }
- }
}
#[derive(ConfigDeserialize, Clone, Debug, PartialEq, Eq)]
diff --git a/alacritty/src/config/ui_config.rs b/alacritty/src/config/ui_config.rs
index 3cd2ad88..135d12c8 100644
--- a/alacritty/src/config/ui_config.rs
+++ b/alacritty/src/config/ui_config.rs
@@ -21,6 +21,11 @@ use crate::config::font::Font;
use crate::config::mouse::Mouse;
use crate::config::window::WindowConfig;
+/// Regex used for the default URL hint.
+#[rustfmt::skip]
+const URL_REGEX: &str = "(mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
+ [^\u{0000}-\u{001F}\u{007F}-\u{009F}<>\" {-}\\^⟨⟩`]+";
+
#[derive(ConfigDeserialize, Debug, PartialEq)]
pub struct UiConfig {
/// Font configuration.
@@ -90,13 +95,18 @@ impl Default for UiConfig {
impl UiConfig {
/// Generate key bindings for all keyboard hints.
pub fn generate_hint_bindings(&mut self) {
- for hint in self.hints.enabled.drain(..) {
+ for hint in &self.hints.enabled {
+ let binding = match hint.binding {
+ Some(binding) => binding,
+ None => continue,
+ };
+
let binding = KeyBinding {
- trigger: hint.binding.key,
- mods: hint.binding.mods.0,
+ trigger: binding.key,
+ mods: binding.mods.0,
mode: BindingMode::empty(),
notmode: BindingMode::empty(),
- action: Action::Hint(hint),
+ action: Action::Hint(hint.clone()),
};
self.key_bindings.0.push(binding);
@@ -197,13 +207,42 @@ pub struct Delta<T: Default> {
}
/// Regex terminal hints.
-#[derive(ConfigDeserialize, Default, Debug, PartialEq, Eq)]
+#[derive(ConfigDeserialize, Debug, PartialEq, Eq)]
pub struct Hints {
/// Characters for the hint labels.
alphabet: HintsAlphabet,
/// All configured terminal hints.
- enabled: Vec<Hint>,
+ pub enabled: Vec<Hint>,
+}
+
+impl Default for Hints {
+ fn default() -> Self {
+ // Add URL hint by default when no other hint is present.
+ let pattern = LazyRegexVariant::Pattern(String::from(URL_REGEX));
+ let regex = LazyRegex(Rc::new(RefCell::new(pattern)));
+
+ #[cfg(not(any(target_os = "macos", windows)))]
+ let action = HintAction::Command(Program::Just(String::from("xdg-open")));
+ #[cfg(target_os = "macos")]
+ let action = HintAction::Command(Program::Just(String::from("open")));
+ #[cfg(windows)]
+ let action = HintAction::Command(Program::WithArgs {
+ program: String::from("cmd"),
+ args: vec!["/c".to_string(), "start".to_string(), "".to_string()],
+ });
+
+ Self {
+ enabled: vec![Hint {
+ regex,
+ action,
+ post_processing: true,
+ mouse: Some(HintMouse { enabled: true, mods: Default::default() }),
+ binding: Default::default(),
+ }],
+ alphabet: Default::default(),
+ }
+ }
}
impl Hints {
@@ -254,6 +293,8 @@ pub enum HintInternalAction {
Paste,