[SOLVED] Linux Mattermost desktop start minimized from command line

I’m using Arch Linux with i3, so starting minimized on login option is not working for me, I have to manually start the app. So is there any command line line parameter to pass to the app to start it minimized in tray?

1 Like

Hi @Sandmonster,

What Mattermost desktop app version are you using?

2 Likes

Hey @amy.blais , I’m using latest aur version 4.2.0-1

Hi @Sandmonster,

From one of our community members: That option is called --hidden - please see pr-desktop-571.

Thank you for support, however adding this option to my config did not do any changes.
I’m starting it like this

exec mattermost-desktop --hidden

And window still appears

Hi @Sandmonster,

We have a reply from the community member:

Next guess would be: windowOptions.maximized is true . Would be nice if they could share their bounds-info.json configuration file (should be in the userData directory).

If you can share your bounds-info.json configuration file that would be great! Thanks :slight_smile:

@lindy65 this is the contents of my bound-info.json:

{  
  "x":40,
  "y":40,
  "width":1840,
  "height":1000,
  "maximized":false,
  "fullscreen":false
}

Thank you @Sandmonster,

The community member helping troubleshoot doesn’t have Linux to test in but this is his response:

I’m afraid I have no idea why this doesn’t work. :confused:
But I’d like to guess some more, if you don’t mind. :slight_smile:
I don’t have a Linux desktop to test this, but: maybe --hidden minimizes to the taskbar (I think? I’m talking about that thing with a rectangle for each opened program) and not to the traybar (that other thing in the lower right corner; you can configure Mattermost desktop to show a icon there). This “i3” thing has no such taskbar-thing, apparently (see screenshot; no taskbar, but a tray bar). So, you can’t minimize Mattermost to it. But again, just another guess. :slight_smile:

Hope this helps!?

@Sandmonster Hello there. I’m the packager and maintainer of the Mattermost stack for Arch Linux. You are thus using my package :slightly_smiling_face:

Actually I have tested the --hidden argument and it is working like intended on Arch Linux, using KDE Plasma. The application is launched properly and automatically reduced to my systray.

Maybe the culprit here is i3? Or at least, my question is, do you have dbus installed and properly plugged into i3? Because I checked using dbus-monitor and a lot happens wrt. Mattermost when you run it minimized.

method call time=1545128922.013954 sender=:1.23 -> destination=org.freedesktop.DBus serial=1107 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender=':1.100',path='/org/ayatana/NotificationItem/Mattermost1/Menu',interface='com.canonical.dbusmenu',member='LayoutUpdated'"
method call time=1545128922.014040 sender=:1.23 -> destination=org.freedesktop.DBus serial=1108 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender=':1.100',path='/org/ayatana/NotificationItem/Mattermost1/Menu',interface='com.canonical.dbusmenu',member='ItemActivationRequested'"
method call time=1545128922.014462 sender=:1.23 -> destination=org.freedesktop.DBus serial=1109 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender=':1.100',path='/org/ayatana/NotificationItem/Mattermost1/Menu',interface='com.canonical.dbusmenu',member='ItemsPropertiesUpdated'"
method call time=1545128922.014737 sender=:1.23 -> destination=:1.100 serial=1110 path=/org/ayatana/NotificationItem/Mattermost1/Menu; interface=com.canonical.dbusmenu; member=GetLayout
   int32 0
   int32 1
   array [
   ]

Hello @wget. Sorry for a long response. Yes I do have a dbus installed and it works fine with i3. I don’t know exactly what you mean by

Because I don’t have any issues with that.

Here is the output of dbus-monitor when I start mattermost with --hidden option:

method call time=1545640115.193415 sender=:1.38 -> destination=org.freedesktop.DBus serial=1 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=Hello
method return time=1545640115.193441 sender=org.freedesktop.DBus -> destination=:1.38 serial=1 reply_serial=1
   string ":1.38"
signal time=1545640115.193457 sender=org.freedesktop.DBus -> destination=(null destination) serial=5 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string ":1.38"
   string ""
   string ":1.38"
