enkore / i3pystatus

A complete replacement for i3status
https://i3pystatus.readthedocs.io/
MIT License
445 stars 189 forks source link

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

Open amano-kenji opened 1 year ago

amano-kenji commented 1 year ago

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.

terminalmage commented 1 year ago

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.

amano-kenji commented 1 year ago

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.

terminalmage commented 1 year ago

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.

amano-kenji commented 1 year ago

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.

terminalmage commented 1 year ago

@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?

amano-kenji commented 6 months ago

Because I was frustrated by all existing i3bar/swaybar status programs, I created my own i3bar/swaybar scripting system.

https://codeberg.org/amano.kenji/j3blocks is more difficult to use, but it is very flexible.