@@ -21,7 +21,8 @@ const { Clutter, Gio, GLib, Meta } = imports.gi
21
21
const { OK } = result ;
22
22
23
23
const HOME_DIR : string = GLib . get_home_dir ( ) ;
24
- const DATA_DIRS : string = GLib . get_system_data_dirs ( ) ;
24
+ const DATA_DIRS_SYSTEM : string = GLib . get_system_data_dirs ( ) ;
25
+ const DATA_DIRS_USER : string = GLib . get_user_data_dir ( ) ;
25
26
26
27
export class Launcher extends search . Search {
27
28
options : Array < launch . SearchOption >
@@ -320,14 +321,29 @@ export class Launcher extends search.Search {
320
321
load_desktop_files ( ) {
321
322
lib . bench ( "load_desktop_files" , ( ) => {
322
323
this . desktop_apps . splice ( 0 ) ;
323
- for ( const _path of DATA_DIRS ) {
324
+ for ( const _path of DATA_DIRS_USER . split ( ) . concat ( DATA_DIRS_SYSTEM ) ) {
324
325
const path = _path . replace ( / \/ $ / , '' ) + "/applications" ;
325
326
for ( const result of app_info . load_desktop_entries ( path ) ) {
326
327
if ( result . kind == OK ) {
327
328
const value = result . value ;
328
329
const existAt = this . desktop_apps . findIndex ( ( [ _ , app ] ) => app . exec ( ) == value . exec ( ) ) ;
329
330
if ( existAt == - 1 ) {
330
- this . desktop_apps . push ( [ 'System' , value ] ) ;
331
+ let appType = 'System' ;
332
+ switch ( path ) {
333
+ case ( HOME_DIR + "/.local/share/applications" ) :
334
+ appType = 'User' ;
335
+ break ;
336
+ case ( "/var/lib/flatpak/exports/share/applications" ) :
337
+ appType = 'Flatpak (System)' ;
338
+ break ;
339
+ case ( HOME_DIR + "/.local/share/flatpak/exports/share/applications" ) :
340
+ appType = 'Flatpak (User)' ;
341
+ break ;
342
+ case ( "/var/lib/snapd/desktop/applications" ) :
343
+ appType = 'Snap (System)' ;
344
+ break ;
345
+ }
346
+ this . desktop_apps . push ( [ appType , value ] ) ;
331
347
}
332
348
} else {
333
349
const why = result . value ;
0 commit comments