晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/cloudlinux/venv/lib64/python3.11/site-packages/pyvirtualdisplay/ |
| Current File : //opt/cloudlinux/venv/lib64/python3.11/site-packages/pyvirtualdisplay/display.py |
from typing import Dict, List, Optional, Tuple
from pyvirtualdisplay.xephyr import XephyrDisplay
from pyvirtualdisplay.xvfb import XvfbDisplay
from pyvirtualdisplay.xvnc import XvncDisplay
_class_map = {"xvfb": XvfbDisplay, "xvnc": XvncDisplay, "xephyr": XephyrDisplay}
class Display(object):
"""
Proxy class
:param color_depth: [8, 16, 24, 32]
:param size: screen size (width,height)
:param bgcolor: background color ['black' or 'white']
:param visible: True -> Xephyr, False -> Xvfb
:param backend: 'xvfb', 'xvnc' or 'xephyr', ignores ``visible``
:param xauth: If a Xauthority file should be created.
:param manage_global_env: if True then $DISPLAY is set in os.environ
which is not thread-safe. Use False to make it thread-safe.
"""
def __init__(
self,
backend: Optional[str] = None,
visible: bool = False,
size: Tuple[int, int] = (1024, 768),
color_depth: int = 24,
bgcolor: str = "black",
use_xauth: bool = False,
# check_startup=False,
retries: int = 10,
extra_args: List[str] = [],
manage_global_env: bool = True,
**kwargs
):
self._color_depth = color_depth
self._size = size
self._bgcolor = bgcolor
self._visible = visible
self._backend = backend
if not self._backend:
if self._visible:
self._backend = "xephyr"
else:
self._backend = "xvfb"
cls = _class_map.get(self._backend)
if not cls:
raise ValueError("unknown backend: %s" % self._backend)
self._obj = cls(
size=size,
color_depth=color_depth,
bgcolor=bgcolor,
retries=retries,
use_xauth=use_xauth,
# check_startup=check_startup,
extra_args=extra_args,
manage_global_env=manage_global_env,
**kwargs
)
def start(self) -> "Display":
"""
start display
:rtype: self
"""
self._obj.start()
return self
def stop(self) -> "Display":
"""
stop display
:rtype: self
"""
self._obj.stop()
return self
def __enter__(self):
"""used by the :keyword:`with` statement"""
self.start()
return self
def __exit__(self, *exc_info):
"""used by the :keyword:`with` statement"""
self.stop()
def is_alive(self) -> bool:
return self._obj.is_alive()
# @property
# def return_code(self):
# return self._obj.return_code
@property
def pid(self) -> int:
"""
PID (:attr:`subprocess.Popen.pid`)
:rtype: int
"""
return self._obj.pid
@property
def display(self) -> int:
"""The new $DISPLAY variable as int. Example 1 if $DISPLAY=':1'"""
return self._obj.display
@property
def new_display_var(self) -> str:
"""The new $DISPLAY variable like ':1'"""
return self._obj.new_display_var
def env(self) -> Dict[str, str]:
"""env() copies global os.environ and adds disp.new_display_var"""
return self._obj._env()
|