a DOg^@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@s6eZdZdgZdddZdddZd d Zd d Zd S) 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_tabN)r6)rT)rr r argsr:rrrr r r r r5s   r5c@seZdZddZdddZdS) r!cCsFt|tr||_dg|_n|d|_|dd|_tj|j|_dS)Nrrr) isinstancestrrr>r0r1r2r8r r r r:s    zGenericBrowser.__init__rTcsztd|jgfdd|jD}z8tjdddkrHt|}ntj|dd}| WStytYdS0dS) Nwebbrowser.opencsg|]}|dqSrreplace.0argr+r r sz'GenericBrowser.open..winT) close_fdsF) sysauditrr>platform 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}tdz.rArIrJT)rKstart_new_sessionF) rr>rLrMrNrOrPpollrRrSr 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)NTrKstdinstdoutstderrrWF) raise_optsintr backgroundrODEVNULLrPredirect_stdoutrQTimeoutExpiredrX) r9r>Zremoter(r&Z raise_optoptrTZinoutrUrcr r r _invokes0         zUnixBrowser._invokercstd|dkr|jnB|dkr,|jn2|dkrN|jdurF|jq^|jntdd|fdd|jD}d d|D}||d |}|sfd d|jD}||d d Sd SdS) NrArrr-zBad 'new' parameter to open(); zexpected 0, 1, or 2, got %scs g|]}|ddqS)rr[rCrEactionr&r r rHsz$UnixBrowser.open..cSsg|] }|r|qSr r rEr r r rHTcsg|]}|dqSrBrCrEr+r r rHrlF) rLrM remote_actionremote_action_newwinremote_action_newtabr remote_argsrir>)r9r&r'r(r>successr rjr rs*   zUnixBrowser.open)N)rT) rr r rarcrerprmrnrorirr r r r rZs #rZc@s$eZdZddgZdZdZdZdZdS)Mozillar[rr6z -new-windowz-new-tabTNrr r rprmrnrorcr r r r rrs rrc@s,eZdZddgZddgZdZdZdZdZd S) Netscape-noraisez-raise-remoteopenURL(%s%action)r6 ,new-window,new-tabTN) rr r rarprmrnrorcr r r r rt&s rtc@s(eZdZddgZddgZdZdZdZdS) Galeonrur6r[r-nz-wTN)rr r rarprmrnrcr r r r rz1s rzc@s$eZdZddgZdZdZdZdZdS)Chromer[rr6 --new-windowTNrsr r r r r|;s r|c@s$eZdZddgZdZdZdZdZdS)Operar[rr6r}TNrsr r r r r~Gs r~c@s(eZdZddgZdZdZdZdZdZdS)Elinksrvrwr6rxryFN) rr r rprmrnrorcrer r r r rQs rc@seZdZdddZdS) KonquerorrTcCstd||dkrd}nd}tj}ztjd||gd|||d}WntyTYn0|dSz tjdd |gd|||dd }WntyYn0|durdSz tjd d |gd|||dd }WntyYd S0|duSdS)NrAr-ZnewTabZopenURL kfmclientT)rKr]r^r_ konquerorz--silentr\kfmz-dF)rLrMrOrdrPrRrQrX)r9r&r'r(rkdevnullrUr r r rfsB           zKonqueror.openN)rTrYr r r r r_src@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_STREAMconnectrRunlink) r9rrrrtempdiruserfilenameZmaybessfnr r r _find_grail_rcs,     zGrail._find_grail_rccCs&|}|sdS|||dS)Nrr)rsendclose)r9rkrr r r _remotes  z Grail._remoterTcCs2td||r |d|}n|d|}|S)NrAzLOADNEW zLOAD )rLrMr)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 r0environrrrrtrzr|r~r)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)!NdarwinMacOSXdefaultrrZsafarirIrJzwindows-defaultZ PROGRAMFILESzC:\Program FileszInternet Explorer\IEXPLORE.EXErrrrrZDISPLAYZWAYLAND_DISPLAYz$xdg-settings get default-web-browser)r_ZTERMz www-browserZlinksZelinksZlynxZw3mZBROWSERr6Tr r)rrLrNrMacOSXOSAScriptWindowsDefaultr0r1rrrr.r/r rrO check_outputrddecodestripFileNotFoundErrorCalledProcessErrorPermissionErrorNotADirectoryErrorrrr!rpathsepreverser#)Ziexplorer$r4Z raw_resultresultZ userchoicesrTr r r r sX           rrIrJc@seZdZdddZdS)rrTcCs8td|zt|Wnty.YdS0dSdS)NrAFT)rLrMr0Z startfilerRr<r r r rXs   zWindowsDefault.openN)rTrYr r r r rWsrrc@seZdZddZdddZdS) rcCs ||_dSr7)rr8r r r r:sszMacOSX.__init__rTc Cstd|d|vrd|}tt|}|jdkrDd|dd}n<|jdkrTd }n d |d }d |dd}d |j||f}tdd}|durdS||| }| S)NrA:zfile:ropen location "%s""%22ZOmniWebr6z toWindow %drz OpenURL "%s"ztell application "%s" activate %s %s end tell osascriptwF) rLrMrbboolrrDr0popenwriter) r9r&r'r(scriptZtoWindowr4osapiperhr r r rvs&        z MacOSX.openN)rTrVr r r r ris rc@seZdZddZdddZdS) rcCs ||_dSr7)_namer8r r r r:szMacOSXOSAScript.__init__rTcCsb|jdkrd|dd}nd|j|ddf}tdd}|durJdS|||}| S) Nrrrrz tell application "%s" activate open location "%s" end rrF)rrDr0rrr)r9r&r'r(rrrhr r r rs   zMacOSXOSAScript.openN)rTrVr 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)filer{z-tr-) getoptrLargverrorprintr_exitlenr) rusageZoptsr>msgZnew_winoar&r r r mains(     r__main__)N)N)rT)*r0rr.rLrO threading__all__ ExceptionrRLockrrrrrrrrrr#objectr5r!r rZrrrtrzr|ZChromiumr~rrrrrrNrrrrrr r r r sP " "O     56AK /