如何在 NixOS 中将天气添加到 i3status
How to add weather to i3status in NixOS
可以通过多种方式将天气添加到 i3 中的状态栏,包括:
- py3状态
- 管道
i3status
到自定义 bash 脚本
i3status 不允许在配置文件中包含任意 shell 命令。 Python 的 NixOS 环境需要进一步配置,当我通过管道传输 i3status
时,我丢失了颜色格式。如何在不添加额外的 i3 扩展的情况下保留颜色格式并添加天气?
添加一个shell脚本到/etc/nixos/i3/weather.sh
(修改自Reddit用户@olemartinorg):
#!/bin/sh
# weather.sh
# shell script to prepend i3status with weather
i3status -c /etc/nixos/i3/i3status.conf | while :
do
read line
weather=$(cat ~/.weather.cache)
weather_json='"name":"weather","color":"#FFFFFF", "full_text":'
weather_json+=$(echo -n "$weather" | python -c 'import json,sys; print json.dumps(sys.stdin.read())')
weather_json+='},{'
# Inject our JSON into $line after the first [{
line=${line/[{/[{$weather_json}
echo "$line" || exit 1
done
在你的 NixOs 中创建一个 cronjob configuration.nix
:
services.cron = {
enable = true;
systemCronJobs = [
"*/5 * * * * USERNAME . /etc/profile; curl -s wttr.in/Osnabrueck?format=3 > ~/.weather.cache"
];
};
将 "Osnabrueck" 替换为您的城市名称,并将 USERNAME
替换为您的用户名。这将创建一个文件 .weather.cache
,其中将包含当地天气作为一行。
最后,更新 i3.conf
,将 i3status
替换为您的脚本路径:
bar {
status_command /etc/nixos/i3/weather.sh
tray_output primary
}
nixos-rebuild switch
并启动 i3 ($mod+Shift+R
)。您现在应该在底部(或 i3 状态栏显示的任何地方)看到您的天气。
可以通过多种方式将天气添加到 i3 中的状态栏,包括:
- py3状态
- 管道
i3status
到自定义 bash 脚本
i3status 不允许在配置文件中包含任意 shell 命令。 Python 的 NixOS 环境需要进一步配置,当我通过管道传输 i3status
时,我丢失了颜色格式。如何在不添加额外的 i3 扩展的情况下保留颜色格式并添加天气?
添加一个shell脚本到/etc/nixos/i3/weather.sh
(修改自Reddit用户@olemartinorg):
#!/bin/sh
# weather.sh
# shell script to prepend i3status with weather
i3status -c /etc/nixos/i3/i3status.conf | while :
do
read line
weather=$(cat ~/.weather.cache)
weather_json='"name":"weather","color":"#FFFFFF", "full_text":'
weather_json+=$(echo -n "$weather" | python -c 'import json,sys; print json.dumps(sys.stdin.read())')
weather_json+='},{'
# Inject our JSON into $line after the first [{
line=${line/[{/[{$weather_json}
echo "$line" || exit 1
done
在你的 NixOs 中创建一个 cronjob configuration.nix
:
services.cron = {
enable = true;
systemCronJobs = [
"*/5 * * * * USERNAME . /etc/profile; curl -s wttr.in/Osnabrueck?format=3 > ~/.weather.cache"
];
};
将 "Osnabrueck" 替换为您的城市名称,并将 USERNAME
替换为您的用户名。这将创建一个文件 .weather.cache
,其中将包含当地天气作为一行。
最后,更新 i3.conf
,将 i3status
替换为您的脚本路径:
bar {
status_command /etc/nixos/i3/weather.sh
tray_output primary
}
nixos-rebuild switch
并启动 i3 ($mod+Shift+R
)。您现在应该在底部(或 i3 状态栏显示的任何地方)看到您的天气。