
    ?g%                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZ d dl d Zd Zd	 Zd
 Zd Zd Z G d d      Zy)    N)loads)	GdkPixbuf)SidePage)util)*c                 $    | j                          y )N)kill)processs    8/usr/share/cinnamon/cinnamon-settings/modules/cs_info.pykillProcessr      s    LLN    c                 X   d}g }t        j                  | t         j                        }t        j                  |t
        |g      }|j                          	 |j                  j                         }|sn&|dk7  r |j                  |j                  d             C|j                          |S )Ng       @)stdout utf-8)
subprocessPopenPIPE	threadingTimerr   startr   readlineappenddecodecancel)commandtimeoutlinesptimerlines         r   getProcessOutr"      s    GE9AOOG[1#6E	KKM
xx  "2:LLW-.  
LLNLr   c                  :   i } d}t         j                  d   }|dz   t         j                  d<   t        d      D ]L  }dD ]E  }||v s|j                  |      d   j                  d      d   j	                         }|| |<   |dz  }G N |t         j                  d<   | S )Nr   PATHz :/usr/local/sbin:/usr/sbin:/sbinlspci)zVGA compatible controller:z3D controller:zDisplay controller:   z(rev)osenvironr"   splitstrip)cardscountenvpathcardprefixcardNames         r   getGraphicsInfosr1   '   s    EEjj G #EEBJJvg& ] 	F~::f-a066v>qAGGI'e
		 !BJJvLr   c                      d} 	 t        d      }t        dj                  |            }|d   D ]  }| t        |d         z  }  | t        |d         dkD  fS # t        $ r t	        d      dfcY S w xY w)	Nr   )lsblkz--jsonz--outputsizez--bytesz--nodepsr   Unknown sizeFblockdevicesr4   r&   )r"   r   join	Exception_intlen)disksizeoutjsonobjblks       r   getDiskSizer@   6   s    H(Z[% ~& %CF$$% c'.12Q677  ( %''(s   %A A0/A0c                  >   d} dd| fddgfddgfg}i }|D ]a  \  }}t        d|f      D ]L  }|D ]E  \  }}|D ];  }|j                  |      s|j                  d	d
      d
   j                         ||<    E G N c d|vrt	        d      |d<   d|vrt	        d      |d<   |S )N)z
model nameHardware	Processorz	cpu modelz	chip typezcpu typez/proc/cpuinfocpu_name)cpu_siblings)siblings)	cpu_cores)z	cpu coresz/proc/meminfo)	mem_total)MemTotalcat:r&   zUnknown CPUrH   r5   )r"   
startswithr)   r*   r9   )		cpudetectinfosresultprocpairsr!   keyr   items	            r   getProcInfosrT   D   s     ^I	J	24SUrst	789E
 F u!5$-0 	D % e! Dt,&*jja&8&;&A&A&Cs	 }-z& /{Mr   c                     t               } g }t        j                         j                  dd      }	 | d   j	                  d      \  }}t        |      }| d   j                  dd      j                  d	d
      }d| v r|dz   | d   z   }t        j                  j                  d      ret        j                  d      }t        j                  |      j                  d      j                  d      }|j                  t!        d      |f       nt        j                  j                  d      rvt#        dd      5 }|D ]\  }	|	j%                  d      s|	j'                         t)        d      d  j'                  d      }|j                  t!        d      |f        n d d d        dt        j*                  v r-|j                  t!        d      t        j*                  d   f       |j                  t!        d      t        j,                         f       |j                  t!        d      |f       |dk(  r7|j                  t!        d      dt        |      dz  t!        d      fz  f       n|j                  t!        d      | d   f       t/               \  }
}|rt!        d      }nt!        d       }	 |j                  |d|
d!z  t!        d"      fz  f       t1               }|D ]!  }|j                  t!        d#      ||   f       # t!        d$      }t3        j4                         d%k(  rt!        d&      }|j                  t!        d'      |f       |S # t        $ r | d   }d}Y 
w xY w# 1 sw Y   xY w#  |j                  ||
f       Y xY w)(Nr9   -rH    r   rD   z(R)   ©z(TM)u   ™rG   u    × z/etc/linuxmint/infoz8awk -F "=" '/GRUB_TITLE/ {print $2}' /etc/linuxmint/infor   
zOperating Systemz/etc/os-releaserzPRETTY_NAME="CINNAMON_VERSIONzCinnamon VersionzLinux KernelrC   kBMemoryz%.1f %si   GiBzHard Drivesz
Hard Drivei ʚ;GBzGraphics CardX11waylandWaylandzDisplay Server)rT   platformmachinereplacer)   float
ValueErrorr'   pathexistsshlexr   check_outputr   rstripr   r9   openrL   r*   r;   r(   releaser@   r1   r   get_session_type)	procInfosrN   archmemsizememunitprocessorNameargstitleos_release_filer!   diskSizemultipleDisksdiskTextr+   r.   display_server_names                   r   createSystemInfosr}   ]   s'   IE%%c3/D&{399#>'. j)11%BJJ6S[\Mi%
2Y{5KK	ww~~+,{{WX''-44W=DDTJa*+U34	)	*%s+ ( OON3 JJL^)<)=>DDSIELL!$6"7!?@	 RZZ'a*+RZZ8J-KLM	LL!N#X%5%5%789	LL!K.-01$ak9w1KaPUh/W#WXYak9[#9:;)mHm]#\?+h	h..IAdG,T TUV E 8a(%+678 E()+	l	LL!$%':;<L_  K( ,+h)*s0   "M 7M"A
M",$M/ MM"M,/Nc                   B    e Zd ZdZdZ ed      Zd Zd Zd Z	d Z
d Zy	)
ModuleinfohardwarezDisplay system informationc                 Z    t        d      }t        t        d      d|||       }|| _        y )NzDsystem, information, details, graphic, sound, kernel, version, aboutzSystem Infoz
cs-details)module)r9   r   sidePage)selfcontent_boxkeywordsr   s       r   __init__zModule.__init__   s,    [\Am,lHkZ^_ r   c                    | j                   sAt        d       t               }|j                  d       | j                  j                  |       t        j                  d      }|j                  d      }|dk7  r	 d|v rBt        j                  j                  |dd	d
      }t        j                  j                  |      }nIt        j                  j                  |t        j                   j"                        }|j%                  d	       |j'                  |       t-               }|j/                         }|D ]  \  }}t1               }	|	j                  d       t        j2                  j5                  |      }
