Man Linux: Main Page and Category List

NAME

       xpra - viewer for remote, persistent X applications

SYNOPSIS

       xpra  start  :DISPLAY [--start-child=CHILD] ...  [--exit-with-children]
            [--no-daemon] [--bind-tcp=[HOST]:PORT]
       xpra  attach   [:DISPLAY   |   ssh:HOST:DISPLAY   |   tcp:HOST:DISPLAY]
            [--remote-xpra=CMD]
       xpra    stop   [:DISPLAY   |   ssh:HOST:DISPLAY   |   tcp:HOST:DISPLAY]
            [--remote-xpra=CMD]
       xpra list
       xpra upgrade :DISPLAY [...any options accepted by xpra start...]

DESCRIPTION

       Xpra is a tool which allows you to run X programs — usually on a remote
       host  — and then direct their display to your local machine, disconnect
       from these programs, and reconnect from the same  or  another  machine,
       all without losing any state.  It differs from standard X forwarding in
       that it allows disconnection and reconnection  without  disrupting  the
       forwarded  application;  it differs from VNC and similar remote display
       technologies in that xpra is rootless: i.e., applications forwarded  by
       xpra  appear  on  your desktop as normal windows managed by your window
       manager, rather than being all "trapped in a box together".  Xpra  also
       uses  a  custom  protocol  that  is self-tuning and relatively latency-
       insensitive, and thus is usable over network connections that  are  too
       slow or unreliable for standard X forwarding.

EXAMPLES

       xpra start :7
            Start an xpra server using display number :7.

       DISPLAY=:7 firefox
            Start  firefox  running  inside  the  xpra server.  No window will
            appear.

       xpra list
            Show a list of xpra servers you have running on the current  host.

       xpra attach :7
            Attach  to  the xpra server that is using local display number :7.
            Any apps running on that server will appear on your screen.

       xpra attach ssh:frodo:7
            Use ssh to attach to the xpra server that is  running  on  machine
            frodo  and using display :7.  Any apps running on that server will
            appear on your local screen.

       xpra start :7 && DISPLAY=:7 screen
            Start an xpra server and a  screen(1)  session.   If  any  of  the
            applications inside screen attempt to use X, they will be directed
            to the xpra server.

DISPLAYS

       Understanding the basic idea of displays  is  critical  to  using  xpra
       successfully.

       The idea comes from standard X.  If you have multiple X servers running
       on the same host, then there has to be some way to distinguish them.  X
       does  this  by  assigning  each  server  a small, unique integer called
       (perhaps confusingly) its "display".  In the common case of  a  desktop
       machine  that  has  only one X server running, that server uses display
       ":0" (or sometimes you’ll see ":0.0", which is effectively  the  same).
       When  an  application  starts under X, it needs to know how to find the
       right X server to  use;  it  does  this  by  checking  the  environment
       variable $DISPLAY.

       Xpra  faces  a  similar  problem  —  there may be multiple xpra servers
       running on the same host, as well as well as multiple  X  servers.   It
       solves  this  problem by re-using X’s solution — each xpra server has a
       display associated with it.   This  display  functions  as  both  an  X
       display  (for  when  xpra  is  talking  to  X  applications)  and as an
       identifier by which xpra clients (like xpra attach) can locate the xpra
       server.

       When  starting an xpra server, you must specify the name of the display
       to use.  To do this, simply pick any number you like and stick a  colon
       in  front  of it. For instance :7, :12, and :3117 are all valid display
       names.  Just keep in mind that:

       ·      Every X or xpra server that is running on a single machine  must
              use  a  different  display  name.   If you pick a number that is
              already in use then xpra will not work.

       ·      The first few numbers (0, 1, 2) are  commonly  used  by  real  X
              servers.

       ·      Everyone  who  connects  to  a given machine using ssh(1) with X
              forwarding enabled will also use a display number; ssh generally
              picks numbers near ten (10, 11, 12, ...).

       When  specifying an xpra server to a client program like xpra attach or
       xpra stop, then you can use a display of the form :NUMBER to refer to a
       server  on  the local host, or one of the form ssh:HOST:NUMBER to refer
       to a server on a remote host; xpra will automatically  connect  to  the
       remote  host using ssh(1).  Generally, if you have only one xpra server
       running on a machine, then you  can  omit  the  number  entirely;  xpra
       attach alone will attach to the lone xpra server on the current machine
       regardless of its number, xpra attach ssh:frodo will  similarly  attach
       to the lone xpra server on a remote machine.

       If  the xpra server was given the --bind-tcp option when started (which
       is a major security risk, and not  recommended!),  then  you  can  also
       connect  to  it using a display of the form tcp:HOST:PORT. (Notice that
       ssh: takes an optional display number, while tcp: takes a required port
       number.)

SUBCOMMANDS

   xpra start
       This command starts a new xpra server, including any necessary setup.

   xpra attach
       This  command  attachs  to  a  running  xpra  server,  and forwards any
       applications using that server to appear on your current screen.

   xpra stop
       This command attachs to a running xpra server,  and  requests  that  it
       terminate  immediately.   This  generally causes any applications using
       that server to terminate as well.

   xpra list
       This command finds all xpra servers  that  have  been  started  by  the
       current user on the current machine, and lists them.

   xpra upgrade
       This  command starts a new xpra server, but instead of creating it from
       scratch, it attaches to another existing server, tells it to exit,  and
       takes  over  managing the applications that it was managing before.  As
       the name suggests, the main use case is to  replace  a  server  running
       against  an  older version of xpra with a newer version, without having
       to restart your session.  Any  currently-running  xpra  attach  command
       will exit and need to be restarted.

