Took a quick look at some other status line generators and listed up their blocks to see what ones might be good to implement ourselves. Of interest to me are blocks that use DBus/i3 IPC/etc since we can write those natively to get asynchronously updating blocks and no calls to external programs.
Note that there are a lot of simple blocks here that could be handled by the custom block, especially those that just call external programs, so I don't see the advantage of adding those into the Rust codebase since there's no performance gains etc to be made. However we could look into the idea of having contributed configs for the custom block either in the repo or wiki or somewhere. Another idea could be allowing for modules/blocks from other status line generators to be able to be imported/used directly in i3status-rust.
From bumblebee-status:
block | description | comment |
--- | --- | --- |
apt | Displays APT package update information | we have pacman already, so I guess we could have this too Done in #943 |
arandr | Enables handy interaction with arandr for display management |
caffeine | Enable/disable automatic screen locking |
currency | Displays currency exchange rates |
dnf | Displays DNF package update information |
dunst | Toggle dunst notifications | implemented by #851 |
getcrypto | Displays the price of a cryptocurrency |
git | Print branch and git status for currently focused window |
hddtemp | Fetch hard drive temeperature data from a hddtemp daemon |
hostname | Displays the system hostname | easily covered by a Custom block |
http_status | Display HTTP status code | easily covered by a Custom block |
indicator | Displays the indicator status, for numlock, scrolllock and capslock | interested if can get async implementation. some discussion in #267 |
kernel | Shows Linux kernel version information | easily covered by a Custom block |
libvirtvms | Displays count of running libvirt VMs |
mocp | Displays information about the current song in mocp | covered by music block (assuming mocp has MPRIS interface) |
octoprint | Displays the Octorpint status and the printer’s bed/tools temperature in the status bar |
pihole | Displays the pi-hole status (up/down) together with the number of ads that were blocked today |
ping | Periodically checks the RTT of a configurable host using ICMP echos | easily covered by a Custom block |
prime | Displays and changes the current selected prime video card |
progress | Show progress for cp, mv, dd, … | this seems useful to me |
publicip | Displays public IP address | could be added to net block |
redshift | Displays the current color temperature of redshift | implemented by #802
rotation | Shows a widget for each connected screen and allows the user to loop through different orientations |
rss | RSS news ticker |
smartstatus | Displays HDD smart status of different drives or all drives |
spaceapi | Displays the state of a Space API endpoint Space API is an API for hackspaces based on JSON |
sun | Displays sunrise and sunset times | possibly add via more qualifiers to the weather block |
system | Adds the possibility to shutdown or reboot the system |
twmn | Toggle twmn notifications |
vault | Copy passwords from a password store into the clipboard (currently supports only ‘pass’) |
vpn | Displays the VPN profile that is currently in use |
xkcd | Opens a random xkcd comic in the browser |
yubikey | Shows yubikey information |
zpool | Displays info about zpools present on the system |
From py3status:
block | description | comment
--- | --- | --- |
air_quality | Display air quality polluting in a given location | could be added to weather block
aws_bill | Display bill for Amazon Web Services |
bitcoin_price | Display bitcoin using bitcoincharts.com |
check_tcp | Display status of a TCP port on a given host |
coin_balance | Display balances of diverse crypto-currencies |
coin_market | Display cryptocurrency coins |
conky | Display Conky objects/variables on the bar |
do_not_disturb | Turn on and off desktop notifications | implemented by #851 |
dpms | Turn on and off DPMS and screen saver blanking |
dropboxd_status | Display status of Dropbox daemon |
emerge_status | Display information about the currently running emerge process |
fedora_updates | Display number of pending updates for Fedora Linux |
file_status | Display if files or directories exists |
frame | Group modules and treat them as a single one |
getjson | Display JSON data fetched from a URL |
gitlab | Display number of issues, requests and more from a GitLab project |
glpi | Display number of open tickets from GLPI |
google_calendar | Display upcoming Google Calendar events |
graphite | Display Graphite metrics |
group | Group modules and switch between them |
hamster | Display time tracking activities from Hamster |
hueshift | Shift color temperature on the screen | implemented by #802
i3block | Support i3blocks blocklets in py3status | possibly a good idea
i3pystatus | Support i3pystatus modules in py3status | possibly a good idea
icinga2 | Display service status for Icinga2 |
imap | Display number of unread messages from IMAP account |
insync | Display Insync status |
kdeconnector | Display information about your smartphone with KDEConnector | already implemented
khal_calendar | Displays upcoming khal events |
mega_sync | mega_sync |
ns_checker | Display DNS resolution success on a configured domain |
process_status | Display status of a process on your system |
rainbow | Add color cycling fun to your i3bar |
rate_counter | Display time spent and calculate the price of your service |
rt | Display number of ongoing tickets from RT queues |
scratchpad | Display number of scratchpad windows and urgency hints |
screenshot | Take screenshots and upload them to a given server |
selinux | Display SELinux state |
sql | Display data stored in MariaDB, MySQL, sqlite3, and hopefully more |
systemd | Display status of a service on your system | possibly even more useful if it could track all services and display failed ones
systemd_suspend_inhibitor | Turn on and off systemd suspend inhibitor |
thunderbird_todos | Display number of todos and more for Thunderbird |
timer | Simple countdown timer |
tor_rate | Display transfer rates of a tor instance |
transmission | Display number of torrents and more |
twitch | Display if a Twitch channel is currently streaming or not |
uname | Display system information | easily covered by a Custom block |
usbguard | Allow or Reject newly plugged USB devices using USBGuard |
velib_metropole | Display information about Velib Métropole stations |
vnstat | Display vnstat statistics |
wanda_the_fish | Display a fortune-telling, swimming fish |
whoami | Display logged-in username | easily covered by a Custom block
xsel | Display X selection |
yandexdisk_status | Display Yandex.Disk status |
yubikey | Show an indicator when YubiKey is waiting for a touch |
From i3blocks:
block | description
--- | --- |
afs | Show usage information for an AFS directory
calendar | Current date/time and click for calendar
disk-io | Monitor disk reads and writes
dunst | Toggle Dunst notifications using a simple Do-Not-Disturb button | implemented in #851 |
email | Show the number of unread IMAP messages
gpu-load | Shows load of Nvidia GPUs | already covered by nvidia-gpu block |
go | Show the currently installed Go version | easily covered by a Custom block |
keyindicator | Show the status of capslock or numlock
key_light | Control the keyboard backlight
kubernetes | Show the kubernetes current context and namespace
monitor_manager | Manage monitor on/off, resolution, extend, clone
nm-vpn | Show vpn status using network manager
openvpn | Show openvpn status
rofi-calendar | Current date/time and click for callendar using rofi
shutdown_menu | Shutdown menu using rofi or zenity
tahoe-lafs | Show status of your tahoe-lafs grid
usb | Show connected usb storage device info
ytdl-mpv | Play youtube videos from your clipboard using youtube-dl
Others
Hi I have a custom block that shows this:
| DP-1(1.0) HEADLESS-1(1.0) |
to show the active outputs and their current scale factor.
It might be nice to have something like this built in.
From my point of view, apt and do-not-disturb seem promising.
apt : AFAIK, apt and pacman belong to most used distros.
do-not-disturb: Some times focus is needed.
apt seems reasonable given it should have a large user base.
Although both do-not-disturb and apt could be implemented using the Custom block. As mentioned in the first post, I wonder if we should have a collection of custom block configs that we ship as part of i3status-rs for those trivial blocks. Saves the user time from thinking of the block and the commands, and saves us from having to implement them in Rust. @atheriel What do you think (whenever you see this)?
I would vote for a "all-in-one" solution. Personally, I hate the hassle that I have to maintain several external scripts which are "just" called by i3status-rs. Also setting up a new computer would require more effort than just copying a single configuration file (sure, I could also copy all files). Additionally, I agree to the point of @ammgws that someone who starts setting up the bar would have to think about how to realize all the blocks instead of just adding them to the config. This could cause confusion.
From the list in the initial issue, I would be very interested in some of the blocks and could imagine to contribute (for) some of them.
Do you have any scripts that aren't covered by anything from the list in the first post and are general enough to be useful for others? If so please list those up as well.
I think a collection of simple/common uses of the Custom block (shell one-liners, basically) would be a great addition to the documentation. We could potentially re-jig blocks.md so that the Custom block gets its own section at the end with a large number of examples.
Hey @ammgws, could you update your first comment to add that the redshift block was added (partially) in #802, just so beginners coming here don't think nothing has been done for this, since the hueshift block is kinda of lesser complete redshift block (Though I do agree that the redshift block is more complete).
Most helpful comment
I would vote for a "all-in-one" solution. Personally, I hate the hassle that I have to maintain several external scripts which are "just" called by
i3status-rs. Also setting up a new computer would require more effort than just copying a single configuration file (sure, I could also copy all files). Additionally, I agree to the point of @ammgws that someone who starts setting up the bar would have to think about how to realize all the blocks instead of just adding them to the config. This could cause confusion.From the list in the initial issue, I would be very interested in some of the blocks and could imagine to contribute (for) some of them.