elementary / applications-menu

Applications Menu for elementary OS and the Pantheon desktop environment
https://elementary.io
GNU General Public License v3.0
103 stars 35 forks source link

AppSystem: Switch to GLib.AppInfoMonitor #496

Closed davidmhewitt closed 3 years ago

davidmhewitt commented 3 years ago

Fixes #440 (well, it should but I haven't 100% confirmed it yet because I need to install this on a clean install) Fixes https://github.com/elementary/appcenter/issues/1120

This is the equivalent of #451 , but for the grid and list views instead of the search results views.

Desktop files (and any changes to them) are now read via standard GLib libraries instead of via libgnome-menu which didn't seem to be noticing when you installed a flatpak for the first time.

Pros:

Cons:

davidmhewitt commented 3 years ago

@davidak and/or @worldofpeace could you see if this branch improves the situation of new apps appearing when you install them on NixOS? As described in #182

davidak commented 3 years ago

@davidmhewitt thanks a lot for thinking of us! :sparkles:

worldofpeace is not around anymore. pantheon on nixos in now maintained by @bobby285271 and me.

we can apply this pr as patch and try it out. (@bobby285271 can you apply the patch in the PR?)

davidak commented 3 years ago

It does not fix the issue. In addition, when a program is uninstalled and still show up in the menu and i search, wingpanel crash!

See this screen recording: https://youtu.be/f61_ugF8m3s?t=192

Journal:

