summaryrefslogtreecommitdiff
path: root/i3status-rust
diff options
context:
space:
mode:
authorTim Biermann <tbier@posteo.de>2019-10-06 12:01:51 +0200
committerTim Biermann <tbier@posteo.de>2019-10-06 12:03:17 +0200
commitcad4428a51e6b8c2c7fd38c9c69d6b76bce71e87 (patch)
tree152c87ace83da6b68ce376fd92e626c1ebaf949d /i3status-rust
parent7b561358bde5f563084c39f702d5055de9ca3ede (diff)
downloadcontrib-cad4428a51e6b8c2c7fd38c9c69d6b76bce71e87.tar.gz
contrib-cad4428a51e6b8c2c7fd38c9c69d6b76bce71e87.tar.xz
i3status-rust: 0.10.0 -> 0.11.0
Diffstat (limited to 'i3status-rust')
-rw-r--r--i3status-rust/.signature8
-rw-r--r--i3status-rust/407.patch128
-rw-r--r--i3status-rust/418.patch167
-rw-r--r--i3status-rust/Pkgfile9
4 files changed, 6 insertions, 306 deletions
diff --git a/i3status-rust/.signature b/i3status-rust/.signature
index 46ce9b0c4..2e2a6ef3e 100644
--- a/i3status-rust/.signature
+++ b/i3status-rust/.signature
@@ -1,7 +1,5 @@
untrusted comment: verify with /etc/ports/contrib.pub
-RWSagIOpLGJF3yqTejWHKPkax2fPOzrUSK4wC+yYZppgf4KyLwUj8S7h/edup+AyEn6+Ts51gNdBss2qvOJFqTvObxbrprGmuQU=
-SHA256 (Pkgfile) = a9b7d86dbca6419b8c20d81930cbb05e74e1989e58a98dbf8e733c0b4aae2640
+RWSagIOpLGJF32pHwLZIt8pkFb16/wAAT1uU+zaEoz3105b+jGZGAYFCr+RhVq5QTTHcQFP28w6eZCT8fbzIZ2GPtSgzgUl1+A0=
+SHA256 (Pkgfile) = b0054c9a69b77935d868d678a7f6888c79197f63c625b89fed81ca0eda7721e6
SHA256 (.footprint) = 46e38c743630719fc5db8383d793d119a83726afb7568114366b2b9c2d3ed80b
-SHA256 (i3status-rust-0.10.0.tar.gz) = 84a12a91419fda35109a0be3980671c1d58e13c5987e6dc999cbe786d05053d9
-SHA256 (407.patch) = 06bce41061201b3ec2c9467d9f84478d18ed222d9e40f04d015697c0ab1d398e
-SHA256 (418.patch) = 95373194871b6179a8eddf0fb84583ef3e5f22f9cc4efd84a32a8d3b30e2f8a6
+SHA256 (i3status-rust-0.11.0.tar.gz) = 2f749ba4646e2fc0af62d31c990ae8d59d454eb0e5fe947b39d64cfeabbb0a1c
diff --git a/i3status-rust/407.patch b/i3status-rust/407.patch
deleted file mode 100644
index ac4ca6b7a..000000000
--- a/i3status-rust/407.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-From 41fd7bf7a7a548aa3e1da05a3ac8ce2f873249c0 Mon Sep 17 00:00:00 2001
-From: Bram Vandenbogaerde <contact@bramvdb.com>
-Date: Sat, 20 Jul 2019 19:05:58 +0200
-Subject: [PATCH] Made wind speed and degree optional by providing a default
- value + cleaned up the JSON AST traversal code
-
----
- src/blocks/weather.rs | 97 +++++++++++++++++--------------------------
- 1 file changed, 39 insertions(+), 58 deletions(-)
-
-diff --git a/src/blocks/weather.rs b/src/blocks/weather.rs
-index 2c75067..8236b17 100644
---- a/src/blocks/weather.rs
-+++ b/src/blocks/weather.rs
-@@ -48,6 +48,13 @@ pub struct Weather {
- update_interval: Duration,
- }
-
-+fn malformed_json_error() -> Error {
-+ BlockError(
-+ "weather".to_string(),
-+ "Malformed JSON.".to_string(),
-+ )
-+}
-+
- impl Weather {
- fn update_weather(&mut self) -> Result<()> {
- match self.service {
-@@ -97,67 +104,41 @@ impl Weather {
- format!("API Error: {}", val.as_str().unwrap()),
- ));
- };
-- let raw_weather = match json.pointer("/weather/0/main")
-+ let raw_weather = json.pointer("/weather/0/main")
- .and_then(|v| v.as_str())
-- .map(|s| s.to_string()) {
-- Some(v) => v,
-- None => {
-- return Err(BlockError(
-- "weather".to_string(),
-- "Malformed JSON.".to_string(),
-- ));
-- }
-- };
-- let raw_temp = match json.pointer("/main/temp").and_then(|v| v.as_f64()) {
-- Some(v) => v,
-- None => {
-- return Err(BlockError(
-- "weather".to_string(),
-- "Malformed JSON.".to_string(),
-- ));
-- }
-- };
-- let raw_wind_speed = match json.pointer("/wind/speed").and_then(|v| v.as_f64()) {
-- Some(v) => v,
-- None => {
-- return Err(BlockError(
-- "weather".to_string(),
-- "Malformed JSON.".to_string(),
-- ));
-- }
-- };
-- let raw_wind_direction = match json.pointer("/wind/deg").and_then(|v| v.as_f64()) {
-- Some(v) => v,
-- None => {
-- return Err(BlockError(
-- "weather".to_string(),
-- "Malformed JSON.".to_string(),
-- ));
-- }
-- };
-- let raw_location = match json.pointer("/name").and_then(|v| v.as_str()).map(|s| {
-- s.to_string()
-- }) {
-- Some(v) => v,
-- None => {
-- return Err(BlockError(
-- "weather".to_string(),
-- "Malformed JSON.".to_string(),
-- ));
-- }
-- };
-+ .map(|s| s.to_string())
-+ .ok_or_else(malformed_json_error)?;
-+
-+ let raw_temp = json.pointer("/main/temp").and_then(|v| v.as_f64()).ok_or_else(malformed_json_error)?;
-+
-+ let raw_wind_speed: f64= json.pointer("/wind/speed")
-+ .map_or(Some(0.0), |v| v.as_f64()) // provide default value 0.0
-+ .ok_or_else(malformed_json_error)?; // error when conversion to f64 fails
-+
-+ let raw_wind_direction: Option<f64>= json.pointer("/wind/deg")
-+ .map_or(Some(None), |v| v.as_f64().and_then(|v| Some(Some(v)))) // provide default value None
-+ .ok_or_else(malformed_json_error)?; // error when conversion to f64 fails
-+
-+
-+ let raw_location = json.pointer("/name")
-+ .and_then(|v| v.as_str())
-+ .map(|s| s.to_string())
-+ .ok_or_else(malformed_json_error)?;
-
- // Convert wind direction in azimuth degrees to abbreviation names
-- fn convert_wind_direction(direction: f64) -> String {
-- match direction.round() as i64 {
-- 24 ... 68 => "NE".to_string(),
-- 69 ... 113 => "E".to_string(),
-- 114 ... 158 => "SE".to_string(),
-- 159 ... 203 => "S".to_string(),
-- 204 ... 248 => "SW".to_string(),
-- 249 ... 293 => "W".to_string(),
-- 294 ... 338 => "NW".to_string(),
-- _ => "N".to_string()
-+ fn convert_wind_direction(direction_opt: Option<f64>) -> String {
-+ match direction_opt {
-+ Some(direction) => match direction.round() as i64 {
-+ 24 ... 68 => "NE".to_string(),
-+ 69 ... 113 => "E".to_string(),
-+ 114 ... 158 => "SE".to_string(),
-+ 159 ... 203 => "S".to_string(),
-+ 204 ... 248 => "SW".to_string(),
-+ 249 ... 293 => "W".to_string(),
-+ 294 ... 338 => "NW".to_string(),
-+ _ => "N".to_string()
-+ },
-+ None => "-".to_string()
- }
- }
-
diff --git a/i3status-rust/418.patch b/i3status-rust/418.patch
deleted file mode 100644
index 504933524..000000000
--- a/i3status-rust/418.patch
+++ /dev/null
@@ -1,167 +0,0 @@
-From b545460c66b8de1e94ae3ebd8614fe1d3b18b22c Mon Sep 17 00:00:00 2001
-From: Benjamin Bouvier <public@benj.me>
-Date: Thu, 8 Aug 2019 10:05:25 +0200
-Subject: [PATCH] Fixes #387: Display WiFi signal strength in the net block.
-
----
- blocks.md | 2 ++
- src/blocks/net.rs | 80 ++++++++++++++++++++++++++++++++++++++++++++++-
- 2 files changed, 81 insertions(+), 1 deletion(-)
-
-diff --git a/blocks.md b/blocks.md
-index 94e6cde..5584e66 100644
---- a/blocks.md
-+++ b/blocks.md
-@@ -485,6 +485,7 @@ Creates a block which displays the upload and download throughput for a network
- block = "net"
- device = "wlp2s0"
- ssid = true
-+signal_strength = true
- ip = true
- speed_up = false
- graph_up = true
-@@ -497,6 +498,7 @@ Key | Values | Required | Default
- ----|--------|----------|--------
- `device` | Network interface to moniter (name from /sys/class/net) | Yes | `lo` (loopback interface)
- `ssid` | Display network SSID (wireless only). | No | `false`
-+`signal_strength` | Display WiFi signal strength (wireless only). | No | `false`
- `bitrate` | Display connection bitrate. | No | `false`
- `ip` | Display connection IP address. | No | `false`
- `speed_up` | Display upload speed. | No | `true`
-diff --git a/src/blocks/net.rs b/src/blocks/net.rs
-index 87b1332..328e587 100644
---- a/src/blocks/net.rs
-+++ b/src/blocks/net.rs
-@@ -130,6 +130,62 @@ impl NetworkDevice {
- }
- }
-
-+ fn absolute_signal_strength(&self) -> Result<Option<i32>> {
-+ let up = self.is_up()?;
-+ if !self.wireless || !up {
-+ return Err(BlockError(
-+ "net".to_string(),
-+ "Signal strength is only available for connected wireless devices."
-+ .to_string(),
-+ ));
-+ }
-+ let mut iw_output = Command::new("sh")
-+ .args(&[
-+ "-c",
-+ &format!(
-+ "iw dev {} link | sed -n 's/^\\s\\+signal: \\(.*\\) dBm/\\1/p'",
-+ self.device
-+ ),
-+ ])
-+ .output()
-+ .block_error("net", "Failed to execute signal strength query.")?
-+ .stdout;
-+ if iw_output.is_empty() {
-+ Ok(None)
-+ } else {
-+ iw_output.pop(); // Remove trailing newline.
-+ String::from_utf8(iw_output)
-+ .block_error("net", "Non-UTF8 signal strength.")
-+ .and_then(|as_str| as_str.parse::<i32>()
-+ .block_error("net", "Non numerical signal strength."))
-+ .map(Some)
-+ }
-+ }
-+
-+ fn relative_signal_strength(&self) -> Result<Option<u32>> {
-+ let xbm = if let Some(xbm) = self.absolute_signal_strength()? {
-+ xbm as f64
-+ } else {
-+ return Ok(None);
-+ };
-+
-+ // Code inspired by https://github.com/NetworkManager/NetworkManager/blob/master/src/platform/wifi/nm-wifi-utils-nl80211.c
-+ const NOISE_FLOOR_DBM: f64 = -90.;
-+ const SIGNAL_MAX_DBM: f64 = -20.;
-+
-+ let xbm = if xbm < NOISE_FLOOR_DBM {
-+ NOISE_FLOOR_DBM
-+ } else if xbm > SIGNAL_MAX_DBM {
-+ SIGNAL_MAX_DBM
-+ } else {
-+ xbm
-+ };
-+
-+ let result = 100. - 70. * ((SIGNAL_MAX_DBM - xbm) / (SIGNAL_MAX_DBM - NOISE_FLOOR_DBM));
-+ let result = result as u32;
-+ Ok(Some(result))
-+ }
-+
- /// Queries the inet IP of this device (using `ip`).
- pub fn ip_addr(&self) -> Result<Option<String>> {
- if !self.is_up()? {
-@@ -196,6 +252,7 @@ pub struct Net {
- network: ButtonWidget,
- ssid: Option<ButtonWidget>,
- max_ssid_width: usize,
-+ signal_strength: Option<ButtonWidget>,
- ip_addr: Option<ButtonWidget>,
- bitrate: Option<ButtonWidget>,
- output_tx: Option<ButtonWidget>,
-@@ -235,6 +292,10 @@ pub struct NetConfig {
- #[serde(default = "NetConfig::default_max_ssid_width")]
- pub max_ssid_width: usize,
-
-+ /// Whether to show the signal strength of active wireless networks.
-+ #[serde(default = "NetConfig::default_signal_strength")]
-+ pub signal_strength: bool,
-+
- /// Whether to show the bitrate of active wireless networks.
- #[serde(default = "NetConfig::default_bitrate")]
- pub bitrate: bool,
-@@ -296,6 +357,10 @@ impl NetConfig {
- false
- }
-
-+ fn default_signal_strength() -> bool {
-+ false
-+ }
-+
- fn default_bitrate() -> bool {
- false
- }
-@@ -350,6 +415,10 @@ impl ConfigBlock for Net {
- None
- },
- max_ssid_width: block_config.max_ssid_width,
-+ signal_strength: if block_config.signal_strength && wireless {
-+ Some(ButtonWidget::new(config.clone(), &id)) } else {
-+ None
-+ },
- bitrate: if block_config.bitrate {
- Some(ButtonWidget::new(config.clone(), &id)) } else {
- None
-@@ -460,6 +529,12 @@ impl Block for Net {
- ssid_widget.set_text(truncated);
- }
- }
-+ if let Some(ref mut signal_strength_widget) = self.signal_strength {
-+ let value = self.device.relative_signal_strength()?;
-+ if value.is_some() {
-+ signal_strength_widget.set_text(format!("{}%", value.unwrap()));
-+ }
-+ }
- if let Some(ref mut ip_addr_widget) = self.ip_addr {
- let ip_addr = self.device.ip_addr()?;
- if ip_addr.is_some() {
-@@ -510,11 +585,14 @@ impl Block for Net {
-
- fn view(&self) -> Vec<&I3BarWidget> {
- if self.active {
-- let mut widgets: Vec<&I3BarWidget> = Vec::with_capacity(7);
-+ let mut widgets: Vec<&I3BarWidget> = Vec::with_capacity(8);
- widgets.push(&self.network);
- if let Some(ref ssid_widget) = self.ssid {
- widgets.push(ssid_widget);
- };
-+ if let Some(ref signal_strength_widget) = self.signal_strength {
-+ widgets.push(signal_strength_widget);
-+ };
- if let Some(ref bitrate_widget) = self.bitrate {
- widgets.push(bitrate_widget);
- }
diff --git a/i3status-rust/Pkgfile b/i3status-rust/Pkgfile
index ffcc851b7..851120271 100644
--- a/i3status-rust/Pkgfile
+++ b/i3status-rust/Pkgfile
@@ -4,18 +4,15 @@
# Depends on: dbus flac libogg libsndfile libvorbis pulseaudio rust
name=i3status-rust
-version=0.10.0
-release=2
-source=(https://github.com/greshake/i3status-rust/archive/v$version/$name-$version.tar.gz
- 407.patch 418.patch)
+version=0.11.0
+release=1
+source=(https://github.com/greshake/i3status-rust/archive/v$version/$name-$version.tar.gz)
build() {
cd $name-$version
prt-get isinst sccache && export RUSTC_WRAPPER=/usr/bin/sccache
mkdir "$PKGMK_SOURCE_DIR/rust" || true
export CARGO_HOME="$PKGMK_SOURCE_DIR/rust"
- patch -Np1 -i $SRC/407.patch # fix weather block
- patch -Np1 -i $SRC/418.patch # show wifi signal strength
cargo fetch
cargo build --release
install -Dt $PKG/usr/bin target/release/i3status-rs

Generated by cgit