enkore / i3pystatus

A complete replacement for i3status

Home Page:https://i3pystatus.readthedocs.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Persistent `shell` commands that print a new content as a new line on standard output.

amano-kenji opened this issue · comments

Checking some things on a regular basis introduces delay and is inefficient.

For example, if a persistent shell program is a wireplumber script that listens to pipewire events, then it can print a new line to standard output in response to certain pipewire events.

It's inefficient to check the pipewire volume levels every few seconds.

If you don't want something to actively check, then use threading to run the script. Many i3pystatus modules already do this. The threading target can simply update self.output when it has new info, and changes will be reflected in the status bar the next time the interval passes.

I don't understand what you just wrote, but I want changes to be reflected immediately.

This issue is the reason that I'm migrating to i3blocks.

Without more details, and with that kind of attitude, you're not likely to get much help.

From what I can understand, from the little information you've provided, this seems like something that the shell module is not well-suited for.

If you'd like to provide a more detailed feature request, perhaps someone can take a look.

On https://github.com/vivien/i3blocks#interval, you can read

The interval value persist (or -3) expects the command to be an infinite loop. Each line of the output will trigger an update of the block.

I want this.

@enkore Functionality like this may be useful, specifically for the shell module. However, i3pystatus.core would still end up attempting to execute the module's run function when the interval has passed, and negative intervals would probably mess with i3pystatus.core.threading. What do you think?