+
     GiM  c                   sv    ^ RI t ^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RI	H
t
 ^ RI	Ht ^ RIHt RsR
R ltR	 tR# )    N)Path)suppress)IUserMonitor)	IPlatform)GLibFc                 s  a aaaaaaa	a
aaaaa \        VR ,          4      R,          oSP                  RRR7       \        VR,          4      o\        VR,          4      R,          o. ROo
R o	R	 oVV	3R
 loR oVVV3R loVVVV
V3R loVV VVV3R loVV V3R loV VV3R lpRs\        P                  ! VR7      S n        S P
                  P                  4        R# )Zxdg_data_homeZapplicationsi  T)Zexist_okZwaydroid_user_stateZwaydroid_dataZiconsc                 s^    \        V4       F  pW 9  g   K  V P                  ^ V4       K  	  R# )r    N)ZreversedZinsert)Zold_listnew_listZss   && 0/usr/lib/waydroid/tools/services/user_manager.pyprepend_listZstart.<locals>.prepend_list*   s%    (#A 1% $    c                 s`     V P                  W4      #   \        P                   d    . u # i ; iN)Zget_string_listr   GErrorkey_filegroupkey   &&&r   glib_key_file_get_string_listZ,start.<locals>.glib_key_file_get_string_list/   s0    	++E77{{ 	I	s    --c                 sN   < S! WV4      pS! WC4       V P                  WV4       R # r
   )set_string_list)r   r   r   r   Zlstr   r   s   &&&& r   !glib_key_file_prepend_string_listZ0start.<locals>.glib_key_file_prepend_string_list5   s'    +HSAS#  S1r	   c                 sb     V P                  W4       R #   \        P                   d     R# i ; i)TF)Z	get_valuer   r   r   r   r   glib_key_file_has_valueZ&start.<locals>.glib_key_file_has_value:   s.    	u*{{ 		s    ..c            
      sx  < \        SP                  R 4      4      '       g   R# S	R,          p V P                  4       '       g,   SR,          pVP                  RR7       V P	                  4        S	R,          pVP                  4       '       Egr   SP                  R 4       EFI  p\        \        P                  4      ;_uu_ 4        \        P                  ! 4       p\        P                  P                  \        P                  P                  ,          pVP                  \        V4      V4       \        \        P                  4      ;_uu_ 4        VP                  R4       RRR4       \        \        P                  \        4      ;_uu_ 4        S! VRR	4      pVP!                  R