signal time=1545640115.193500 sender=org.freedesktop.DBus -> destination=:1.38 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.38"
method call time=1545640115.193876 sender=:1.38 -> destination=org.freedesktop.DBus serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',path='/org/freedesktop/DBus',arg0='org.gtk.vfs.Daemon'"
method return time=1545640115.193902 sender=org.freedesktop.DBus -> destination=:1.38 serial=3 reply_serial=2
method call time=1545640115.193958 sender=:1.38 -> destination=org.freedesktop.DBus serial=3 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=StartServiceByName
   string "org.gtk.vfs.Daemon"
   uint32 0
method return time=1545640115.193982 sender=org.freedesktop.DBus -> destination=:1.38 serial=4 reply_serial=3
   uint32 2
method call time=1545640115.194195 sender=:1.38 -> destination=org.freedesktop.DBus serial=4 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetNameOwner
   string "org.gtk.vfs.Daemon"
method return time=1545640115.194219 sender=org.freedesktop.DBus -> destination=:1.38 serial=5 reply_serial=4
   string ":1.3"
method call time=1545640115.194418 sender=:1.38 -> destination=:1.3 serial=5 path=/org/gtk/vfs/mounttracker; interface=org.gtk.vfs.MountTracker; member=ListMountableInfo
method return time=1545640115.194826 sender=:1.3 -> destination=:1.38 serial=13 reply_serial=5
   array [
      struct {
         string "davs+sd"
         string "davs+sd"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "dav+sd"
         string "dav+sd"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "cdda"
         string "cdda"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "afp-server"
         string "afp"
         array [
         ]
         int32 548
         boolean true
      }
      struct {
         string "dns-sd"
         string "dns-sd"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "afp-volume"
         string "afp"
         array [
         ]
         int32 548
         boolean true
      }
      struct {
         string "http"
         string "http"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "computer"
         string "computer"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "ftp"
         string "ftp"
         array [
         ]
         int32 21
         boolean true
      }
      struct {
         string "trash"
         string "trash"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "archive"
         string "archive"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "ftps"
         string "ftps"
         array [
         ]
         int32 21
         boolean true
      }
      struct {
         string "localtest"
         string "localtest"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "admin"
         string "admin"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "recent"
         string "recent"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "davs"
         string "davs"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "dav"
         string "dav"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "ftpis"
         string "ftpis"
         array [
         ]
         int32 990
         boolean true
      }
      struct {
         string "burn"
         string "burn"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "sftp"
         string "sftp"
         array [
            string "ssh"
         ]
         int32 22
         boolean true
      }
      struct {
         string "network"
         string "network"
         array [
         ]
         int32 0
         boolean false
      }
   ]
method call time=1545640115.195891 sender=:1.38 -> destination=org.freedesktop.DBus serial=6 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',path='/org/freedesktop/DBus',arg0='org.gtk.vfs.Daemon'"
method return time=1545640115.195914 sender=org.freedesktop.DBus -> destination=:1.38 serial=6 reply_serial=6
method call time=1545640115.517371 sender=:1.39 -> destination=org.freedesktop.DBus serial=1 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=Hello
method return time=1545640115.517391 sender=org.freedesktop.DBus -> destination=:1.39 serial=1 reply_serial=1
   string ":1.39"
signal time=1545640115.517402 sender=org.freedesktop.DBus -> destination=(null destination) serial=6 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string ":1.39"
   string ""
   string ":1.39"
signal time=1545640115.517415 sender=org.freedesktop.DBus -> destination=:1.39 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.39"
method call time=1545640115.517540 sender=:1.39 -> destination=org.freedesktop.DBus serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetNameOwner
   string "org.gnome.SessionManager"
error time=1545640115.517559 sender=org.freedesktop.DBus -> destination=:1.39 error_name=org.freedesktop.DBus.Error.NameHasNoOwner reply_serial=2
   string "Could not get owner of name 'org.gnome.SessionManager': no such name"
signal time=1545640115.517768 sender=org.freedesktop.DBus -> destination=:1.39 serial=7 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameLost
   string ":1.39"