OPTIONS

   General options
       --version
              Displays xpra’s version number.

       -h, --help
              Displays a summary of command line usage.

       -d FILTER1,FILTER2,..., --debug=FILTER1,FILTER2,...
              Enable  debug  logging.   The  special  value  all  enables  all
              debugging; alternatively, debugging logs for particular  systems
              can  be  enabled by specifying one or more filters (separated by
              commas).  In general, check the source to determine filter names
              —  but  they  will  look  something  like  xpra.protocol.raw  or
              wimpiggy (wimpiggy is the  name  of  one  of  xpra’s  underlying
              libraries).   A  filter  like xpra.protocol.raw is more specific
              than one like xpra.protocol.

   Options for start, upgrade
       --start-child=CMD
              After starting the  server,  runs  the  command  CMD  using  the
              default  shell.   The  command  is  run with its $DISPLAY set to
              point to the newly-started server.  This  option  may  be  given
              multiple times to start multiple children.

       --exit-with-children
              This option may only be used if --start-child is also given.  If
              it is given, then the xpra server will monitor the status of the
              children   started  by  --start-child,  and  will  automatically
              terminate itself when the last of them has exited.

       --no-daemon
              By default, the xpra server puts  itself  into  the  background,
              i.e. ’daemonizes’, and redirects its output to a log file.  This
              prevents that behavior (useful mostly for debugging).

   Options for attach, stop
       --bind-tcp=[HOST]:PORT
              The xpra server always listens for connections on a  local  Unix
              domain  socket, and supports local connections with the :7-style
              display   address,   and    remote    connections    with    the
              ssh:frodo:7-style  display  address.  If  you  want, it can also
              listen for connections on a raw TCP  socket.  This  behavior  is
              enabled  with  --bind--tcp. If the host portion is omitted, then
              127.0.0.1 (localhost) will be used.

       Using this switch is NOT RECOMMENDED, and is a major security risk!
              Xpra does not do any checking on incoming connections; anyone at
              all  may  connect  to  this port and access your desktop. Use it
              only if you have special  needs  (e.g.,  certain  virtualization
              environments),  and understand the consequences of your actions.

   Options for start
       --remote-xpra=CMD
              When connecting to a remote server over ssh, xpra  needs  to  be
              able to find and run the xpra executable on the remote host.  If
              this executable is  in  a  non-standard  location,  or  requires
              special  environment variables to be set before it can run, then
              accomplishing this may be non-trivial.  If running  xpra  attach
              ssh:something fails because it cannot find the remote xpra, then
              you can use this option to specify how to run xpra on the remote
              host.

              That  said, this option should not be needed in normal usage, as
              xpra tries quite hard to work around the above problems.  If you
              find  yourself  needing  it  often, then that may indicate a bug
              that we would appreciate hearing about.

ENVIRONMENT

       DISPLAY
              xpra  start  --with-child=...  sets   this   variable   in   the
              environment of the child to point to the xpra display.

              xpra  attach, on the other hand, uses this variable to determine
              which display the remote applications should be shown on.

FILES

       Xpra uses the directory ~/.xpra to store a number of files.

       ~/.xpra/:7
              The unix domain socket that clients  use  to  contact  the  xpra
              server.

       ~/.xpra/:7.log
              When  run  in daemon mode (the default), the xpra server directs
              all output to this file.  This includes all debugging output, if
              debugging is enabled.

       ~/.xpra/run-xpra
              A  shell  script that, when run, starts up xpra with the correct
              python interpreter, PYTHONPATH, PATH, location of the main  xpra
              script,  etc.  Automatically generated by xpra start and used by
              xpra attach (see also the discussion of --remote-xpra).

BUGS

       Xpra has no test suite.

       Xpra does not fully handle all aspects of the X protocol; for instance,
       as  of  March 2009 it does not yet forward custom cursors, beeps, fancy
       input  features  like  pressure-sensitivity  on  tablets,  some  window
       manager hints, and probably other more obscure parts of the X protocol.
       It does, however, degrade gracefully,  and  patches  for  each  feature
       would be gratefully accepted.

       The  mapping  between  local  and  remote  keyboard  events is not very
       robust; in particular, it is possible in some situations  for  modifier
       keys  to  get  "stuck"  in  xpra,  and it is usually impossible to type
       characters outside of the standard US keyboard range.

       The xpra  server  allocates  an  over-large  framebuffer;  this  wastes
       memory, and can cause applications to misbehave (e.g., by letting menus
       go off-screen).  Conversely, if the framebuffer is ever  insufficiently
       large, clients will misbehave in other ways (e.g., input events will be
       misdirected).

       The need to choose display numbers by hand is annoying.

REPORTING BUGS

       Send any questions or bugs reports to <parti-discuss@partiwm.org>.

SEE ALSO

       screen(1)