aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md3
-rw-r--r--alacritty.yml2
-rw-r--r--src/config/mod.rs30
3 files changed, 33 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3d2a4e65..731a60e4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,7 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- Smoother scrolling for touchpads (also affects scrolling with some mice that send fractional scrolling values)
+- Improve scrolling accuracy with devices sending fractional updates (like touchpads)
- `scrolling.multiplier` now affects normal scrolling with touchpads
### Fixed
@@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Excessive polling every 100ms with `live_config_reload` enabled
- Unicode characters at the beginning of URLs are now properly ignored
- Remove error message when reloading an empty config
+- Allow disabling URL launching by setting the value of `mouse.url.launcher` to `None`
## Version 0.2.7
diff --git a/alacritty.yml b/alacritty.yml
index 5cf58d25..07120b7a 100644
--- a/alacritty.yml
+++ b/alacritty.yml
@@ -291,6 +291,8 @@ mouse:
# 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 `None`, URL launching will be disabled completely.
+ #
# Default:
# - (macOS) open
# - (Linux) xdg-open
diff --git a/src/config/mod.rs b/src/config/mod.rs
index d9717704..c487ceb7 100644
--- a/src/config/mod.rs
+++ b/src/config/mod.rs
@@ -116,7 +116,7 @@ pub struct Mouse {
#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
pub struct Url {
// Program for opening links
- #[serde(deserialize_with = "failure_default")]
+ #[serde(deserialize_with = "deserialize_launcher")]
pub launcher: Option<CommandWrapper>,
// Modifier used to open links
@@ -124,6 +124,34 @@ pub struct Url {
pub modifiers: ModifiersState,
}
+fn deserialize_launcher<'a, D>(deserializer: D) -> ::std::result::Result<Option<CommandWrapper>, D::Error>
+ where D: de::Deserializer<'a>
+{
+ let default = Url::default().launcher;
+
+ // Deserialize to generic value
+ let val = match serde_yaml::Value::deserialize(deserializer) {
+ Ok(val) => val,
+ Err(err) => {
+ error!("Problem with config: {}; using {}", err, default.clone().unwrap().program());
+ return Ok(default);
+ },
+ };
+
+ // Accept `None` to disable the launcher
+ if val.as_str().filter(|v| v.to_lowercase() == "none").is_some() {
+ return Ok(None);
+ }
+
+ match <Option<CommandWrapper>>::deserialize(val) {
+ Ok(launcher) => Ok(launcher),
+ Err(err) => {
+ error!("Problem with config: {}; using {}", err, default.clone().unwrap().program());
+ Ok(default)
+ },
+ }
+}
+
impl Default for Url {
fn default() -> Url {
Url {