signal time=1545640115.517785 sender=org.freedesktop.DBus -> destination=(null destination) serial=8 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string ":1.39"
   string ":1.39"
   string ""
method call time=1545640115.700885 sender=:1.40 -> destination=org.freedesktop.DBus serial=1 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=Hello
method return time=1545640115.700910 sender=org.freedesktop.DBus -> destination=:1.40 serial=1 reply_serial=1
   string ":1.40"
signal time=1545640115.700932 sender=org.freedesktop.DBus -> destination=(null destination) serial=9 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string ":1.40"
   string ""
   string ":1.40"
signal time=1545640115.700955 sender=org.freedesktop.DBus -> destination=:1.40 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.40"
method call time=1545640115.701066 sender=:1.40 -> destination=org.freedesktop.DBus serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal', path='/org/freedesktop/DBus/Local',interface='org.freedesktop.DBus.Local', member='Disconnected'"
method return time=1545640115.701105 sender=org.freedesktop.DBus -> destination=:1.40 serial=3 reply_serial=2
method call time=1545640115.701251 sender=:1.40 -> destination=org.freedesktop.DBus serial=3 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=ListNames
method return time=1545640115.701266 sender=org.freedesktop.DBus -> destination=:1.40 serial=4 reply_serial=3
   array [
      string "org.freedesktop.DBus"
      string "org.freedesktop.Notifications"
      string ":1.7"
      string "org.freedesktop.network-manager-applet"
      string ":1.8"
      string ":1.9"
      string ":1.40"
      string "org.freedesktop.systemd1"
      string "org.a11y.Bus"
      string ":1.24"
      string ":1.0"
      string "org.gtk.vfs.Daemon"
      string ":1.15"
      string ":1.2"
      string ":1.38"
      string ":1.27"
      string ":1.3"
      string ":1.28"
      string ":1.4"
      string ":1.5"
      string ":1.6"
   ]
method call time=1545640115.701515 sender=:1.40 -> destination=org.freedesktop.DBus serial=4 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch
   string "type='signal', path='/org/freedesktop/DBus/Local',interface='org.freedesktop.DBus.Local', member='Disconnected'"
method return time=1545640115.701535 sender=org.freedesktop.DBus -> destination=:1.40 serial=5 reply_serial=4
signal time=1545640115.701697 sender=org.freedesktop.DBus -> destination=:1.40 serial=10 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameLost
   string ":1.40"
signal time=1545640115.701717 sender=org.freedesktop.DBus -> destination=(null destination) serial=11 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string ":1.40"
   string ":1.40"
   string ""

@Sandmonster By “properly plugged into i3” I meant if i3 does properly handle the instructions to reduce mattermost to the systray. Even if we see packets travelling from mattermost via dbus, this doesn’t mean i3 can interpret this properly and know what to do with such an information (i.e. like in event based programming: does i3 is really registered to this kind of dbus event?).

Do you have any other app to test to see whether i3 is the culprit here?

@wget I start telegram-desktop with -startintray option and it does start minimized in tray. I also have a dropbox package which is also starts in systray on startup. This makes me think there might be something wrong with mattermost way of implementing minimization.

Here is dbus-monitor output of telegram launch:

method call time=1545772603.802713 sender=:1.86 -> destination=org.freedesktop.DBus serial=1 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=Hello
method return time=1545772603.802755 sender=org.freedesktop.DBus -> destination=:1.86 serial=1 reply_serial=1
   string ":1.86"
signal time=1545772603.802834 sender=org.freedesktop.DBus -> destination=(null destination) serial=5 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string ":1.86"
   string ""
   string ":1.86"
signal time=1545772603.802985 sender=org.freedesktop.DBus -> destination=:1.86 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.86"
method call time=1545772603.803645 sender=:1.86 -> destination=org.freedesktop.DBus serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',path='/org/freedesktop/DBus',arg0='org.gtk.vfs.Daemon'"
method return time=1545772603.803711 sender=org.freedesktop.DBus -> destination=:1.86 serial=3 reply_serial=2
method call time=1545772603.803906 sender=:1.86 -> destination=org.freedesktop.DBus serial=3 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=StartServiceByName
   string "org.gtk.vfs.Daemon"
   uint32 0
