mirror of
https://github.com/Zedfrigg/ironbar.git
synced 2025-04-19 19:34:24 +02:00
parent
3c7e434e52
commit
660dc81e7d
7 changed files with 207 additions and 181 deletions
|
@ -4,7 +4,7 @@ the default playback device, and control application volume levels individually.
|
|||
|
||||
This requires PulseAudio to function (`pipewire-pulse` is supported).
|
||||
|
||||
TODO: Screenshot
|
||||
[!The volume widget, with its popup open. A single stream is playing audio.](https://f.jstanger.dev/github/ironbar/volume.png)
|
||||
|
||||
## Configuration
|
||||
|
||||
|
|
|
@ -1,30 +1,67 @@
|
|||
{
|
||||
"anchor_to_edges": true,
|
||||
"position": "bottom",
|
||||
"icon_theme": "Paper",
|
||||
"start": [
|
||||
{
|
||||
"type": "workspaces",
|
||||
"all_monitors": false,
|
||||
"name_map": {
|
||||
"1": "",
|
||||
"2": "icon:firefox",
|
||||
"3": "",
|
||||
"Games": "icon:steam",
|
||||
"Code": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "launcher",
|
||||
"favorites": [
|
||||
"firefox",
|
||||
"discord",
|
||||
"steam"
|
||||
],
|
||||
"show_names": false,
|
||||
"show_icons": true
|
||||
},
|
||||
{
|
||||
"type": "label",
|
||||
"label": "random num: {{500:echo FIXME}}"
|
||||
}
|
||||
],
|
||||
"end": [
|
||||
{
|
||||
"type": "music",
|
||||
"player_type": "mpd",
|
||||
"music_dir": "/home/jake/Music",
|
||||
"player_type": "mpd",
|
||||
"truncate": {
|
||||
"max_length": 100,
|
||||
"mode": "end"
|
||||
},
|
||||
"type": "music"
|
||||
"mode": "end",
|
||||
"max_length": 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"host": "chloe:6600",
|
||||
"type": "music",
|
||||
"player_type": "mpd",
|
||||
"truncate": "end",
|
||||
"type": "music"
|
||||
"host": "chloe:6600",
|
||||
"truncate": "end"
|
||||
},
|
||||
{
|
||||
"type": "script",
|
||||
"cmd": "/home/jake/bin/phone-battery",
|
||||
"show_if": {
|
||||
"cmd": "/home/jake/bin/phone-connected",
|
||||
"interval": 500
|
||||
},
|
||||
"type": "script"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sys_info",
|
||||
"interval": {
|
||||
"memory": 30,
|
||||
"cpu": 1,
|
||||
"temps": 5,
|
||||
"disks": 300,
|
||||
"networks": 3
|
||||
},
|
||||
"format": [
|
||||
" {cpu_percent}% | {temp_c:k10temp_Tccd1}°C",
|
||||
" {memory_used} / {memory_total} GB ({memory_percent}%)",
|
||||
|
@ -33,103 +70,77 @@
|
|||
" {net_down:enp39s0} / {net_up:enp39s0} Mbps",
|
||||
" {load_average:1} | {load_average:5} | {load_average:15}",
|
||||
" {uptime}"
|
||||
],
|
||||
"interval": {
|
||||
"cpu": 1,
|
||||
"disks": 300,
|
||||
"memory": 30,
|
||||
"networks": 3,
|
||||
"temps": 5
|
||||
},
|
||||
"type": "sys_info"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "volume",
|
||||
"format": "{icon} {volume}%",
|
||||
"max_volume": 100,
|
||||
"icons": {
|
||||
"volume_high": "",
|
||||
"volume_medium": "",
|
||||
"volume_low": "",
|
||||
"muted": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "clipboard",
|
||||
"max_items": 3,
|
||||
"truncate": {
|
||||
"length": 50,
|
||||
"mode": "end"
|
||||
},
|
||||
"type": "clipboard"
|
||||
"mode": "end",
|
||||
"length": 50
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"class": "power-menu",
|
||||
"bar": [
|
||||
{
|
||||
"label": "",
|
||||
"type": "button",
|
||||
"name": "power-btn",
|
||||
"on_click": "popup:toggle",
|
||||
"type": "button"
|
||||
"label": "",
|
||||
"on_click": "popup:toggle"
|
||||
}
|
||||
],
|
||||
"class": "power-menu",
|
||||
"popup": [
|
||||
{
|
||||
"orientation": "vertical",
|
||||
"type": "box",
|
||||
"orientation": "vertical",
|
||||
"widgets": [
|
||||
{
|
||||
"label": "Power menu",
|
||||
"type": "label",
|
||||
"name": "header",
|
||||
"type": "label"
|
||||
"label": "Power menu"
|
||||
},
|
||||
{
|
||||
"type": "box",
|
||||
"widgets": [
|
||||
{
|
||||
"type": "button",
|
||||
"class": "power-btn",
|
||||
"label": "<span font-size='40pt'></span>",
|
||||
"on_click": "!shutdown now",
|
||||
"type": "button"
|
||||
"on_click": "!shutdown now"
|
||||
},
|
||||
{
|
||||
"type": "button",
|
||||
"class": "power-btn",
|
||||
"label": "<span font-size='40pt'></span>",
|
||||
"on_click": "!reboot",
|
||||
"type": "button"
|
||||
"on_click": "!reboot"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "Uptime: {{30000:uptime -p | cut -d ' ' -f2-}}",
|
||||
"type": "label",
|
||||
"name": "uptime",
|
||||
"type": "label"
|
||||
"label": "Uptime: {{30000:uptime -p | cut -d ' ' -f2-}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"tooltip": "Up: {{30000:uptime -p | cut -d ' ' -f2-}}",
|
||||
"type": "custom"
|
||||
"tooltip": "Up: {{30000:uptime -p | cut -d ' ' -f2-}}"
|
||||
},
|
||||
{
|
||||
"type": "clock"
|
||||
}
|
||||
],
|
||||
"icon_theme": "Paper",
|
||||
"position": "bottom",
|
||||
"start": [
|
||||
{
|
||||
"all_monitors": false,
|
||||
"name_map": {
|
||||
"1": "",
|
||||
"2": "icon:firefox",
|
||||
"3": "",
|
||||
"Code": "",
|
||||
"Games": "icon:steam"
|
||||
},
|
||||
"type": "workspaces"
|
||||
},
|
||||
{
|
||||
"favorites": [
|
||||
"firefox",
|
||||
"discord",
|
||||
"steam"
|
||||
],
|
||||
"show_icons": true,
|
||||
"show_names": false,
|
||||
"type": "launcher"
|
||||
},
|
||||
{
|
||||
"label": "random num: {{500:echo FIXME}}",
|
||||
"type": "label"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -1,31 +1,57 @@
|
|||
anchor_to_edges = true
|
||||
icon_theme = "Paper"
|
||||
position = "bottom"
|
||||
icon_theme = "Paper"
|
||||
|
||||
[[start]]
|
||||
type = "workspaces"
|
||||
all_monitors = false
|
||||
|
||||
[start.name_map]
|
||||
1 = ""
|
||||
2 = "icon:firefox"
|
||||
3 = ""
|
||||
Games = "icon:steam"
|
||||
Code = ""
|
||||
|
||||
[[start]]
|
||||
type = "launcher"
|
||||
favorites = [
|
||||
"firefox",
|
||||
"discord",
|
||||
"steam",
|
||||
]
|
||||
show_names = false
|
||||
show_icons = true
|
||||
|
||||
[[start]]
|
||||
type = "label"
|
||||
label = "random num: {{500:echo FIXME}}"
|
||||
|
||||
[[end]]
|
||||
music_dir = "/home/jake/Music"
|
||||
player_type = "mpd"
|
||||
type = "music"
|
||||
player_type = "mpd"
|
||||
music_dir = "/home/jake/Music"
|
||||
|
||||
[end.truncate]
|
||||
max_length = 100
|
||||
mode = "end"
|
||||
max_length = 100
|
||||
|
||||
[[end]]
|
||||
host = "chloe:6600"
|
||||
player_type = "mpd"
|
||||
truncate = "end"
|
||||
type = "music"
|
||||
player_type = "mpd"
|
||||
host = "chloe:6600"
|
||||
truncate = "end"
|
||||
|
||||
[[end]]
|
||||
cmd = "/home/jake/bin/phone-battery"
|
||||
type = "script"
|
||||
cmd = "/home/jake/bin/phone-battery"
|
||||
|
||||
[end.show_if]
|
||||
cmd = "/home/jake/bin/phone-connected"
|
||||
interval = 500
|
||||
|
||||
[[end]]
|
||||
type = "sys_info"
|
||||
format = [
|
||||
" {cpu_percent}% | {temp_c:k10temp_Tccd1}°C",
|
||||
" {memory_used} / {memory_total} GB ({memory_percent}%)",
|
||||
|
@ -35,88 +61,73 @@ format = [
|
|||
" {load_average:1} | {load_average:5} | {load_average:15}",
|
||||
" {uptime}",
|
||||
]
|
||||
type = "sys_info"
|
||||
|
||||
[end.interval]
|
||||
cpu = 1
|
||||
disks = 300
|
||||
memory = 30
|
||||
networks = 3
|
||||
cpu = 1
|
||||
temps = 5
|
||||
disks = 300
|
||||
networks = 3
|
||||
|
||||
[[end]]
|
||||
type = "volume"
|
||||
format = "{icon} {volume}%"
|
||||
max_volume = 100
|
||||
|
||||
[end.icons]
|
||||
volume_high = ""
|
||||
volume_medium = ""
|
||||
volume_low = ""
|
||||
muted = ""
|
||||
|
||||
[[end]]
|
||||
max_items = 3
|
||||
type = "clipboard"
|
||||
max_items = 3
|
||||
|
||||
[end.truncate]
|
||||
length = 50
|
||||
mode = "end"
|
||||
length = 50
|
||||
|
||||
[[end]]
|
||||
type = "custom"
|
||||
class = "power-menu"
|
||||
tooltip = "Up: {{30000:uptime -p | cut -d ' ' -f2-}}"
|
||||
type = "custom"
|
||||
|
||||
[[end.bar]]
|
||||
label = ""
|
||||
name = "power-btn"
|
||||
on_click = "popup:toggle"
|
||||
type = "button"
|
||||
name = "power-btn"
|
||||
label = ""
|
||||
on_click = "popup:toggle"
|
||||
|
||||
[[end.popup]]
|
||||
orientation = "vertical"
|
||||
type = "box"
|
||||
orientation = "vertical"
|
||||
|
||||
[[end.popup.widgets]]
|
||||
label = "Power menu"
|
||||
name = "header"
|
||||
type = "label"
|
||||
name = "header"
|
||||
label = "Power menu"
|
||||
|
||||
[[end.popup.widgets]]
|
||||
type = "box"
|
||||
|
||||
[[end.popup.widgets.widgets]]
|
||||
type = "button"
|
||||
class = "power-btn"
|
||||
label = "<span font-size='40pt'></span>"
|
||||
on_click = "!shutdown now"
|
||||
type = "button"
|
||||
|
||||
[[end.popup.widgets.widgets]]
|
||||
type = "button"
|
||||
class = "power-btn"
|
||||
label = "<span font-size='40pt'></span>"
|
||||
on_click = "!reboot"
|
||||
type = "button"
|
||||
|
||||
[[end.popup.widgets]]
|
||||
label = "Uptime: {{30000:uptime -p | cut -d ' ' -f2-}}"
|
||||
name = "uptime"
|
||||
type = "label"
|
||||
name = "uptime"
|
||||
label = "Uptime: {{30000:uptime -p | cut -d ' ' -f2-}}"
|
||||
|
||||
[[end]]
|
||||
type = "clock"
|
||||
|
||||
[[start]]
|
||||
all_monitors = false
|
||||
type = "workspaces"
|
||||
|
||||
[start.name_map]
|
||||
1 = ""
|
||||
2 = "icon:firefox"
|
||||
3 = ""
|
||||
Code = ""
|
||||
Games = "icon:steam"
|
||||
|
||||
[[start]]
|
||||
favorites = [
|
||||
"firefox",
|
||||
"discord",
|
||||
"steam",
|
||||
]
|
||||
show_icons = true
|
||||
show_names = false
|
||||
type = "launcher"
|
||||
|
||||
[[start]]
|
||||
label = "random num: {{500:echo FIXME}}"
|
||||
type = "label"
|
||||
|
||||
|
|
|
@ -1,21 +1,48 @@
|
|||
anchor_to_edges: true
|
||||
position: bottom
|
||||
icon_theme: Paper
|
||||
start:
|
||||
- type: workspaces
|
||||
all_monitors: false
|
||||
name_map:
|
||||
'1':
|
||||
'2': icon:firefox
|
||||
'3':
|
||||
Games: icon:steam
|
||||
Code:
|
||||
- type: launcher
|
||||
favorites:
|
||||
- firefox
|
||||
- discord
|
||||
- steam
|
||||
show_names: false
|
||||
show_icons: true
|
||||
- type: label
|
||||
label: 'random num: {{500:echo FIXME}}'
|
||||
end:
|
||||
- music_dir: /home/jake/Music
|
||||
- type: music
|
||||
player_type: mpd
|
||||
music_dir: /home/jake/Music
|
||||
truncate:
|
||||
max_length: 100
|
||||
mode: end
|
||||
type: music
|
||||
- host: chloe:6600
|
||||
max_length: 100
|
||||
- type: music
|
||||
player_type: mpd
|
||||
host: chloe:6600
|
||||
truncate: end
|
||||
type: music
|
||||
- cmd: /home/jake/bin/phone-battery
|
||||
- type: script
|
||||
cmd: /home/jake/bin/phone-battery
|
||||
show_if:
|
||||
cmd: /home/jake/bin/phone-connected
|
||||
interval: 500
|
||||
type: script
|
||||
- format:
|
||||
- type: sys_info
|
||||
interval:
|
||||
memory: 30
|
||||
cpu: 1
|
||||
temps: 5
|
||||
disks: 300
|
||||
networks: 3
|
||||
format:
|
||||
- {cpu_percent}% | {temp_c:k10temp_Tccd1}°C
|
||||
- {memory_used} / {memory_total} GB ({memory_percent}%)
|
||||
- '| {swap_used} / {swap_total} GB ({swap_percent}%)'
|
||||
|
@ -23,65 +50,46 @@ end:
|
|||
- {net_down:enp39s0} / {net_up:enp39s0} Mbps
|
||||
- {load_average:1} | {load_average:5} | {load_average:15}
|
||||
- {uptime}
|
||||
interval:
|
||||
cpu: 1
|
||||
disks: 300
|
||||
memory: 30
|
||||
networks: 3
|
||||
temps: 5
|
||||
type: sys_info
|
||||
- max_items: 3
|
||||
- type: volume
|
||||
format: '{icon} {volume}%'
|
||||
max_volume: 100
|
||||
icons:
|
||||
volume_high:
|
||||
volume_medium:
|
||||
volume_low:
|
||||
muted:
|
||||
- type: clipboard
|
||||
max_items: 3
|
||||
truncate:
|
||||
length: 50
|
||||
mode: end
|
||||
type: clipboard
|
||||
- bar:
|
||||
- label:
|
||||
name: power-btn
|
||||
on_click: popup:toggle
|
||||
type: button
|
||||
length: 50
|
||||
- type: custom
|
||||
class: power-menu
|
||||
bar:
|
||||
- type: button
|
||||
name: power-btn
|
||||
label:
|
||||
on_click: popup:toggle
|
||||
popup:
|
||||
- orientation: vertical
|
||||
type: box
|
||||
- type: box
|
||||
orientation: vertical
|
||||
widgets:
|
||||
- label: Power menu
|
||||
- type: label
|
||||
name: header
|
||||
type: label
|
||||
label: Power menu
|
||||
- type: box
|
||||
widgets:
|
||||
- class: power-btn
|
||||
- type: button
|
||||
class: power-btn
|
||||
label: <span font-size='40pt'></span>
|
||||
on_click: '!shutdown now'
|
||||
type: button
|
||||
- class: power-btn
|
||||
- type: button
|
||||
class: power-btn
|
||||
label: <span font-size='40pt'></span>
|
||||
on_click: '!reboot'
|
||||
type: button
|
||||
- label: 'Uptime: {{30000:uptime -p | cut -d '' '' -f2-}}'
|
||||
- type: label
|
||||
name: uptime
|
||||
type: label
|
||||
label: 'Uptime: {{30000:uptime -p | cut -d '' '' -f2-}}'
|
||||
tooltip: 'Up: {{30000:uptime -p | cut -d '' '' -f2-}}'
|
||||
type: custom
|
||||
- type: clock
|
||||
icon_theme: Paper
|
||||
position: bottom
|
||||
start:
|
||||
- all_monitors: false
|
||||
name_map:
|
||||
'1':
|
||||
'2': icon:firefox
|
||||
'3':
|
||||
Code:
|
||||
Games: icon:steam
|
||||
type: workspaces
|
||||
- favorites:
|
||||
- firefox
|
||||
- discord
|
||||
- steam
|
||||
show_icons: true
|
||||
show_names: false
|
||||
type: launcher
|
||||
- label: 'random num: {{500:echo FIXME}}'
|
||||
type: label
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
mod sink;
|
||||
mod sink_input;
|
||||
|
||||
use crate::{arc_mut, lock, register_client, send, spawn_blocking};
|
||||
use crate::{arc_mut, lock, register_client, send, spawn_blocking, APP_ID};
|
||||
use libpulse_binding::callbacks::ListResult;
|
||||
use libpulse_binding::context::introspect::{Introspector, ServerInfo};
|
||||
use libpulse_binding::context::subscribe::{Facility, InterestMaskSet, Operation};
|
||||
|
@ -88,10 +88,7 @@ impl Client {
|
|||
return;
|
||||
};
|
||||
|
||||
if proplist
|
||||
.set_str("APPLICATION_NAME", "dev.jstanger.ironbar")
|
||||
.is_err()
|
||||
{
|
||||
if proplist.set_str("APPLICATION_NAME", APP_ID).is_err() {
|
||||
error!("Failed to update PA proplist");
|
||||
}
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ mod popup;
|
|||
mod script;
|
||||
mod style;
|
||||
|
||||
const GTK_APP_ID: &str = "dev.jstanger.ironbar";
|
||||
pub const APP_ID: &str = "dev.jstanger.ironbar";
|
||||
const VERSION: &str = env!("CARGO_PKG_VERSION");
|
||||
|
||||
fn main() {
|
||||
|
@ -111,7 +111,7 @@ impl Ironbar {
|
|||
info!("Ironbar version {}", VERSION);
|
||||
info!("Starting application");
|
||||
|
||||
let app = Application::builder().application_id(GTK_APP_ID).build();
|
||||
let app = Application::builder().application_id(APP_ID).build();
|
||||
|
||||
let running = AtomicBool::new(false);
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
use crate::clients::volume;
|
||||
use crate::clients::volume::Event;
|
||||
use crate::clients::volume::{self, Event};
|
||||
use crate::config::CommonConfig;
|
||||
use crate::gtk_helpers::IronbarGtkExt;
|
||||
use crate::modules::{
|
||||
|
|
Loading…
Add table
Reference in a new issue