4       VP#                  RR	V4       RRR4       VP%                  \        V4      4       RRR4       EKL  	  VP	                  4        R# R#   + '       g   i     L; i  + '       g   i     L^; i  + '       g   i     EK  ; i)waydroid.*.desktopNz.migrated-main-desktop-filezWaydroid.desktopTZ
missing_okz%.migrated-app-settings-desktop-actionzDesktop Action app_settingsDesktop EntryActionsZapp_settings)ZanyglobZexistsunlinkZtouchr   r   r   KeyFileKeyFileFlagsKEEP_COMMENTSKEEP_TRANSLATIONSload_from_filestrZremove_groupZ
ValueErrorZremover   save_to_file)
Zmigrated_main_pathZmain_app_pathZmigrated_apps_pathappdesktop_fileflagsZactionsapps_dirr   waydroid_user_state_dirs
          r   user_migrationZstart.<locals>.user_migrationB   s   8==!567747TT!((**$'99M  D 1$$&47^^!((**}}%9:dkk**#'<<>L --;;d>O>O>a>aaE //C%@!$++..$112OP /!$++z::"?o_h"i~6$44_iQXY ; !--c#h7 +* ; $$& + /.:: +**s=   BH'H!.H'/H>"H'HH'H$H''H9c           	      sh  < V f   R # V R,          pSRV R2,          pRpV R,           F  pVP                  4       R8X  g   K  Rp M	  V'       g   VP                  RR7       R # \        P                  ! 4       p\	        \        P
                  4      ;_uu_ 4        \        P                  P                  \        P                  P                  ,          pVP                  \        V4      V4       R R R 4       VP                  R	R
R4       VP                  R	RV R,          4       VP                  R	RRV 24       VP                  R	R\        SV R2,          4      4       S	! VR	RR.4       VP                  R	RRR.4       S	! VR	RR.4       VS
9   d$   S! VR	R4      '       g   VP                  R	RR4       VP                  RRR4       VP                  RRRV 24       VP                  RR\        SR,          4      4       VP                  \        V4      4       R #   + '       g   i     EL9; i)NpackageName	waydroid..desktopFZ
categoriesz android.intent.category.LAUNCHERTr   r   ZTypeZApplicationZNamenameZExeczwaydroid app launch ZIconz.pngZ
CategorieszX-WayDroid-AppzX-Purism-FormFactorZWorkstationZMobiler   zapp-settingsZ	NoDisplayzDesktop Action app-settingszApp SettingszJwaydroid app intent android.settings.APPLICATION_DETAILS_SETTINGS package:zcom.android.settings.png)Zstripr   r   r   r   r   r   r   r   r   r    Z
set_stringr   Zset_booleanr!   )appInfor(   desktop_file_pathZshowAppZcatr#   r$   r%   r   r   system_appswaydroid_data_icons_dirs   &      r   updateDesktopFileZ start.<locals>.updateDesktopFile^   s$   ?m,$;-x'HH<((Cyy{@@ )
 $$$5||~dkk""%%33d6G6G6Y6YYE'',=(>F # 	GI;OP[}9]^=TZeYffjWk=k9lm),XhWij$$_6Km]eMfg),UcTde+%.ElTcep.q.q$$_k4H =v~V =v  JT  U`  Ta  Hb  	c =vsKbeK  HA  	B!!#&7"89% #""s   AH  H1	c                 s  < \         P                  P                  S4      p\        P                  ! R P                  V 4      4       S
! 4        VR,          R,          R8X  dJ   \        \        4      ;_uu_ 4        \         P                  P                  P                  S4       RRR4       \        P                  ! S4      pV'       dh   VP                  4       pV F  pS	! V4       K  	  SP                  R4       F1  pVP                  \!        R V4      9  g   K!  VP#                  4        K3  	  S'       d
   S! 4        R# R#   + '       g   i     L; i)zAndroid with user {} is readyZwaydroidZauto_adbZTrueNr   c                 s    R V R,           R2# )r)   r(   r*    )r,      &r   Z<lambda>Z-start.<locals>.userUnlocked.<locals>.<lambda>   s    iP]H^G__g<hr	   )toolsZconfigZloadloggingZinfoZformatr   ZRuntimeErrorZhelpersZnetZadb_connectr   get_serviceZgetAppsInfor   r+   Zmapr   )uidZcfgplatformServiceZappsListr"   Zexistingr%   argsunlocked_cbr0   r'   s   &     r   userUnlockedZstart.<locals>.userUnlocked   s    ll%4;;C@Az?:&&0,''!!--d3 ( $//5&224H!#&  $MM*>?==,hjr(ssOO% @ M  ('s   9*EE	c                 s   < \         P                  ! S4      pV'       dR   SR V R2,          pV \        P                  8X  d   VP	                  RR7       R# VP                  V4      pS! V4       R# R# )r)   r*   Tr   N)r   r5   r   ZPACKAGE_REMOVEDr   Z
getAppInfo)	Zmoder(   r6   r7   r-   r,   r%   r8   r0   s	   &&&   r   packageStateChangedZ"start.<locals>.packageStateChanged   sf    #//5 (Y{m8+L L|333!((D(9)44[A!'* r	   c                  sT   < \         '       g   \        P                  ! S SS4       K&  R # r
   )stoppingr   Zadd_service)r8   r;   r:   s   r   service_threadZstart.<locals>.service_thread   s     ($$T<9LM r	   F)ZtargetN)zcom.android.calculator2zcom.android.camera2zcom.android.contactszcom.android.deskclockzcom.android.documentsuizcom.android.emailzcom.android.gallery3dzcom.android.inputmethod.latinzcom.android.settingszcom.google.android.gmszorg.lineageos.aperturezorg.lineageos.elevenzorg.lineageos.etarzorg.lineageos.jellyzorg.lineageos.recorder)r   Zmkdirr<   	threadingZThreadZuser_managerstart)r8   Zsessionr9   r=   r%   r   r   r   r;   r   r.   r0   r:   r'   r/   r&   s   f&f @@@@@@@@@@@@r   r?   r?      s    GO,->HNN54N("7+@#AB"7?#;<wFK$&
2
'8%: %:N *+N
 H!((?Dr	   c                 s    R s  V P                  '       d   V P                  P                  4        R# R#   \         d    \        P
                  ! R4        R# i ; i)Tz'UserMonitor service is not even startedN)r<   ZuserMonitorLoopZquitZAttributeErrorr4   Zdebug)r8   r2   r   stopr@      sN    HA  %%'   A?@As   4 4 !AAr
   )r4   r>   Ztools.configr3   Ztools.helpers.netZpathlibr   Z
contextlibr   Ztools.interfacesr   r   Zgi.repositoryr   r<   r?   r@   r1   r	   r   <module>rA      s4          ) & [|Ar	   