rayes0 / dotfiles

dotfiles for bash, neovim, tmux, widgets, and more
74 stars 0 forks source link

eww cmus question #1

Closed GideonWolfe closed 3 years ago

GideonWolfe commented 3 years ago

Hey, your eww dotfiles are AMAZING and really helped me get started on my config.

I'm trying to replicate your cmus widget, and it works 99% except it has a problem updating the track information when it changes.

The progress into the track x:xx / x:xx is updating every second, as is the progress bar below it. When a song changes, these values are reset to 0 and the new length is shown.

However the name of the song, artist, album, play/pause status, and album art do not update when I change them. I have to completely restart the eww daemon for these changes to be seen.

Similarly, when I use your volume slider widget, the volume shown by the pulseaudio module in my polybar updates to match. This doesn't work the other way around though. Changing the volume in polybar has no effect on the eww volume widget.

I'm not sure if maybe I just set something up wrong but any help would be appreciated. Thanks!

GideonWolfe commented 3 years ago

ahh, after a bit of digging, I found the line

kill -SIGURG $(cat ${XDG_RUNTIME_DIR}/eww-wrapper.lock) &

in cmus-status.sh. I'll add that myself.

rayes0 commented 3 years ago

Hello! Thank you for the kind words!

Yes, as you figured out, you need to set a script which sends SIGURG to the wrapper script as a status_display_program in cmus, so whenever cmus changes status, it will update everything for you. You can do it by typing :set status_display_program=~/.config/cmus/scripts/cmus-status.sh into the cmus command line.

As for the volume not matching, it's the same issue. You will need to configure your polybar to send the SIGUSR1 signal whenever you change the volume. You can read this section of the README for an example on how to do this.

GideonWolfe commented 3 years ago

You will need to configure your polybar to send the SIGUSR1 signal whenever you change the volume.

That might be tricky with the default pulseaudio module, but I'll see if I can figure it out.

On a slightly unrelated note, there is a tad bit of "jank" when toggling between "show music" and "show weather". Various elements kind of flick around the window and it's not pretty.

I added a simple fade in animation in the eww.scss file, (the default wasn't working for me)

@keyframes fade-in {
  0% { opacity: 0; }
  100% { opacity: 1; }
}

This adds a nice fade in when I initially do eww open, but it doesn't have any effect on actually changing the music/weather page, which was the goal.

rayes0 commented 3 years ago

Yeah this bothered me too when I was setting up the widgets. Unfortunately, as far as I know, it is not possible to do this through pure GTK+ and CSS. In order for on demand animations to work, they have to processed in the native application (so eww in this case) using GtkRevealer.