Waveform 9 Linux: Application icon is broken

Discussion about: tracktion.com
Post Reply New Topic
RELATED
PRODUCTS

Post

I use Tracktion Waveform 9.3.4 in KDE Neon (User edition, lowlatency). The Application icon on the taskbar is showing a generic X icon instead of the Waveform icon:
waveform-9-icon-broken.png
Is this the right place to report Waveform bugs? Thx!
You do not have the required permissions to view the files attached to this post.

Post

I notice when running Waveform from the command line no icon shows on the task bar ( Linux Mint ) , but when run from the launcher icon then there is an icon on the task bar, how are you starting Waveform?

Post

Whether I start Waveform 9 from the Application Menu of from a terminal makes no difference to the application icon. In both cases the generic X.Org icon is displayed. All other applications seem to have correct icons.

Post

I'm thinking that because Waveform installs the icon to an unusual folder i.e /usr/share/pixmaps/ , your system maybe doesn't scan this directory for icons to use in the toolbar. Have a look in synaptic at some other application that displays its Icon correctly and then copy The Waveform.png over to there and update the icon cache.

An example of this could be /usr/share/icons/scalable/Waveform9.png or /usr/share/icons/Waveform9.png your mileage may vary.

Post

Nope, thanx for your suggestion but I cannot get it to work. I tried all possibilities beneath /usr/share/icons and I even converted the icon to an .svg file and tries it in the 'breeze-dark' folder, but alas to no avail.

The application icon works when Waveform is not running; it is 'pinned' to the task manager in KDE. Then, when I start Waveform, a window called 'Waveform9' opens (as a tab in the manager) which has the correct icon. Then, this window closes and makes way for a second window called "Start-up screen", which is the splash-screen and it has the X.Org icon instead of the correct one. Finally, the splash-screen closes and the main 'Waveform' window opens also with the incorrect X.Org icon.

Post

I'm presuming that you are updating the icon cache each time you make a change ?
Anyway it might be possible to edit the Waveform9.desktop file directly and add the path to the icon. ( you might want to include the .png extension too )
here is the .desktop entry :-

[Desktop Entry]
Name=Waveform9
GenericName=Waveform
Comment=Audio and MIDI workstation
Exec=/usr/bin/Waveform9 %u
Icon=Waveform9
Terminal=false
Type=Application
Categories=AudioVideo;AudioEditing;
MimeType=application/x-Waveform9-project;
Version=1.0

As you can see there is no path set for the icon ( tho I believe this is standard practice from what Ive read so far )

the file resides in /usr/share/applications/Waveform9.desktop

It is also possible to do this at user level ( which should get read 1st ) , you would copy the above ( and edit path of icon ) to /home/username/.local/share/applications/Waveform9.desktop [ might have to make it executable too iirc ]

Post

Hi,

It's because the application doesn't set the Xproperties value that this happens. Even if you write your own .desktop file as @mikoatkvr has shown, it wont work because the the WM_CLASS property isn't set be the app and there it cant match a WM_CLASS value in the .desktop file. The devs need to add a WM_CLASS xprop to the application for this to work.

There two parts to this right now.

1.

For the launcher (.desktop) file to work:

Code: Select all

[Desktop Entry]
Name=Waveform9
GenericName=Waveform
Comment=Audio and MIDI workstation
Exec=/usr/bin/Waveform9.wrapper %u
Icon=Waveform9
StartupWMClass=Waveform
Terminal=false
Type=Application
Categories=AudioVideo;AudioEditing;
MimeType=application/x-Waveform9-project;
Version=1.0
the two key entries in this file are:

Code: Select all

Exec=/usr/bin/Waveform9.wrapper %u
StartupWMClass=Waveform
2.

Code: Select all

#!/bin/bash
/usr/bin/Waveform9 &
sleep 5 && xprop -name Waveform -f WM_CLASS 8s -set WM_CLASS "Waveform"
Save this file as /usr/bin/waveform.wrapper & chmod +x /usr/bin/waveform.wrapper

The exec file in the .desktop file (or use a menu editor) to /usr/bin/waveform.wrapper

Note: If you are using a slow HDD and not a SSD then you may need to change the "sleep 5" to a (much) bigger number to give the app time to start-up before the xprop is set.

I have logged a bug with the devs for this and advised them on setting the WM_CLASS xprop from within the app itself.

Note to devs: Usually toolkits such as QT or GTK have their own helper function for this but it would seem that Juce is handling GUI elements on its own rather than relying on another toolkit (which is cool) so this xproperty needs to be set using lower level Xorg functions that Xlib provides such as this: https://www.x.org/releases/X11R7.6/doc/ ... S_Property

Cheers,
Gavin
Last edited by gavindi on Fri Oct 19, 2018 9:48 pm, edited 2 times in total.
Making Bitpop music....
Tracktion Waveform 11 under Ubuntu 20.04.
ROC CUbe Ryzen 3400G - 32GB RAM, 2xSSD, Integrated Radeon RC Vega 11 GPU
Yamaha USB Mixing Station, Mackie Reference Monitors & Axiom A.I.R 32 controller.

Post

Thanx gavindi, but I cannot seem to get it working. I added the 'StartupWMClass'-line to the .desktop files in both /usr/share/applications and ~/.local/share/applications, and started waveform.wrapper manually as well as from the menu / task manager. The WM_CLASS gets set fine after 5, 10 and 15 secs (according to sleep time). The 'Waveform' window then has WM_CLASS set to 'Waveform' but the icon does not change.

Also, I noticed that the Waveform-window has its WM_ICON_NAME(STRING) set to "Waveform" so I copied Waveform9.png to Waveform.png and put it in about every icon folder I could find, but to no avail...

Do you use this method in KDE Plasma?

Post

SynthaClaus wrote: Thu Oct 11, 2018 11:09 am Do you use this method in KDE Plasma?
Damn! I'm using Gnome 3 and it works. I've not tested it under KDE. I guess I should've stated that, sorry.
I'll have a poke around though and see if it can be adapted.
Making Bitpop music....
Tracktion Waveform 11 under Ubuntu 20.04.
ROC CUbe Ryzen 3400G - 32GB RAM, 2xSSD, Integrated Radeon RC Vega 11 GPU
Yamaha USB Mixing Station, Mackie Reference Monitors & Axiom A.I.R 32 controller.

Post

I submitted a bug report through tracktion.com. Thanks!

Post Reply

Return to “Tracktion”