a לi`@sddlZddlZddlZddlZddlZddlZgdZGdddeZe Z iZ da da dd d ZddZddZddddZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGd d!d!eZGd"d#d#eZeZGd$d%d%eZGd&d'd'eZGd(d)d)eZ Gd*d+d+eZ!d,d-Z"d.d/Z#ej$dd0d1krGd2d3d3eZ%ej$d4krGd5d6d6eZ&Gd7d8d8eZ'd9d:Z(e)d;kre(dS)?N)Erroropenopen_new open_new_tabgetregisterc@s eZdZdS)rN)__name__ __module__ __qualname__r r "/usr/lib64/python3.9/webbrowser.pyrsrF preferredcCsntVtdurt||gt|<|s4trB|tvrBtd|n t|Wdn1s`0YdS)Nr)_lock _tryorderregister_standard_browsers _browserslower_os_preferred_browserinsertappend)nameklassinstancerr r r rsrc Cstdur:ttdurtWdn1s00Y|durJ|g}nt}|D]}d|vrt|}|ddkrt|ddSt|SqRzt|}Wnt yt |}Yn0|ddur|dS|ddurR|dSqRt ddS)N%s&rz!could not locate runnable browser) rrrshlexsplitBackgroundBrowserGenericBrowserrrKeyError _synthesizer)ZusingZ alternativesbrowsercommandr r r r%s,$      rTcCsdtdur:ttdurtWdn1s00YtD] }t|}||||r>dSq>dS)NTF)rrrrr)urlnew autoraiserr$r r r rGs $rcCs t|dSNrrr&r r r rZsrcCs t|dSNr*r+r r r rasrcCs|d}t|sddgStj|}zt|}WntyTddgYS0|d}|r||jkrddl }| |}||_ tj||_t |d||dd|gSddgS)Nrr)rr) rshutilwhichospathbasenamerrr"copyrr)r$rcmdrr%Z controllerr3r r r r#is"     r#c@sBeZdZdgZdddZdddZd d Zd d Zed dZ dS) BaseBrowserrcCs||_||_dSN)rr2selfrr r r __init__szBaseBrowser.__init__rTcCstdSr7)NotImplementedErrorr9r&r'r(r r r rszBaseBrowser.opencCs ||dSr)r*r9r&r r r rszBaseBrowser.open_newcCs ||dSr,r*r=r r r rszBaseBrowser.open_new_tabcCs$|r |dr td|dS)N-z Invalid URL: )lstrip startswith ValueErrorr+r r r _check_urlszBaseBrowser._check_urlN)r6)rT) rr r argsr:rrr staticmethodrBr r r r r5s  r5c@seZdZddZdddZdS) r!cCsFt|tr||_dg|_n|d|_|dd|_tj|j|_dS)Nrrr) isinstancestrrrCr0r1r2r8r r r r:s    zGenericBrowser.__init__rTcstd||jgfdd|jD}z8tjdddkrRt|}ntj|dd}| WSt y~YdS0dS) Nwebbrowser.opencsg|]}|dqSrreplace.0argr+r r sz'GenericBrowser.open..winT) close_fdsF) sysauditrBrrCplatform subprocessPopenwaitOSErrorr9r&r'r(cmdlinepr r+r rs     zGenericBrowser.openN)rTrr r r:rr r r r r!s r!c@seZdZdddZdS)r rTcs|jgfdd|jD}td|z.rGrOrPT)rQstart_new_sessionF) rrCrRrSrBrTrUrVpollrXrYr r+r rs    zBackgroundBrowser.openN)rTrr r rr r r r r sr c@s@eZdZdZdZdZddgZdZdZdZ d ddZ d d d Z dS) UnixBrowserNFT%actionrc Csg}|r*|jr*t|}|j|}|r*|g}|jg||}|sD|jrLtj}nd}tj|d||jrd|pfd|dd} |rz| d} | WStj yYdS0n&|jr| durdSdSn |  SdS)NTrQstdinstdoutstderrr]F) raise_optsintr backgroundrUDEVNULLrVredirect_stdoutrWTimeoutExpiredr^) r9rCZremoter(r&Z raise_optoptrZZinoutr[rcr r r _invokes0         zUnixBrowser._invokercstd|dkr|jnB|dkr,|jn2|dkrN|jdurF|jq^|jntdd||dfdd |jD}d d |D}| |d |}|sʇfd d |j D}| |d d Sd SdS)NrGrrr-zBad 'new' parameter to open(); zexpected 0, 1, or 2, got %sracs g|]}|ddqS)rarrIrKactionr&r r rNsz$UnixBrowser.open..cSsg|] }|r|qSr r rKr r r rNTcsg|]}|dqSrHrIrKr+r r rN rrF) rRrS remote_actionremote_action_newwinremote_action_newtabrrBrJ remote_argsrorC)r9r&r'r(rCsuccessr rpr r s,   zUnixBrowser.open)N)rT) rr r rgrirkrvrsrtrurorr r r r r`s #r`c@s$eZdZddgZdZdZdZdZdS)Mozillararr6z -new-windowz-new-tabTNrr r rvrsrtrurir r r r rx&s rxc@s,eZdZddgZddgZdZdZdZdZd S) Netscape-noraisez-raise-remoteopenURL(%s%action)r6 ,new-window,new-tabTN) rr r rgrvrsrtrurir r r r rz0s rzc@s(eZdZddgZddgZdZdZdZdS) Galeonr{r6rar-nz-wTN)rr r rgrvrsrtrir r r r r;s rc@s$eZdZddgZdZdZdZdZdS)Chromerarr6 --new-windowTNryr r r r rEs rc@s$eZdZddgZdZdZdZdZdS)Operararr6rTNryr r r r rQs rc@s(eZdZddgZdZdZdZdZdZdS)Elinksr|r}r6r~rFN) rr r rvrsrtrurirkr r r r r[s rc@seZdZdddZdS) KonquerorrTcCstd||||dkr$d}nd}tj}ztjd||gd|||d}Wnty^Yn0|dSz tjdd |gd|||dd }WntyYn0|durdSz tjd d |gd|||dd }WntyYd S0|duSdS)NrGr-ZnewTabZopenURL kfmclientT)rQrcrdre konquerorz--silentrbkfmz-dF) rRrSrBrUrjrVrXrWr^)r9r&r'r(rqdevnullr[r r r rpsD            zKonqueror.openN)rTr_r r r r risrc@s&eZdZddZddZd ddZd S) Grailc Csddl}ddl}ddl}ddl}tj|d}|t d}tj| || |d}||}|stdS||j |j } |D]P} z| | Wn4tyzt| WntyYn0Yq0| SqdS)Nrz .grail-unixz-*)globpwdsockettempfiler0r1join gettempdirgetpwuidgetuidescapeAF_UNIX SOCK_STREAMconnectrXunlink) r9rrrrtempdiruserfilenameZmaybessfnr r r _find_grail_rcs,     zGrail._find_grail_rccCs&|}|sdS|||dS)Nrr)rsendclose)r9rqrr r r _remotes  z Grail._remoterTcCs<td||||r*|d|}n|d|}|S)NrGzLOADNEW zLOAD )rRrSrBr)r9r&r'r(okr r r rs   z Grail.openN)rT)rr r rrrr r r r rsrcCstdrtddtddtjvr>tdr>tddtddtjvrbtdrbtddtddtjvrtdrtdttdtdrtddtddD]}t|rt|dt|qd D]}t|rt|dt|qtd rtd ttd ntd r"td ttd d D]"}t|r&t|dt |q&td rftd dtd dD]"}t|rjt|dt |qjtdrtddt dtdrtddtdtdrtdt ddS)Nzxdg-openZGNOME_DESKTOP_SESSION_IDz gvfs-openz gnome-openZKDE_FULL_SESSIONrz x-www-browser)firefoxZ iceweaselZiceape seamonkey)zmozilla-firefoxzmozilla-firebirdfirebirdmozillanetscaperr)ZgaleonZepiphanyZ skipstone)z google-chromechromeZchromiumzchromium-browseroperaZmosaicZgrail) r.r/rr r0environrrxrzrrrr)r$r r r register_X_browserssD            rc Cs,gatjdkrNtddtdtddtdtddtdtddtdtjdddkrtd ttjtj d d d }dd dddd|fD]}t |rt|dt |qntj dstj dr$z(d}tj|tjd}|}WnttjttfyYn0|attj drt drNtddtdt drjtddtdt drtddtdt drtddtdt drtddtddtj vr(tj dtj}||D]>}|dkrt|dd}|d durt|dt|ddqdS)!NdarwinMacOSXdefaultrrZsafarirOrPzwindows-defaultZ PROGRAMFILESzC:\Program FileszInternet Explorer\IEXPLORE.EXErrrrrZDISPLAYZWAYLAND_DISPLAYz$xdg-settings get default-web-browser)reZTERMz www-browserZlinksZelinksZlynxZw3mZBROWSERr6Tr r)rrRrTrMacOSXOSAScriptWindowsDefaultr0r1rrrr.r/r rrU check_outputrjdecodestripFileNotFoundErrorCalledProcessErrorPermissionErrorNotADirectoryErrorrrr!rpathsepreverser#)Ziexplorer$r4Z raw_resultresultZ userchoicesrZr r r rsX           rrOrPc@seZdZdddZdS)rrTcCsBtd|||zt|Wnty8YdS0dSdS)NrGFT)rRrSrBr0Z startfilerXr<r r r rds   zWindowsDefault.openN)rTr_r r r r rcsrrc@seZdZddZdddZdS) rcCs ||_dSr7)rr8r r r r:szMacOSX.__init__rTc Cstd|||d|vr&d|}tt|}|jdkrNd|dd}n<|jdkr^d }n d |d }d |dd}d |j||f}tdd}|durdS| || }| S)NrG:zfile:ropen location "%s""%22ZOmniWebr6z toWindow %drz OpenURL "%s"ztell application "%s" activate %s %s end tell osascriptwF) rRrSrBrhboolrrJr0popenwriter) r9r&r'r(scriptZtoWindowr4osapipernr r r rs(         z MacOSX.openN)rTr\r r r r rvs rc@seZdZddZdddZdS) rcCs ||_dSr7)_namer8r r r r:szMacOSXOSAScript.__init__rTcCsl|||jdkr&d|dd}nd|j|ddf}tdd}|durTdS|||}| S) Nrrrrz tell application "%s" activate open location "%s" end rrF)rBrrJr0rrr)r9r&r'r(rrrnr r r rs    zMacOSXOSAScript.openN)rTr\r r r r rsrc Csddl}dtjd}z|tjddd\}}WnL|jy}z2t|tjdt|tjdtdWYd}~n d}~00d}|D]"\}}|dkrd}q|dkrd}qt|dkrt|tjdtd|d}t||td dS) NrzDUsage: %s [-n | -t] url -n: open new window -t: open new tabrZntd)filerz-tr-) getoptrRargverrorprintreexitlenr) rusageZoptsrCmsgZnew_winoar&r r r mains(     r__main__)N)N)rT)*r0rr.rRrU threading__all__ ExceptionrRLockrrrrrrrrrr#objectr5r!r r`rxrzrrZChromiumrrrrrrrTrrrrrr r r r sP " "Q     67AK 0