method return time=1545772603.803964 sender=org.freedesktop.DBus -> destination=:1.86 serial=4 reply_serial=3
   uint32 2
method call time=1545772603.804440 sender=:1.86 -> destination=org.freedesktop.DBus serial=4 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetNameOwner
   string "org.gtk.vfs.Daemon"
method return time=1545772603.804490 sender=org.freedesktop.DBus -> destination=:1.86 serial=5 reply_serial=4
   string ":1.3"
method call time=1545772603.804938 sender=:1.86 -> destination=:1.3 serial=5 path=/org/gtk/vfs/mounttracker; interface=org.gtk.vfs.MountTracker; member=ListMountableInfo
method return time=1545772603.805827 sender=:1.3 -> destination=:1.86 serial=63 reply_serial=5
   array [
      struct {
         string "davs+sd"
         string "davs+sd"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "dav+sd"
         string "dav+sd"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "cdda"
         string "cdda"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "afp-server"
         string "afp"
         array [
         ]
         int32 548
         boolean true
      }
      struct {
         string "dns-sd"
         string "dns-sd"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "afp-volume"
         string "afp"
         array [
         ]
         int32 548
         boolean true
      }
      struct {
         string "http"
         string "http"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "computer"
         string "computer"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "ftp"
         string "ftp"
         array [
         ]
         int32 21
         boolean true
      }
      struct {
         string "trash"
         string "trash"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "archive"
         string "archive"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "ftps"
         string "ftps"
         array [
         ]
         int32 21
         boolean true
      }
      struct {
         string "localtest"
         string "localtest"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "admin"
         string "admin"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "recent"
         string "recent"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "davs"
         string "davs"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "dav"
         string "dav"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "ftpis"
         string "ftpis"
         array [
         ]
         int32 990
         boolean true
      }
      struct {
         string "burn"
         string "burn"
         array [
         ]
         int32 0
         boolean false
      }
      struct {
         string "sftp"
         string "sftp"
         array [
            string "ssh"
         ]
         int32 22
         boolean true
      }
      struct {
         string "network"
         string "network"
         array [
         ]
         int32 0
         boolean false
      }
   ]
method call time=1545772603.808193 sender=:1.86 -> destination=org.freedesktop.DBus serial=6 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',path='/org/freedesktop/DBus',arg0='org.gtk.vfs.Daemon'"
method return time=1545772603.808274 sender=org.freedesktop.DBus -> destination=:1.86 serial=6 reply_serial=6
method call time=1545772605.983477 sender=:1.87 -> destination=org.freedesktop.DBus serial=1 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=Hello
method return time=1545772605.983525 sender=org.freedesktop.DBus -> destination=:1.87 serial=1 reply_serial=1
   string ":1.87"
signal time=1545772605.983552 sender=org.freedesktop.DBus -> destination=(null destination) serial=6 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string ":1.87"
   string ""
   string ":1.87"
signal time=1545772605.983712 sender=org.freedesktop.DBus -> destination=:1.87 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.87"
method call time=1545772605.984173 sender=:1.87 -> destination=org.freedesktop.DBus serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.a11y.Bus',arg1=''"
method call time=1545772605.984534 sender=:1.87 -> destination=org.freedesktop.DBus serial=3 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameHasOwner
   string "org.a11y.Bus"
method return time=1545772605.984586 sender=org.freedesktop.DBus -> destination=:1.87 serial=3 reply_serial=3
   boolean true
method call time=1545772605.985029 sender=:1.87 -> destination=org.freedesktop.DBus serial=4 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.a11y.Bus'"
method call time=1545772605.985223 sender=:1.87 -> destination=org.freedesktop.DBus serial=5 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetNameOwner
   string "org.a11y.Bus"
