Sync with git for fixes and goodies.

Authored by JoshStrobl on Dec 30 2018, 8:57 PM.
"Like" token, awarded by GladOSkar."Cup of Joe" token, awarded by Lorien."100" token, awarded by maverick1."Like" token, awarded by kyrios123."Yellow Medal" token, awarded by Girtablulu.


Sync with git for fixes and goodies.


  • Implemented mechanism for hiding Sound widgets when there are no devices
    • Dynamically show and hide Sound Output / Sound Input widgets based on if there are devices plugged in of that type, while still respecting the setting defined in Budgie Desktop Settings. An example of this being used is when there are no input devices plugged into the machine. In this case, we should not show the Sound Input widget, regardless of the setting in Budgie Desktop Settings. However, if we plug in an input device, we should show the widget again if permitted by our setting. The same goes for device removal. If we no longer have a device of a specific type, we should hide it (output and input respectively)..
  • Refined window tracking, class group comparison, and window calculation logic.
    • We're now using AbominationRunningApp to track the proper group of the first window set in a class group provided to IconButton. Whenever a new window is opened, we call our should_add_window function. This function enables us to perform Chrome and LibreOffice checks to best determine if the new window is truly of the same class as the first window set in the class group.
      • This is useful for Chrome where Chrome apps start with chrome- and Chrome itself is google-chrome. The resulting comparison for Chrome means we can determine when an application running is a Chrome app and should not be grouped with Chrome itself. Effectively this means you can now finally pin Chrome apps and they should not get confused with Chrome.
      • This is useful for LibreOffice where each LibreOffice window is actually its own Wnck.ClassGroup. We now check if the first window's group name matches the new LibreOffice window and adds it regardless of the Wnck ClassGroup id. So libreoffice-writer windows would always match each other, whereas libreoffice-impress would not get grouped up since it's technically a separate application. This resolves various tracking issues with LibreOffice.
    • Window count tracking has been completely rewritten to utilize our logic across should_add_window as well as in the popover (for determining duplication). Previously it was solely using Wnck.ClassGroup windows, which is obviously problematic for Chrome and LibreOffice. You'd get indicators for however many Chrome windows you'd have open, but realistically it'd only be one Chrome app then completely separate Chrome windows. So this new logic prevents it.
    • Window type checking has been refactored into an is_disallowed_window_type function. The blacklist was previously only DESKTOP-type applications (so Nautilus' Desktop Icons) but has now been expanded to include:
      • DIALOG: Dialogs such as the Choose Template dialog for LibreOffice Impress. For whatever reason it'd show up under Writer so easier just to blacklist it entirely.
      • SPLASHSCREEN: Prevents needless GIMP and LibreOffice splashscreens from showing up temporarily.


JoshStroblDec 30 2018, 8:57 PM
JoshStroblDec 30 2018, 9:21 PM
R465:6555d7e7fabf: Sync with git again (yay).
tag: budgie-desktop-10.5-184