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, ... }:
|
||||
let
|
||||
inherit (config.lib) depot;
|
||||
|
||||
mod = "Mod4";
|
||||
solarized = import ../common/solarized.nix;
|
||||
# TODO pull this out into lib
|
||||
|
@ -7,16 +9,112 @@ let
|
|||
msg=$(emacsclient --eval '${eval}' 2>&1)
|
||||
echo "''${msg:1:-1}"
|
||||
'';
|
||||
screenlayout = {
|
||||
home = pkgs.writeShellScript "screenlayout_home.sh" ''
|
||||
xrandr \
|
||||
--output eDP-1 --mode 1920x1200 --pos 0x960 --rotate normal \
|
||||
--output DP-3 --primary --mode 3840x2160 --pos 1920x0 --rotate normal \
|
||||
--output DP-1 --off \
|
||||
--output DP-2 --off \
|
||||
--output DP-4 --off
|
||||
'';
|
||||
};
|
||||
|
||||
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 += "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 (lib) mkMerge range;
|
||||
|
@ -60,7 +158,7 @@ in
|
|||
home.packages = with pkgs; [
|
||||
rofi
|
||||
rofi-pass
|
||||
python3Packages.py3status
|
||||
depot.users.aspen.pkgs.py3status
|
||||
i3lock
|
||||
i3status
|
||||
dconf # for gtk
|
||||
|
@ -179,10 +277,6 @@ in
|
|||
|
||||
# Screen Layout
|
||||
"${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
|
||||
"${mod}+Shift+n" = "exec killall -SIGUSR1 .dunst-wrapped";
|
||||
|
@ -224,99 +318,7 @@ in
|
|||
};
|
||||
|
||||
bars = [{
|
||||
statusCommand =
|
||||
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}";
|
||||
statusCommand = "${i3status-command}";
|
||||
inherit fonts;
|
||||
position = "top";
|
||||
colors = with solarized; rec {
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
nerdfonts
|
||||
noto-fonts-emoji
|
||||
twitter-color-emoji
|
||||
weather-icons
|
||||
];
|
||||
|
||||
fontconfig.defaultFonts.emoji = [ "Twitter Color Emoji" ];
|
||||
|
|
Loading…
Reference in a new issue