method return time=1545772605.985287 sender=org.freedesktop.DBus -> destination=:1.87 serial=4 reply_serial=5
   string ":1.6"
method call time=1545772605.985586 sender=:1.87 -> destination=org.a11y.Bus serial=6 path=/org/a11y/bus; interface=org.freedesktop.DBus.Properties; member=Get
   string "org.a11y.Status"
   string "ScreenReaderEnabled"
method return time=1545772606.012533 sender=:1.6 -> destination=:1.87 serial=10 reply_serial=6
   variant       boolean false
method call time=1545772606.578848 sender=:1.87 -> destination=org.freedesktop.DBus serial=7 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.kde.StatusNotifierWatcher',arg1=''"
method call time=1545772606.609661 sender=:1.87 -> destination=org.kde.StatusNotifierWatcher serial=8 path=/StatusNotifierWatcher; interface=org.freedesktop.DBus.Introspectable; member=Introspect
error time=1545772606.609708 sender=org.freedesktop.DBus -> destination=:1.87 error_name=org.freedesktop.DBus.Error.ServiceUnknown reply_serial=8
   string "The name org.kde.StatusNotifierWatcher was not provided by any .service files"
method call time=1545772606.610404 sender=:1.87 -> destination=org.freedesktop.DBus serial=9 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.kde.StatusNotifierWatcher'"
method call time=1545772606.610836 sender=:1.87 -> destination=org.freedesktop.DBus serial=10 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetNameOwner
   string "org.kde.StatusNotifierWatcher"
error time=1545772606.610934 sender=org.freedesktop.DBus -> destination=:1.87 error_name=org.freedesktop.DBus.Error.NameHasNoOwner reply_serial=10
   string "Could not get owner of name 'org.kde.StatusNotifierWatcher': no such name"
method call time=1545772606.611177 sender=:1.87 -> destination=org.freedesktop.DBus serial=11 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.kde.StatusNotifierWatcher'"
method call time=1545772606.611363 sender=:1.87 -> destination=org.freedesktop.DBus serial=12 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.freedesktop.DBus'"
error time=1545772606.611518 sender=org.freedesktop.DBus -> destination=:1.87 error_name=org.freedesktop.DBus.Error.MatchRuleNotFound reply_serial=12
   string "The given match rule wasn't found and can't be removed"
method call time=1545772606.611552 sender=:1.87 -> destination=org.freedesktop.DBus serial=13 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.kde.StatusNotifierWatcher',arg1=''"

And here is the dropbox launch:

method call time=1545773364.531956 sender=:1.90 -> destination=org.freedesktop.DBus serial=1 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=Hello
method return time=1545773364.532011 sender=org.freedesktop.DBus -> destination=:1.90 serial=1 reply_serial=1
   string ":1.90"
signal time=1545773364.532044 sender=org.freedesktop.DBus -> destination=(null destination) serial=5 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string ":1.90"
   string ""
   string ":1.90"
signal time=1545773364.532150 sender=org.freedesktop.DBus -> destination=:1.90 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.90"
method call time=1545773364.532768 sender=:1.90 -> destination=org.freedesktop.DBus serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.a11y.Bus',arg1=''"
method call time=1545773364.532988 sender=:1.90 -> destination=org.freedesktop.DBus serial=3 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameHasOwner
   string "org.a11y.Bus"
method return time=1545773364.533058 sender=org.freedesktop.DBus -> destination=:1.90 serial=3 reply_serial=3
   boolean true
method call time=1545773364.533476 sender=:1.90 -> destination=org.freedesktop.DBus serial=4 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetNameOwner
   string "org.a11y.Bus"
method return time=1545773364.533519 sender=org.freedesktop.DBus -> destination=:1.90 serial=4 reply_serial=4
   string ":1.6"
method call time=1545773364.533876 sender=:1.90 -> destination=org.freedesktop.DBus serial=5 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.a11y.Bus'"
method call time=1545773364.533976 sender=:1.90 -> destination=org.a11y.Bus serial=6 path=/org/a11y/bus; interface=org.freedesktop.DBus.Properties; member=Get
   string "org.a11y.Status"
   string "ScreenReaderEnabled"