typed one letter in app menu search, wingpanel crash ``` Aug 22 09:56:42 gaming kernel: .io.elementary.[7068]: segfault at 68 ip 00007fd59651af00 sp 00007ffc0ca32af8 error 4 in libgio-2.0.so.0.6800.3[7fd596490000+106000] Aug 22 09:56:42 gaming kernel: Code: 5d 41 5c c3 66 0f 1f 44 00 00 48 8b 47 20 c3 66 66 2e 0f 1f 84 00 00 00 00 00 48 8b 87 a0 00 00 00 c3 0f 1f 84 00 00 00 00 00 <48> 8b 47 68 c3 66 66 2e 0f 1f 84 00 00 00 00 00 48 8b 47 40 c3 66 Aug 22 09:56:42 gaming systemd[1]: Started Process Core Dump (PID 8697/UID 0). Aug 22 09:56:43 gaming systemd-coredump[8698]: [🡕] Process 7068 (.io.elementary.) of user 1000 dumped core. Aug 22 09:56:43 gaming systemd[1]: systemd-coredump@4-8697-0.service: Succeeded. Aug 22 09:56:43 gaming systemd[1]: systemd-coredump@4-8697-0.service: Consumed 1.140s CPU time, no IP traffic. Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmAutostartApp: (pid:7068) done (signal:11) Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: WARNING: Application 'io.elementary.wingpanel.desktop' killed by signal 11 Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): Component 'io.elementary.wingpanel.desktop' is autorestart, ignoring died signal Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmManager: disconnect client Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmManager: disconnect client: /org/gnome/SessionManager/Client22 Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmManager: restarting app Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): Re-starting app: /org/gnome/SessionManager/App44 Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmAutostartApp: Couldn't stop app: Not running Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): Starting app: /org/gnome/SessionManager/App44 Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmAutostartApp: starting io.elementary.wingpanel.desktop: command=io.elementary.wingpanel startup-id=10319904f0c82867f4162961887525935100000068130042 Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: GnomeDesktop-DEBUG(+): Not systemd managed, will not move PID 8704 into transient scope Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmAutostartApp: started pid:8704 Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmStore: Unreffing object: 0x20553c0 Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmManager: Client removed: /org/gnome/SessionManager/Client22 Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmClient: disposing /org/gnome/SessionManager/Client22 Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): GsmAutostartApp: (pid:7068) done (signal:11) Aug 22 09:56:43 gaming gnome-session-binary[6813]: WARNING: Application 'io.elementary.wingpanel.desktop' killed by signal 11 Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): Component 'io.elementary.wingpanel.desktop' is autorestart, ignoring died signal Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): GsmManager: disconnect client Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): GsmManager: disconnect client: /org/gnome/SessionManager/Client22 Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): GsmManager: restarting app Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): Re-starting app: /org/gnome/SessionManager/App44 Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): GsmAutostartApp: Couldn't stop app: Not running Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): Starting app: /org/gnome/SessionManager/App44 Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): GsmAutostartApp: starting io.elementary.wingpanel.desktop: command=io.elementary.wingpanel startup-id=10319904f0c82867f4162961887525935100000068130042 Aug 22 09:56:43 gaming gnome-session-binary[6813]: GnomeDesktop-DEBUG(+): Not systemd managed, will not move PID 8704 into transient scope Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): GsmAutostartApp: started pid:8704 Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): GsmStore: Unreffing object: 0x20553c0 Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): GsmManager: Client removed: /org/gnome/SessionManager/Client22 Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): GsmClient: disposing /org/gnome/SessionManager/Client22 Aug 22 09:56:43 gaming .io.elementary.[8704]: invalid (NULL) pointer instance Aug 22 09:56:43 gaming .io.elementary.[8704]: g_signal_connect_object: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed Aug 22 09:56:43 gaming .io.elementary.[8704]: ((../src/libnm-core-impl/nm-connection.c:342)): assertion '' failed Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmManager: RegisterClient 10319904f0c82867f4162961887525935100000068130042 Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): GsmManager: RegisterClient 10319904f0c82867f4162961887525935100000068130042 Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmManager: Adding new client 10319904f0c82867f4162961887525935100000068130042 to session Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): GsmManager: Adding new client 10319904f0c82867f4162961887525935100000068130042 to session Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): uid = 1000 Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): pid = 8704 Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): uid = 1000 Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): exporting client to object path: /org/gnome/SessionManager/Client29 Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): exporting dbus client to object path: /org/gnome/SessionManager/Client29 Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmStore: Adding object id /org/gnome/SessionManager/Client29 to store Aug 22 09:56:43 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmManager: Client added: /org/gnome/SessionManager/Client29 Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): pid = 8704 Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): exporting client to object path: /org/gnome/SessionManager/Client29 Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): exporting dbus client to object path: /org/gnome/SessionManager/Client29 Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): GsmStore: Adding object id /org/gnome/SessionManager/Client29 to store Aug 22 09:56:43 gaming gnome-session-binary[6813]: DEBUG(+): GsmManager: Client added: /org/gnome/SessionManager/Client29 Aug 22 09:56:43 gaming .io.elementary.[8704]: gtk_widget_set_no_show_all: assertion 'GTK_IS_WIDGET (widget)' failed Aug 22 09:56:43 gaming .io.elementary.[8704]: gtk_widget_show: assertion 'GTK_IS_WIDGET (widget)' failed ```
wingpanel does start again. when i click then on app menu, it crash again and does not come back ``` Aug 22 09:57:00 gaming .io.elementary.[8704]: DBusService.vala:64: Service registration suceeded Aug 22 09:57:00 gaming kernel: traps: pool-.io.elemen[8763] general protection fault ip:7fe6e350a50f sp:7fe65bffe8d0 error:0 in libc-2.33.so[7fe6e34a8000+143000] Aug 22 09:57:00 gaming systemd[1]: Starting Cleanup of Temporary Directories... Aug 22 09:57:00 gaming systemd[1]: Started Process Core Dump (PID 8808/UID 0). Aug 22 09:57:00 gaming systemd[1]: systemd-tmpfiles-clean.service: Succeeded. Aug 22 09:57:00 gaming systemd[1]: Finished Cleanup of Temporary Directories. Aug 22 09:57:01 gaming systemd-coredump[8810]: [🡕] Process 8704 (.io.elementary.) of user 1000 dumped core. Aug 22 09:57:01 gaming systemd[1]: systemd-coredump@5-8808-0.service: Succeeded. Aug 22 09:57:01 gaming systemd[1]: systemd-coredump@5-8808-0.service: Consumed 1.214s CPU time, no IP traffic. Aug 22 09:57:01 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmAutostartApp: (pid:8704) done (signal:11) Aug 22 09:57:01 gaming gnome-session-binary[6813]: DEBUG(+): GsmAutostartApp: (pid:8704) done (signal:11) Aug 22 09:57:01 gaming xsession[6813]: gnome-session-binary[6813]: WARNING: Application 'io.elementary.wingpanel.desktop' killed by signal 11 Aug 22 09:57:01 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): Component 'io.elementary.wingpanel.desktop' is autorestart, ignoring died signal Aug 22 09:57:01 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmManager: disconnect client Aug 22 09:57:01 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmManager: disconnect client: /org/gnome/SessionManager/Client29 Aug 22 09:57:01 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmManager: restarting app Aug 22 09:57:01 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): Re-starting app: /org/gnome/SessionManager/App44 Aug 22 09:57:01 gaming xsession[6813]: gnome-session-binary[6813]: WARNING: App 'io.elementary.wingpanel.desktop' respawning too quickly Aug 22 09:57:01 gaming xsession[6813]: gnome-session-binary[6813]: WARNING: Error on restarting session managed app: Component 'io.elementary.wingpanel.desktop' crashing too quickly Aug 22 09:57:01 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmStore: Unreffing object: 0x2078070 Aug 22 09:57:01 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmManager: Client removed: /org/gnome/SessionManager/Client29 Aug 22 09:57:01 gaming xsession[6813]: gnome-session-binary[6813]: DEBUG(+): GsmClient: disposing /org/gnome/SessionManager/Client29 Aug 22 09:57:01 gaming gnome-session-binary[6813]: WARNING: Application 'io.elementary.wingpanel.desktop' killed by signal 11 Aug 22 09:57:01 gaming gnome-session-binary[6813]: DEBUG(+): Component 'io.elementary.wingpanel.desktop' is autorestart, ignoring died signal Aug 22 09:57:01 gaming gnome-session-binary[6813]: DEBUG(+): GsmManager: disconnect client Aug 22 09:57:01 gaming gnome-session-binary[6813]: DEBUG(+): GsmManager: disconnect client: /org/gnome/SessionManager/Client29 Aug 22 09:57:01 gaming gnome-session-binary[6813]: DEBUG(+): GsmManager: restarting app Aug 22 09:57:01 gaming gnome-session-binary[6813]: DEBUG(+): Re-starting app: /org/gnome/SessionManager/App44 Aug 22 09:57:01 gaming gnome-session-binary[6813]: WARNING: App 'io.elementary.wingpanel.desktop' respawning too quickly Aug 22 09:57:01 gaming gnome-session-binary[6813]: WARNING: Error on restarting session managed app: Component 'io.elementary.wingpanel.desktop' crashing too quickly Aug 22 09:57:01 gaming gnome-session-binary[6813]: DEBUG(+): GsmStore: Unreffing object: 0x2078070 Aug 22 09:57:01 gaming gnome-session-binary[6813]: DEBUG(+): GsmManager: Client removed: /org/gnome/SessionManager/Client29 Aug 22 09:57:01 gaming gnome-session-binary[6813]: DEBUG(+): GsmClient: disposing /org/gnome/SessionManager/Client29 ```

