this post was submitted on 09 Sep 2023
11 points (100.0% liked)

Learn Programming

1625 readers
1 users here now

Posting Etiquette

  1. Ask the main part of your question in the title. This should be concise but informative.

  2. Provide everything up front. Don't make people fish for more details in the comments. Provide background information and examples.

  3. Be present for follow up questions. Don't ask for help and run away. Stick around to answer questions and provide more details.

  4. Ask about the problem you're trying to solve. Don't focus too much on debugging your exact solution, as you may be going down the wrong path. Include as much information as you can about what you ultimately are trying to achieve. See more on this here: https://xyproblem.info/

Icon base by Delapouite under CC BY 3.0 with modifications to add a gradient

founded 2 years ago
MODERATORS
 

Edit: TL;DR, a literal can't contain multiple children. The opening bracket that starts the literal must be closed at the end of the literal, with no other yuck appended.

I've been playing with Elkowar's Wacky Widgets in an attempt to replace tint2 on openbox. Specifically, I've been working on a taskbar widget. So far, I've managed to make a few bash scripts to generate all the necessary yuck (and png files) to create a rudimentary icon-only taskbar that updates itself every time _NET_ACTIVE_WINDOW changes. I've confirmed that the yuck works when I manually copy/paste the output of the bash script into eww.yuck.

Anyway, I've assigned this script to a deflisten variable called "tasks". When I run "eww state" in a terminal, I confirm that "tasks" is indeed defined (and regularly updated) with yuck that looks like this.

spoiler(box :tooltip Xfce4-terminal (eventbox :onclick ~/.config/eww/scripts/taskbaractions.sh 0x120000a 0x120000a (image :image-height 16 :path /home/prunerye/.config/eww/scripts/iconstorage/Xfce4-terminal.png))) (box :tooltip Geany (eventbox :onclick ~/.config/eww/scripts/taskbaractions.sh 0xe00010 0x120000a (image :image-height 16 :path /home/prunerye/.config/eww/scripts/iconstorage/Geany.png))) (box :tooltip Thunar (eventbox :onclick ~/.config/eww/scripts/taskbaractions.sh 0x140000d 0x120000a (image :image-height 16 :path /home/prunerye/.config/eww/scripts/iconstorage/Thunar.png)))

(Unrelated, but why doesn't eww recognize "~/" in image filepaths?)

But when I use "tasks" to generate my taskbar widget with a literal, nothing appears, save for a slight overall change in the spacing on my topbar, though this happens inconsistently. Here is the relevent yuck.

spoiler(defwidget task_bar [] (box :orientation "horizontal" :space-evenly true :spacing 2 :halign "start" (literal :content tasks)))

Here's the full tree:

spoiler(defwindow main :class "main" :monitor 0 :geometry (geometry :x "0px" :y "0px" :width "100%" :height "16px" :anchor "top center") :vexpand false :stacking "fg" :windowtype "dock" :wm-ignore true :reserve (struts :distance "16px" :side "top") (topbar))

(defwidget topbar [] (box :orientation "h" :space-evenly false (foo) (task_bar) (bar)))

(deflisten tasks ~/.config/eww/scripts/taskbarliteral.sh)

(defwidget task_bar [] (box :orientation "horizontal" :space-evenly true :spacing 2 :halign "start" (literal :content tasks)))

I found a possibly related closed issue at https://github.com/elkowar/eww/issues/871 but the issue doesn't provide much detail.

Any idea what I'm doing wrong?

Edit: Lemmy does funny things with ` quotes. Click the view source button to see raw text.

Edit2: I booted up my openbox/eww setup this morning and was shocked to find a working task bar when I opened a window... but only the first window. Once I open a second window, my taskbar is blank.

Edit3: Edit2 was my eureka moment. Why would only the first window load? I now have a suspicion that eww literals are treated as parents that can't have more than one child; when I shifted the literal's parent "box" into the bash script, the task bar suddenly worked! The new task_bar defwidget looks like this.

spoiler(defwidget task_bar [] (literal :content tasks))

And "tasks" is now defined as

spoiler(box :orientation "horizontal" :space-evenly true :spacing 2 :halign "start" (box :tooltip Xfce4-terminal (eventbox :onclick ~/.config/eww/scripts/taskbaractions.sh 0x120000a 0x120000a (image :image-height 16 :path /home/prunerye/.config/eww/scripts/iconstorage/Xfce4-terminal.png))) (box :tooltip Geany (eventbox :onclick ~/.config/eww/scripts/taskbaractions.sh 0xe00010 0x120000a (image :image-height 16 :path /home/prunerye/.config/eww/scripts/iconstorage/Geany.png))) (box :tooltip Thunar (eventbox :onclick ~/.config/eww/scripts/taskbaractions.sh 0x140000d 0x120000a (image :image-height 16 :path /home/prunerye/.config/eww/scripts/iconstorage/Thunar.png))) )

no comments (yet)
sorted by: hot top controversial new old
there doesn't seem to be anything here