feat(aspen/system): Weather in i3status bar
Change-Id: Ib2572fea5fc81d6b4d321a2e317a02398d0ae612 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11292 Tested-by: BuildkiteCI Reviewed-by: aspen <root@gws.fyi> Autosubmit: aspen <root@gws.fyi>
This commit is contained in:
parent
d706ebda65
commit
35a96b47d5
3 changed files with 123 additions and 108 deletions
12
users/aspen/pkgs/py3status.nix
Normal file
12
users/aspen/pkgs/py3status.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
pkgs.python3Packages.py3status.overridePythonAttrs (old: rec {
|
||||||
|
name = "${pname}-${old.version}";
|
||||||
|
pname = "py3status-glittershark";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "glittershark";
|
||||||
|
repo = "py3status";
|
||||||
|
rev = "f243be1458cdabd5a7524adb76b5db99006c810c";
|
||||||
|
sha256 = "0ffmv91562yk0wigriw4d5nfg2b32wqx8x78qvdqkawzvgbwrwvl";
|
||||||
|
};
|
||||||
|
})
|
|
@ -1,5 +1,7 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (config.lib) depot;
|
||||||
|
|
||||||
mod = "Mod4";
|
mod = "Mod4";
|
||||||
solarized = import ../common/solarized.nix;
|
solarized = import ../common/solarized.nix;
|
||||||
# TODO pull this out into lib
|
# TODO pull this out into lib
|
||||||
|
@ -7,16 +9,112 @@ let
|
||||||
msg=$(emacsclient --eval '${eval}' 2>&1)
|
msg=$(emacsclient --eval '${eval}' 2>&1)
|
||||||
echo "''${msg:1:-1}"
|
echo "''${msg:1:-1}"
|
||||||
'';
|
'';
|
||||||
screenlayout = {
|
|
||||||
home = pkgs.writeShellScript "screenlayout_home.sh" ''
|
i3status-conf = pkgs.writeText "i3status.conf" ''
|
||||||
xrandr \
|
general {
|
||||||
--output eDP-1 --mode 1920x1200 --pos 0x960 --rotate normal \
|
output_format = i3bar
|
||||||
--output DP-3 --primary --mode 3840x2160 --pos 1920x0 --rotate normal \
|
colors = true
|
||||||
--output DP-1 --off \
|
color_good = "#859900"
|
||||||
--output DP-2 --off \
|
|
||||||
--output DP-4 --off
|
interval = 1
|
||||||
'';
|
}
|
||||||
};
|
|
||||||
|
order += "external_script current_task"
|
||||||
|
order += "external_script inbox"
|
||||||
|
order += "spotify"
|
||||||
|
order += "weather_owm"
|
||||||
|
order += "volume_status"
|
||||||
|
order += "wireless ${config.system.machine.wirelessInterface}"
|
||||||
|
# order += "ethernet enp3s0f0"
|
||||||
|
order += "cpu_usage"
|
||||||
|
${lib.optionalString (!isNull config.system.machine.battery) ''
|
||||||
|
order += "battery ${toString config.system.machine.battery}"
|
||||||
|
''}
|
||||||
|
# order += "volume master"
|
||||||
|
order += "time"
|
||||||
|
order += "tztime utc"
|
||||||
|
|
||||||
|
mpd {
|
||||||
|
format = "%artist - %album - %title"
|
||||||
|
}
|
||||||
|
|
||||||
|
wireless ${config.system.machine.wirelessInterface} {
|
||||||
|
format_up = "W: (%quality - %essid - %bitrate) %ip"
|
||||||
|
format_down = "W: -"
|
||||||
|
}
|
||||||
|
|
||||||
|
ethernet enp3s0f0 {
|
||||||
|
format_up = "E: %ip"
|
||||||
|
format_down = "E: -"
|
||||||
|
}
|
||||||
|
|
||||||
|
battery ${toString config.system.machine.battery} {
|
||||||
|
format = "%status %percentage (%remaining)"
|
||||||
|
path = "/sys/class/power_supply/BAT%d/uevent"
|
||||||
|
low_threshold = 10
|
||||||
|
}
|
||||||
|
|
||||||
|
cpu_usage {
|
||||||
|
format = "CPU: %usage"
|
||||||
|
}
|
||||||
|
|
||||||
|
load {
|
||||||
|
format = "%5min"
|
||||||
|
}
|
||||||
|
|
||||||
|
time {
|
||||||
|
format = " %a %h %d ⌚ %I:%M "
|
||||||
|
}
|
||||||
|
|
||||||
|
spotify {
|
||||||
|
color_playing = "#fdf6e3"
|
||||||
|
color_paused = "#93a1a1"
|
||||||
|
format_stopped = ""
|
||||||
|
format_down = ""
|
||||||
|
format = "{title} - {artist} ({album})"
|
||||||
|
}
|
||||||
|
|
||||||
|
external_script inbox {
|
||||||
|
script_path = '${emacsclient "(aspen/num-inbox-items-message)"}'
|
||||||
|
format = 'Inbox: {output}'
|
||||||
|
cache_timeout = 120
|
||||||
|
color = "#93a1a1"
|
||||||
|
}
|
||||||
|
|
||||||
|
external_script current_task {
|
||||||
|
script_path = '${
|
||||||
|
emacsclient "(aspen/org-current-clocked-in-task-message)"
|
||||||
|
}'
|
||||||
|
# format = '{output}'
|
||||||
|
cache_timeout = 60
|
||||||
|
color = "#93a1a1"
|
||||||
|
}
|
||||||
|
|
||||||
|
tztime utc {
|
||||||
|
timezone = "UTC"
|
||||||
|
format = " %H·%M "
|
||||||
|
}
|
||||||
|
|
||||||
|
volume_status {
|
||||||
|
format = "☊ {percentage}"
|
||||||
|
format_muted = "☊ X"
|
||||||
|
# device = "default"
|
||||||
|
# mixer_idx = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
weather_owm {
|
||||||
|
api_key = '@owmApiKey@'
|
||||||
|
unit_temperature = 'c'
|
||||||
|
format = '{icon} {temperature}[ {rain}]'
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
i3status-command = pkgs.writeShellScript "i3status.sh" ''
|
||||||
|
sed -s "s/@owmApiKey@/$(pass owm-api-key)/" \
|
||||||
|
< ${i3status-conf} \
|
||||||
|
> /tmp/i3status.conf
|
||||||
|
py3status -c /tmp/i3status.conf
|
||||||
|
'';
|
||||||
|
|
||||||
inherit (builtins) map;
|
inherit (builtins) map;
|
||||||
inherit (lib) mkMerge range;
|
inherit (lib) mkMerge range;
|
||||||
|
@ -60,7 +158,7 @@ in
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
rofi
|
rofi
|
||||||
rofi-pass
|
rofi-pass
|
||||||
python3Packages.py3status
|
depot.users.aspen.pkgs.py3status
|
||||||
i3lock
|
i3lock
|
||||||
i3status
|
i3status
|
||||||
dconf # for gtk
|
dconf # for gtk
|
||||||
|
@ -179,10 +277,6 @@ in
|
||||||
|
|
||||||
# Screen Layout
|
# Screen Layout
|
||||||
"${mod}+Shift+t" = "exec xrandr --auto";
|
"${mod}+Shift+t" = "exec xrandr --auto";
|
||||||
"${mod}+t" = "exec ${screenlayout.home}";
|
|
||||||
"${mod}+Ctrl+t" = "exec ${pkgs.writeShellScript "fix_term.sh" ''
|
|
||||||
xrandr --output eDP-1 --off && ${screenlayout.home}
|
|
||||||
''}";
|
|
||||||
|
|
||||||
# Notifications
|
# Notifications
|
||||||
"${mod}+Shift+n" = "exec killall -SIGUSR1 .dunst-wrapped";
|
"${mod}+Shift+n" = "exec killall -SIGUSR1 .dunst-wrapped";
|
||||||
|
@ -224,99 +318,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
bars = [{
|
bars = [{
|
||||||
statusCommand =
|
statusCommand = "${i3status-command}";
|
||||||
let
|
|
||||||
i3status-conf = pkgs.writeText "i3status.conf" ''
|
|
||||||
general {
|
|
||||||
output_format = i3bar
|
|
||||||
colors = true
|
|
||||||
color_good = "#859900"
|
|
||||||
|
|
||||||
interval = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
order += "external_script current_task"
|
|
||||||
order += "external_script inbox"
|
|
||||||
order += "spotify"
|
|
||||||
order += "volume_status"
|
|
||||||
order += "wireless ${config.system.machine.wirelessInterface}"
|
|
||||||
# order += "ethernet enp3s0f0"
|
|
||||||
order += "cpu_usage"
|
|
||||||
${lib.optionalString (!isNull config.system.machine.battery) ''
|
|
||||||
order += "battery ${toString config.system.machine.battery}"
|
|
||||||
''}
|
|
||||||
# order += "volume master"
|
|
||||||
order += "time"
|
|
||||||
order += "tztime utc"
|
|
||||||
|
|
||||||
mpd {
|
|
||||||
format = "%artist - %album - %title"
|
|
||||||
}
|
|
||||||
|
|
||||||
wireless ${config.system.machine.wirelessInterface} {
|
|
||||||
format_up = "W: (%quality - %essid - %bitrate) %ip"
|
|
||||||
format_down = "W: -"
|
|
||||||
}
|
|
||||||
|
|
||||||
ethernet enp3s0f0 {
|
|
||||||
format_up = "E: %ip"
|
|
||||||
format_down = "E: -"
|
|
||||||
}
|
|
||||||
|
|
||||||
battery ${toString config.system.machine.battery} {
|
|
||||||
format = "%status %percentage"
|
|
||||||
path = "/sys/class/power_supply/BAT%d/uevent"
|
|
||||||
low_threshold = 10
|
|
||||||
}
|
|
||||||
|
|
||||||
cpu_usage {
|
|
||||||
format = "CPU: %usage"
|
|
||||||
}
|
|
||||||
|
|
||||||
load {
|
|
||||||
format = "%5min"
|
|
||||||
}
|
|
||||||
|
|
||||||
time {
|
|
||||||
format = " %a %h %d ⌚ %I:%M "
|
|
||||||
}
|
|
||||||
|
|
||||||
spotify {
|
|
||||||
color_playing = "#fdf6e3"
|
|
||||||
color_paused = "#93a1a1"
|
|
||||||
format_stopped = ""
|
|
||||||
format_down = ""
|
|
||||||
format = "{title} - {artist} ({album})"
|
|
||||||
}
|
|
||||||
|
|
||||||
external_script inbox {
|
|
||||||
script_path = '${emacsclient "(aspen/num-inbox-items-message)"}'
|
|
||||||
format = 'Inbox: {output}'
|
|
||||||
cache_timeout = 120
|
|
||||||
color = "#93a1a1"
|
|
||||||
}
|
|
||||||
|
|
||||||
external_script current_task {
|
|
||||||
script_path = '${emacsclient "(aspen/org-current-clocked-in-task-message)"}'
|
|
||||||
# format = '{output}'
|
|
||||||
cache_timeout = 60
|
|
||||||
color = "#93a1a1"
|
|
||||||
}
|
|
||||||
|
|
||||||
tztime utc {
|
|
||||||
timezone = "UTC"
|
|
||||||
format = " %H·%M "
|
|
||||||
}
|
|
||||||
|
|
||||||
volume_status {
|
|
||||||
format = "☊ {percentage}"
|
|
||||||
format_muted = "☊ X"
|
|
||||||
# device = "default"
|
|
||||||
# mixer_idx = 0
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
"py3status -c ${i3status-conf}";
|
|
||||||
inherit fonts;
|
inherit fonts;
|
||||||
position = "top";
|
position = "top";
|
||||||
colors = with solarized; rec {
|
colors = with solarized; rec {
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
nerdfonts
|
nerdfonts
|
||||||
noto-fonts-emoji
|
noto-fonts-emoji
|
||||||
twitter-color-emoji
|
twitter-color-emoji
|
||||||
|
weather-icons
|
||||||
];
|
];
|
||||||
|
|
||||||
fontconfig.defaultFonts.emoji = [ "Twitter Color Emoji" ];
|
fontconfig.defaultFonts.emoji = [ "Twitter Color Emoji" ];
|
||||||
|
|
Loading…
Reference in a new issue