seeruk / i3x3

Grid-based workspace manager for i3, using i3-msg, with native GUI overlay.
MIT License
7 stars 0 forks source link

There is no UI #1

Open seeruk opened 7 years ago

seeruk commented 7 years ago

Right now there is no visual representation of which workspace you're on, and which workspace you're moving to. It would be a good idea to offer something that could provide this functionality.

From some initial investigations, there are a few GUI libraries out there for Go that could be explored, but they may not be as stable as writing something in a language more suited to this (e.g. Python with GTK at least).

The UI could reside in a separate application, something that is running all of the time that accepts messages to show the UI. It can be pretty basic (think TotalSpaces style, with less animation...) just to show you which workspace you've moved to (maybe investigate the animations though, that would be nice).

Current UI library candidates for Go are:

All of the above seem to be a little bit risky, but there are other languages that may support GTK a little better. For instance, the official implementations are written in:

The two choices there that stand out are JavaScript, and Python. Python seems to be very widely used for this, but it is also the choice that I have the least experience with, and am more likely to mess up. JavaScript on the other hand seems to be more dynamic too. Both languages will support having a long-running process though which is good.

Realistically, I would prefer to stick with something official, and well maintained. Python seems like the "best" choice for that, but JavaScript may be easier for me to actually work with. The downsides of course to both are that you need either Python or Node installed.

Vala does actually compile down, like Go / C, but again, is another new language to learn. It can be used to produce a server though, that will respond to network requests... It may be worth experimenting with it to see if it's easy enough to learn. Ideally though, given Go is going to have to communicate with this thing, it'd be better if I could use something like ProtoBuf for messaging.