method return time=1545773364.534484 sender=:1.6 -> destination=:1.90 serial=11 reply_serial=6
   variant       boolean false
method call time=1545773364.581345 sender=:1.90 -> destination=org.freedesktop.DBus serial=7 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetNameOwner
   string "org.freedesktop.Notifications"
method return time=1545773364.581453 sender=org.freedesktop.DBus -> destination=:1.90 serial=5 reply_serial=7
   string ":1.8"
method call time=1545773364.581621 sender=:1.90 -> destination=org.freedesktop.Notifications serial=8 path=/org/freedesktop/Notifications; interface=org.freedesktop.DBus.Introspectable; member=Introspect
method return time=1545773364.582529 sender=:1.8 -> destination=:1.90 serial=35 reply_serial=8
   string "<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
                      "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<!-- GDBus 2.58.2 -->
<node>
  <interface name="org.freedesktop.DBus.Properties">
    <method name="Get">
      <arg type="s" name="interface_name" direction="in"/>
      <arg type="s" name="property_name" direction="in"/>
      <arg type="v" name="value" direction="out"/>
    </method>
    <method name="GetAll">
      <arg type="s" name="interface_name" direction="in"/>
      <arg type="a{sv}" name="properties" direction="out"/>
    </method>
    <method name="Set">
      <arg type="s" name="interface_name" direction="in"/>
      <arg type="s" name="property_name" direction="in"/>
      <arg type="v" name="value" direction="in"/>
    </method>
    <signal name="PropertiesChanged">
      <arg type="s" name="interface_name"/>
      <arg type="a{sv}" name="changed_properties"/>
      <arg type="as" name="invalidated_properties"/>
    </signal>
  </interface>
  <interface name="org.freedesktop.DBus.Introspectable">
    <method name="Introspect">
      <arg type="s" name="xml_data" direction="out"/>
    </method>
  </interface>
  <interface name="org.freedesktop.DBus.Peer">
    <method name="Ping"/>
    <method name="GetMachineId">
      <arg type="s" name="machine_uuid" direction="out"/>
    </method>
  </interface>
  <interface name="org.freedesktop.Notifications">
    <method name="GetCapabilities">
      <arg type="as" name="capabilities" direction="out">
      </arg>
    </method>
    <method name="Notify">
      <arg type="s" name="app_name" direction="in">
      </arg>
      <arg type="u" name="replaces_id" direction="in">
      </arg>
      <arg type="s" name="app_icon" direction="in">
      </arg>
      <arg type="s" name="summary" direction="in">
      </arg>
      <arg type="s" name="body" direction="in">
      </arg>
      <arg type="as" name="actions" direction="in">
      </arg>
      <arg type="a{sv}" name="hints" direction="in">
      </arg>
      <arg type="i" name="expire_timeout" direction="in">
      </arg>
      <arg type="u" name="id" direction="out">
      </arg>
    </method>
    <method name="CloseNotification">
      <arg type="u" name="id" direction="in">
      </arg>
    </method>
    <method name="GetServerInformation">
      <arg type="s" name="name" direction="out">
      </arg>
      <arg type="s" name="vendor" direction="out">
      </arg>
      <arg type="s" name="version" direction="out">
      </arg>
      <arg type="s" name="spec_version" direction="out">
      </arg>
    </method>
    <signal name="NotificationClosed">
      <arg type="u" name="id">
      </arg>
      <arg type="u" name="reason">
      </arg>
    </signal>
    <signal name="ActionInvoked">
      <arg type="u" name="id">
      </arg>
      <arg type="s" name="action_key">
      </arg>
    </signal>
  </interface>
</node>
"
method call time=1545773364.585577 sender=:1.90 -> destination=org.freedesktop.DBus serial=9 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.freedesktop.Notifications'"
method call time=1545773364.585707 sender=:1.90 -> destination=org.freedesktop.Notifications serial=10 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetCapabilities
method return time=1545773364.587508 sender=:1.8 -> destination=:1.90 serial=36 reply_serial=10
   array [
      string "actions"
      string "body"
      string "body-hyperlinks"
      string "body-markup"
   ]