When vlc is installed on NixOS, the binary is symlinked to /run/current-system/sw/bin/vlc which is in the PATH. The desktop file is in /run/current-system/sw/share/applications/vlc.desktop. Maybe it has to be aware of that or we would need a patch?

davidmhewitt commented 3 years ago

@davidak Thanks for testing!

That "Execute 'vlc'" entry that appears when you search is something a bit different. That's because wingpanel has detected that there's an executable in the PATH called vlc, but it hasn't picked up on the new .desktop file to properly show it as an application in the menu. If this and #451 were werking properly on NixOS, you'd expect to see a VLC entry with an icon in both the browse and search views.

However, it seems odd that the crash you show would be related to this branch as this doesn't touch any of the search code. Are you able to confirm whether that same crash happens without this patch?

As for fixing the original issue here, what is the XDG_DATA_DIRS environment variable set to?

davidak commented 3 years ago

Are you able to confirm whether that same crash happens without this patch?

yes, it also happen without this patch

As for fixing the original issue here, what is the XDG_DATA_DIRS environment variable set to?

[davidak@gaming:~]$ echo $XDG_DATA_DIRS
/nix/store/g525y961ir5lxmgnraxgwi8myq3vfdqk-elementary-terminal-6.0.0/share:/nix/store/qvmdkg2f09pvlsdr4bqasyiy5g0mbvrd-gtk+3-3.24.30/share/gsettings-schemas/gtk+3-3.24.30:/nix/store/3iikkf41lhl0qmad4hgzsacigh7dy318-gsettings-desktop-schemas-40.0/share/gsettings-schemas/gsettings-desktop-schemas-40.0:/nix/store/g525y961ir5lxmgnraxgwi8myq3vfdqk-elementary-terminal-6.0.0/share/gsettings-schemas/elementary-terminal-6.0.0:/nix/store/qvmdkg2f09pvlsdr4bqasyiy5g0mbvrd-gtk+3-3.24.30/share:/nix/store/rpn40nh1va7h5qi5rnzkfm35qx4xfacp-elementary-icon-theme-6.0.0/share:/nix/store/wx4hg39sdz4fhcv0ibqrxcfnimcbjc7v-hicolor-icon-theme-0.17/share:/nix/store/02b1r3a635n2lfnwn7zr3i48aidvp501-cups-2.3.3/share:/nix/store/iah17gdhv1kc4brzq8lph1mi130x63wz-granite-6.1.0/share:/nix/store/c7x1n344zpxwgpd75kbqhlpmb2y3383c-elementary-dock-unstable-2021-07-16/share:/nix/store/qvmdkg2f09pvlsdr4bqasyiy5g0mbvrd-gtk+3-3.24.30/share/gsettings-schemas/gtk+3-3.24.30:/nix/store/3iikkf41lhl0qmad4hgzsacigh7dy318-gsettings-desktop-schemas-40.0/share/gsettings-schemas/gsettings-desktop-schemas-40.0:/nix/store/c7x1n344zpxwgpd75kbqhlpmb2y3383c-elementary-dock-unstable-2021-07-16/share/gsettings-schemas/elementary-dock-unstable-2021-07-16:/nix/store/yz42vy9zsr3q2m9pd4kmjdwj1b3jz9gl-elementary-session-settings-6.0.0/share:/nix/store/iflb5fmlddbk44xzbr7fk4pzgdfr2dyh-desktops/share:/home/davidak/.nix-profile/share:/etc/profiles/per-user/davidak/share:/nix/var/nix/profiles/default/share:/run/current-system/sw/share:/nix/store/kazsj4q435j887is5ds0h6dh5x233146-pantheon-agent-geoclue2-1.0.5/share/gsettings-schemas/pantheon-agent-geoclue2-1.0.5:/nix/store/8clrvfrmbb6pkr9lnpq20xh23afq4bwm-gnome-session-40.1.1/share:/nix/store/3iikkf41lhl0qmad4hgzsacigh7dy318-gsettings-desktop-schemas-40.0/share/gsettings-schemas/gsettings-desktop-schemas-40.0:/nix/store/qvmdkg2f09pvlsdr4bqasyiy5g0mbvrd-gtk+3-3.24.30/share/gsettings-schemas/gtk+3-3.24.30:/nix/store/x86flsipciznq893xybyx30dhidi8avc-gnome-settings-daemon-40.0.1/share/gsettings-schemas/gnome-settings-daemon-40.0.1:/nix/store/8clrvfrmbb6pkr9lnpq20xh23afq4bwm-gnome-session-40.1.1/share/gsettings-schemas/gnome-session-40.1.1:/nix/store/h76lkz35bdcb6gs9xxs7l6qf1wpvfhvc-gnome-shell-40.4/share