Note that this is primarily a syntactical choice -- there isn't _currently_ much in the configuration language that actually resembles the functionality from regular lisp languages. I've been thinking quite a bit about how I could make use of the s-expression based syntax to turn yuck into a more feature-rich, actual lisp language, without completely going out-of-scope ^^
I saw the Janet language mentioned a few times on HN recently and it looks like a nice flavor of lisp that’s also embeddable. Maybe that would be useful for EWW?
I haven’t used Janet much other than going through the beginning of this book here, but here’s the link to a good book and the Rust bindings of you want to check it out.
I've been following eww's development on the sidelines for a while. I wondered if you considered making it callable as a library, for some scripting language (e.g. python or lua or something), rather than growing your own bespoke language? To me it seems you risk people demanding more and more features in the "configuration language", and it turns into a (bad) fully Turing complete programming language before you notice. Like in the configuration complexity clock[1].
I've definitely considered it, and I do see the points of yuck either becoming a bad, turing complete lisp, or being just,... not powerful enough. However, I have two main counterpoints to the idea of turning it into a library for some scripting language like lua:
- The original goal of eww was to be two-dimensional polybar with support for full visuals and CSS, rather than just colored text. This means that my target audience, at least initially, was also more the polybar crowd than the awesomeWM crowd. Eww aims to be usable without really needing to know how to program, and aims to provide declarative UI description language that reduces complexity of state management and logic as much as possible. This is, arguably, a goal I've at least somewhat reached -- primarily given the fact that eww DID grow quite fast, and did enable lots of people to do more interesting UI designs than other projects (such as AwesomeWM) did. "Widgets for everyone" is a tagline I don't wanna leave, and thus requiring users to do full-on scripting is not something I'd wanna do easily.
- if you remove yuck and it's state management architecture from eww, you'll be left with quite little. Thus, there would at that point be little added value over existing GTK wrappers. The thing that makes eww appealing (at least IMO) is that it does simplify lots of the most commonly needed things down to a very simple state and UI structure, and provides a great iteration-cycle with great error messages. This would be very hard to keep when turning it into a regular, more imperative library
After a long period with Polybar, I tried Eww for 3 months.
The features and the visual results are impressive. I wrote 400 lines of configuration and about ten scripts for it but in the end the instability chilled me.
Sometimes tooltips refuse to display, windows open in duplicate or refuse to close, the logs indicate json errors without any apparent reasons or consequences.
I will come back to see the progress in a few months.
Since then I tried i3status-rust, there are less possibilities visually but the same interactive features and its really fast stable.
I tried an unsuccessful rice sometime ago from here [0]
The installation page has some dependency on conky-lua package. My OS cranked up a few errors during compilation(?), hence wouldn't know. But hopefully the link answers your question.
Superficially, it is similar to conky in concept, but with very different primary points of focus. whilst conky excells at having lots of info on your desktop in the background, eww might not be optimal for that. On the other hand, eww is generally a lot easier to get visually appealing main-point-of-focus widgets in, for overlay dashboards, media/volume controls and of course bars.
Eww was and is generally designed to be more or less "two-dimensional polybar", both in its original design of widgets and the state architecture.
Being written using GTK and thus also styled in GTK CSS makes a big impact here, of course
Yes! It works both on X and on Wayland, and should support basically any DE, WM and compositor out there. Note that there are a few exceptions: As far as I'm aware, GNOME on wayland is not going to work well, as GNOME doesn't implement the necessary wayland extension protocols eww relies on to position its windows
I saw this pop up yesterday on the unfortunately named https://www.reddit.com/r/unixporn/ – a subreddit well worth checking out if you want some inspiration around styling your desktop. Lots of interesting tools pop up in the comments I'd never heard of before.
(Edit: The reason I say it's 'unfortunately' named is that not everyone has the privilege to load pages containing terms like 'porn' without the risk of trouble in their workplace, country, or otherwise. I have no problem with the name personally, and it's a fantastic sub and Discord.)
I work for myself and own all of my own equipment, so believe me, I am more than happy to load anything legal at work without triggering a filter or getting a visit from a boss. Sadly not everyone has this privilege.
Double plus this. Peoples assumed right to "browse from work", is the new "think of the children"; or "can't have a steak just because a baby can't chew it".
From a "fortune -o" message my BSD threw at me a long time ago: ~"It is a sad comment on society that this message is being flagged as offensive just because it contains the word 'fuck'."