method call time=1545773364.588692 sender=:1.90 -> destination=org.freedesktop.DBus serial=11 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.Notifications',path='/org/freedesktop/Notifications',interface='org.freedesktop.Notifications',member='ActionInvoked'"
method call time=1545773364.589300 sender=:1.90 -> destination=org.freedesktop.DBus serial=12 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetNameOwner
   string "org.freedesktop.Notifications"
method return time=1545773364.589375 sender=org.freedesktop.DBus -> destination=:1.90 serial=6 reply_serial=12
   string ":1.8"
method call time=1545773364.589976 sender=:1.90 -> destination=org.freedesktop.DBus serial=13 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.Notifications',path='/org/freedesktop/Notifications',interface='org.freedesktop.Notifications',member='NotificationClosed'"
method call time=1545773364.596947 sender=:1.90 -> destination=org.freedesktop.DBus serial=14 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.kde.StatusNotifierWatcher',arg1=''"
method call time=1545773364.597165 sender=:1.90 -> destination=org.freedesktop.DBus serial=15 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetNameOwner
   string "org.kde.StatusNotifierWatcher"
error time=1545773364.597258 sender=org.freedesktop.DBus -> destination=:1.90 error_name=org.freedesktop.DBus.Error.NameHasNoOwner reply_serial=15
   string "Could not get owner of name 'org.kde.StatusNotifierWatcher': no such name"
method call time=1545773364.599638 sender=:1.90 -> destination=org.kde.StatusNotifierWatcher serial=16 path=/StatusNotifierWatcher; interface=org.freedesktop.DBus.Introspectable; member=Introspect
error time=1545773364.599697 sender=org.freedesktop.DBus -> destination=:1.90 error_name=org.freedesktop.DBus.Error.ServiceUnknown reply_serial=16
   string "The name org.kde.StatusNotifierWatcher was not provided by any .service files"
method call time=1545773364.602967 sender=:1.90 -> destination=org.freedesktop.DBus serial=17 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.kde.StatusNotifierWatcher'"
method call time=1545773364.603193 sender=:1.90 -> destination=org.freedesktop.DBus serial=18 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.kde.StatusNotifierWatcher'"
method call time=1545773364.603395 sender=:1.90 -> destination=org.freedesktop.DBus serial=19 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.kde.StatusNotifierWatcher',arg1=''"

I don’t know dbus internals, but the applications you are describing (telegram and dropbox) are using qt and python respectively with their own notification/systray implementation. Would you mind testing another electron based application to see whether the culprit is (again!) the electron framework?

Would you mind testing with github-desktop for example? This is a good electron candidate using the systray.
Note: please note on Arch Linux, github desktop is using node-lts-carbon which might break some other packages needing node > 10.

Github desktop doesn’t have the systray minimization feature as discussed here. Correct me if I’m wrong.

Indeed. You are right. I thought it was being the case, but it wasn’t. If you have another electron app that has systray behavior, this could be nice to test with it.

I did check all available electron apps with tray minimization and they all fail to start in tray. Thank you for helping me figuring this out. I’m gonna open issue for electron. This topic will now be marked as solved.

Great! Yet another client unsatisfied with electron. \o/
(I’m just saying that because I’m a fervent defendant of more traditional way of developing desktop apps. C++/Qt FTW!)

How can we close this question thread btw? I don’t see any button in discourse.

Issue created.
Well, maybe sooner or later Electron will become good for daily usage, cross-platform implementation is relatively a new thing in software development. It needs to be warfare tested somehow.

Seems like there is no other option to close the thread but to mark it as solved

As it was said in the issue all the electron apps decided to use minimization to implement ‘‘start hidden in tray’’ option which brings me back to the original post topic. It seems like there is no option for just starting app in tray without creating the window itself, which might be due some kind of electron limitations. So, I post a feature proposal to Mattermost forum and link this discussion.