|	j7                  |
ddd       |
j9                         j;                  d       t        j2                  j5                  |      }|j=                  d
       |j?                  d
       |	jA                  |ddd       |jC                  |	        tE        jF                  d      rt1               }	t        jI                  d
      }t        jK                  tM        d      tM        d      d
|      }|jO                  d| jP                  |       |	j7                  |d
d
d       |jC                  |	       tE        jF                  d      rt1               }	t        jI                  d
      }t        jK                  tM        d      d
|      }|jO                  d| jR                  |       |	j7                  |d
d
d       |jC                  |	       y y y # t(        j*                  $ r Y Jw xY w)NzLoading Info module   zorg.cinnamon)schemazsystem-iconr   /d   T(   Fr   z	dim-labelupload-system-info)visiblezUpload system informationz No personal information included)labeltooltip_textalways_show_imageimageclickedinxizCopy to clipboard)r   r   r   )*loadedprintSettingsPageset_spacingr   
add_widgetGioSettings
get_stringr   Pixbufnew_from_file_at_scaleGtkImagenew_from_pixbufnew_from_icon_nameIconSizeDIALOGset_pixel_sizeaddGLibGErrorr}   add_sectionSettingsWidgetLabelnew
pack_startget_style_context	add_classset_selectableset_line_wrappack_endadd_rowshutilwhichSpinnerButtonr9   connecton_upload_button_clicked on_copy_clipboard_button_clicked)r   pager   
systemIconpixbufrN   settingsrR   valuewidgetlabelKey
labelValuespinnerbuttons                 r   on_module_selectedzModule.on_module_selected   s   {{'(>DR MM$$T*\\\8F**=9JR	j(!*!1!1!H!HUWY\^b!c%(YY%>%>v%F
%(YY%A%A*cllNaNa%b
"11#6HHZ( &'E'')H % 
)e')""2&99==-!!(E5!<**,66{C YY]]51
))$/((.
E5!<  (
) ||01')++d+3!,G*H123U1V6:*1 $ 3 y$*G*GQ!!&$a8  (||F#')++d+3!,?*@6:*1 $ 3 y$*O*OQXY!!&$a8  ( $c $ {{ s   <B M M'&M'c                     j                          fdfd}t        j                  |f      }|j                          y )Nc                     j                          | y t        j                  j                  t        j
                        }|j                  | j                  d      d       y )Nr   r   )stopr   	ClipboardgetGdkSELECTION_CLIPBOARDset_textr   )output	clipboardr   s     r   finished_inxiz>Module.on_copy_clipboard_button_clicked.<locals>.finished_inxi   sG    >MM--c.E.EF	""6==#92>r   c                     d }	 t        j                  ddgdt         j                        j                  }t        j                  |       y # t        $ r }t        d       t        |       Y d }~;d }~ww xY w)Nr   z
-FJxxxrzc0T)checkr   zCAn error occurred while copying the system information to clipboard)r   runr   r   r8   r   r   idle_add)r   
inxiOutputer   s      r   	_run_inxiz:Module.on_copy_clipboard_button_clicked.<locals>._run_inxi   se    !
!+0Fd[e[j[j!k!r!rJ
 mZ8	 ! _`!HHs   2A 	A7A22A7)targetrv   )r   r   Thread)r   r   r   r   inxi_threadr   s     `  @r   r   z'Module.on_copy_clipboard_button_clicked   s8    MMO?	9 $**)7*MKr   c                 B   	 t         j                  j                  dgt         j                  j                        }|j                  d | j                  |       |j                          y # t        j                  $ r"}t        d|j                  z         Y d }~y d }~ww xY w)Nr   z$upload-system-info failed to run: %s)r   
Subprocessr   SubprocessFlagsNONEwait_check_asyncon_subprocess_completer   r   Errorr   message)r   r   r   subprocr   s        r   r   zModule.on_upload_button_clicked   sz    	Fnn((*>)?ATATAYAYZG$$T4+F+FPMMOzz 	F8199DEE	Fs   A&A) )B<BBc                     |j                          	 |j                  |      }y # t        j                  $ r"}t	        d|j
                  z         Y d }~y d }~ww xY w)Nzupload-system-info failed: %s)r   wait_check_finishr   r   r   r   )r   r   rO   r   successr   s         r   r   zModule.on_subprocess_complete   sI    	?//7Gzz 	?1AII=>>	?s   $ AAAN)__name__
__module____qualname__namecategoryr9   commentr   r   r   r   r    r   r   r   r      s2    DH,-G!
;)z 4F?r   r   )rd   r   rk   r'   rer   r   jsonr   gi.repositoryr   SettingsWidgetsr   binr   xapp.GSettingsWidgetsr   r"   r1   r@   rT   r}   r   r   r   r   <module>r      sV       	 	    # $  #"826ro? o?r   