From ef69c5dbd6c667e43b36e6ce74933dc9e06b614b Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Sun, 8 Jul 2018 19:28:42 +0200 Subject: [PATCH 01/17] test/1 --- .gitignore | 54 ++ CHANGELOG | 144 +++++ LICENSE | 27 + README.rst | 170 ++++++ examples/example-config.conf | 36 ++ examples/true_color_test.py | 18 + images/copy-mode.png | Bin 0 -> 172385 bytes images/menu-true-color.png | Bin 0 -> 53763 bytes images/multiple-clients.png | Bin 0 -> 134215 bytes images/pymux.png | Bin 0 -> 205809 bytes pymux/__init__.py | 1 + pymux/__main__.py | 8 + pymux/arrangement.py | 737 +++++++++++++++++++++++++ pymux/client/__init__.py | 3 + pymux/client/base.py | 22 + pymux/client/defaults.py | 24 + pymux/client/posix.py | 203 +++++++ pymux/client/windows.py | 15 + pymux/commands/__init__.py | 0 pymux/commands/aliases.py | 48 ++ pymux/commands/commands.py | 659 ++++++++++++++++++++++ pymux/commands/completer.py | 185 +++++++ pymux/commands/utils.py | 15 + pymux/entry_points/__init__.py | 0 pymux/entry_points/run_pymux.py | 163 ++++++ pymux/enums.py | 13 + pymux/filters.py | 101 ++++ pymux/format.py | 99 ++++ pymux/key_bindings.py | 259 +++++++++ pymux/key_mappings.py | 231 ++++++++ pymux/layout.py | 943 ++++++++++++++++++++++++++++++++ pymux/log.py | 9 + pymux/main.py | 655 ++++++++++++++++++++++ pymux/options.py | 201 +++++++ pymux/rc.py | 83 +++ pymux/server.py | 265 +++++++++ pymux/style.py | 76 +++ pymux/utils.py | 106 ++++ setup.py | 33 ++ 39 files changed, 5606 insertions(+) create mode 100644 .gitignore create mode 100644 CHANGELOG create mode 100644 LICENSE create mode 100644 README.rst create mode 100644 examples/example-config.conf create mode 100755 examples/true_color_test.py create mode 100644 images/copy-mode.png create mode 100644 images/menu-true-color.png create mode 100644 images/multiple-clients.png create mode 100644 images/pymux.png create mode 100644 pymux/__init__.py create mode 100644 pymux/__main__.py create mode 100644 pymux/arrangement.py create mode 100644 pymux/client/__init__.py create mode 100644 pymux/client/base.py create mode 100644 pymux/client/defaults.py create mode 100644 pymux/client/posix.py create mode 100644 pymux/client/windows.py create mode 100644 pymux/commands/__init__.py create mode 100644 pymux/commands/aliases.py create mode 100644 pymux/commands/commands.py create mode 100644 pymux/commands/completer.py create mode 100644 pymux/commands/utils.py create mode 100644 pymux/entry_points/__init__.py create mode 100644 pymux/entry_points/run_pymux.py create mode 100644 pymux/enums.py create mode 100644 pymux/filters.py create mode 100644 pymux/format.py create mode 100644 pymux/key_bindings.py create mode 100644 pymux/key_mappings.py create mode 100644 pymux/layout.py create mode 100644 pymux/log.py create mode 100644 pymux/main.py create mode 100644 pymux/options.py create mode 100644 pymux/rc.py create mode 100644 pymux/server.py create mode 100644 pymux/style.py create mode 100644 pymux/utils.py create mode 100644 setup.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..db4561e --- /dev/null +++ b/.gitignore @@ -0,0 +1,54 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.cache +nosetests.xml +coverage.xml + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 0000000..6cecd94 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,144 @@ +CHANGELOG +========= + +0.13: 2016-10-16 +---------------- + +New features: +- Added status-interval option. +- Support for ANSI colors only. + * Added --ansicolor option. + * Check PROMPT_TOOLKIT_ANSI_COLORS_ONLY environment variable. +- Added pane-status option for hiding the pane status bar. + (Disabled by default.) +- Expose shift+arrow keys for key bindings. + +Performance improvements: +- Only do datetime formatting if the string actually contains a '%' + character. + +Fixes: +- Catch OSError in os.tcgetpgrp. +- Clean up sockets, also in case of a crash. +- Fix in process.py: don't call remove_reader when master is None. + + +0.12: 2016-08-03 +---------------- + +Fixes: +- Prompt_toolkit 1.0.4 compatibilty. +- Python 2.6 compatibility. + + +0.11: 2016-06-27 +---------------- + +Fixes: +- Fix for OS X El Capitan: LoadLibrary('libc.dylib') failed. +- Compatibility with the latest prompt_toolkit. + + +0.10: 2016-05-05 +---------------- + +Upgrade to prompt_toolkit 1.0.0 + +New features: +- Added 'C-b PPage' key binding (like tmux). +- Many performance improvements in the vt100 parser. + +Improvements/fixes: +- Don't crash when decoding utf-8 input fails. (Sometimes it happens when using + the mouse in lxterminal.) +- Cleanup CLI object when the client was detached. (The server would become + very slow if the CLI was not removed for a couple of times.) +- Replace errors when decoding utf-8 input. +- Fixes regarding multiwidth characters. +- Bugfix: Don't use 'del' on a defaultdict, but use pop(..., None) instead, in + order to avoid key errors. +- Handle decomposed unicode characters correctly. +- Bugfix regarding the handling of 'clear'. +- Fixes a bug where the cursor stays at the top. +- Fix: The socket in the pymux client should be blocking. + + +0.9: 2016-03-14 +--------------- + +Upgrade to prompt_toolkit 0.60 + + +0.8: 2016-03-06 +--------------- + +Upgrade to prompt_toolkit 0.59 + + +0.7: 2016-01-16 +--------------- + +Fixes: +- Fixed FreeBSD support. +- Compatibility with the latest Pyte version. +- Handle 'No such process' in os.kill. + + +0.6: 2016-01-11 +--------------- + +Fixes: +- Fix module import of pyte==0.5.1 +- Use gettempdir() for sockets. +- Disable bracketed paste when leaving client. +- Keep dimensions when closing a pane. + +New features: +- Display the process name on Mac OS X. +- Exit scroll buffer when pressing enter. +- Added synchronize-panes window option. + + +0.5: 2016-01-05 +---------------- + +Fixes: +- Handle KeyError in screen.insert_lines. + + +0.4: 2016-01-04 +---------------- + +Fixes: +- After closing a pane, go to the previous pane. +- Write crash reports to a secure temp file. +- Added 'ls' as alias for list-sessions. + +Better performance: +- Using a coroutine for the vt100 parser. (Much faster.) +- Give priority to panes that have the focus. +- Never postpone the rendering in case of high CPU. (Fix in prompt_toolkit.) + + +0.3: 2016-01-03 +---------------- + +New features: +- Take $SHELL into account. + +Fixes: +- Python 2 encoding bug fixed. + + +0.2: 2016-01-03 +---------------- + +First published version of Pymux, using prompt_toolkit. + + +0.1: 2014-02-19 +--------------- + +Initial experimental version of Pymux, written using asyncio. (This one is +discontinued in favour of the new version, that uses prompt_toolkit.) +still available here: https://github.com/jonathanslenders/old-pymux diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..910b80a --- /dev/null +++ b/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2015, Jonathan Slenders +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +* Neither the name of the {organization} nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..7d71bd3 --- /dev/null +++ b/README.rst @@ -0,0 +1,170 @@ +Pymux +===== + +*A terminal multiplexer (like tmux) in Python* + +:: + + pip install pymux + +.. image :: https://raw.githubusercontent.com/jonathanslenders/pymux/master/images/pymux.png + + +Issues, questions, wishes, comments, feedback, remarks? Please create a GitHub +issue, I appreciate it. + + +Installation +------------ + +Simply install ``pymux`` using pip: + +:: + + pip install pymux + +Start it by typing ``pymux``. + + +What does it do? +---------------- + +A terminal multiplexer makes it possible to run multiple applications in the +same terminal. It does this by emulating a vt100 terminal for each application. +There are serveral programs doing this. The most famous are `GNU Screen +<https://www.gnu.org/software/screen/>`_ and `tmux <https://tmux.github.io/>`_. + +Pymux is written entirely in Python. It doesn't need any C extension. It runs +on all Python versions from 2.6 until 3.5. It should work on OS X and Linux. + + +Compared to tmux +---------------- + +To some extent, pymux is a clone of tmux. This means that all the default +shortcuts are the same; the commands are the same or very similar, and even a +simple configuration file could be the same. (There are some small +incompatibilities.) However, we definitely don't intend to create a fully +compatible clone. Right now, only a subset of the command options that tmux +provides are supported. + +Pymux implements a few improvements over tmux: + +- There is a completion menu for the command line. (At the bottom of the screen.) +- The command line has `fish-style <http://fishshell.com/>`_ suggestions. +- Both Emacs and Vi key bindings for the command line and copy buffer are well + developed, thanks to all the effort we have put earlier in `prompt_toolkit + <https://github.com/jonathanslenders/python-prompt-toolkit>`_. +- Search in the copy buffer is highlighted while searching. +- Every pane has its own titlebar. +- When several clients are attached to the same session, each client can watch + a different window. When clients are watching different windows, every client + uses the full terminal size. +- Support for 24bit true color. (Disabled by default: not all terminals support + it. Use the ``--truecolor`` option at startup or during attach in order to + enable it.) +- Support for unicode input and output. Pymux correctly understands utf-8 + encoded double width characters. (Also for the titlebars.) + +About the performance: + +- Tmux is written in C, which is obviously faster than Python. This is + noticeable when applications generate a lot of output. Where tmux is able to + give fast real-time output for, for instance ``find /`` or ``yes``, pymux + will process the output slightly slower, and in this case render the output + only a few times per second to the terminal. Usually, this should not be an + issue. If it is, `Pypy <http://pypy.org/>`_ should provide a significant + speedup. + +The big advantage of using Python and `prompt_toolkit +<https://github.com/jonathanslenders/python-prompt-toolkit>`_ is that the +implementation of new features becomes very easy. + + +More screenshots +---------------- + +24 bit color support and the autocompletion menu: + +.. image :: https://raw.githubusercontent.com/jonathanslenders/pymux/master/images/menu-true-color.png + +What happens if another client with a smaller screen size attaches: + +.. image :: https://raw.githubusercontent.com/jonathanslenders/pymux/master/images/multiple-clients.png + +When a pane enters copy mode, search results are highlighted: + +.. image :: https://raw.githubusercontent.com/jonathanslenders/pymux/master/images/copy-mode.png + + +Why create a tmux clone? +------------------------ + +For several reasons. Having a terminal multiplexer in Python makes it easy to +experiment and implement new features. While C is a good language, it's not as +easy to develop as Python. + +Just like `pyvim <https://github.com/jonathanslenders/pyvim>`_ (A ``Vi`` clone +in Python.), it started as another experiment. A project to challenge the +design of prompt_toolkit. At this point, however, pymux should be stable and +usable for daily work. + +The development resulted in many improvements in prompt_toolkit, especially +performance improvements, but also some functionality improvements. + +Further, the development is especially interesting, because it touches so many +different areas that are unknown to most Python developers. It also proves that +Python is a good tool to create terminal applications. + + +The roadmap +----------- + +There is no official roadmap, the code is mostly written for the fun and of +course, time is limited, but I use pymux professionally and I'm eager to +implement new ideas. + +Some ideas: + +- Support for color schemes. +- Support for extensions written in Python. +- Better support for scripting. (Right now, it's already possible to run pymux + commands from inside the shell of a pane. E.g. ``pymux split-window``. + However, status codes and feedback aren't transferred yet.) +- Improved mouse support. (Reporting of mouse movement.) +- Parts of pymux could become a library, so that any prompt_toolkit application + can embed a vt100 terminal. (Imagine a terminal emulator embedded in `pyvim + <https://github.com/jonathanslenders/pyvim>`_.) +- Maybe some cool widgets to traverse the windows and panes. +- Better autocompletion. + + +Configuring +----------- + +Create a file ``~/.pymux.conf``, and populate it with commands, like you can +enter at the command line. There is an `example config +<https://github.com/jonathanslenders/pymux/blob/master/examples/example-config.conf>`_ +in the examples directory. + + +What if it crashes? +------------------- + +If for some reason pymux crashes, it will attempt to write a stack trace to a +file with a name like ``/tmp/pymux.crash-*``. It is possible that the user +interface freezes. Please create a GitHub issue with this stack trace. + + +Special thanks +-------------- + +- `Pyte <https://github.com/selectel/pyte>`_, for providing a working vt100 + parser. (This one is extended in order to support some xterm extensions.) +- `docopt <http://docopt.org/>`_, for parsing the command line arguments. +- `prompt_toolkit + <https://github.com/jonathanslenders/python-prompt-toolkit>`_, for the UI + toolkit. +- `wcwidth <https://github.com/jquast/wcwidth>`_: for better unicode support + (support of double width characters). +- `tmux <https://tmux.github.io/>`_, for the inspiration. diff --git a/examples/example-config.conf b/examples/example-config.conf new file mode 100644 index 0000000..c5fcb2c --- /dev/null +++ b/examples/example-config.conf @@ -0,0 +1,36 @@ +# Example pymux configuration. +# Copy to ~/.pymux.conf and modify. + + +# Use Control-A as a prefix. +set-option prefix C-a +unbind C-b +bind C-a send-prefix + + +# Rename panes with <prefix>': +bind-key "'" command-prompt -p '(rename-pane)' 'rename-pane "%%"' + + +# Open 'htop' with <prefix>t +bind-key t split-window -h htop + + +# Use '|' and '-' for splitting panes. +# (The double dash after '-' is required due to a bug in docopt.) +bind-key "|" split-window -h +bind-key "-" -- split-window -v + + +# Use Vi key bindings instead of emacs. (For both the status bar and copy +# mode.) +set-option mode-keys vi +set-option status-keys vi + + +# Display the hostname on the left side of the status bar. +set-option status-left '[#h:#S] ' + + +# Start numbering windows from 1. +set-option base-index 1 diff --git a/examples/true_color_test.py b/examples/true_color_test.py new file mode 100755 index 0000000..74d5c70 --- /dev/null +++ b/examples/true_color_test.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +""" +Run this script inside 'pymux' in order to discover whether or not in supports +true 24bit color. It should display a rectangle with both red and green values +changing between 0 and 80. +""" +from __future__ import unicode_literals, print_function + +i = 0 +for r in range(0, 80): + for g in range(0, 80): + b = 1 + print('\x1b[0;48;2;%s;%s;%sm ' % (r, g, b), end='') + if i == 1000: + break + + print('\x1b[0m \n', end='') +print('\x1b[0m\r\n') diff --git a/images/copy-mode.png b/images/copy-mode.png new file mode 100644 index 0000000000000000000000000000000000000000..56d9e94308e437465b5d557763a030a285cdc4cb GIT binary patch literal 172385 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%0A_e-H{RX4%6jwIgrC1X}o97Pwj{4!6i+X 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�Bsv4J+lu1{a6^Yup+;Wl3877J? zIUbkhA}QszAgT?@#pmxlE-4l-$T`DT9NluZ9dzP4CA5?Wk-p~`S?J4U(Mkdic!o%A zJFB0lF=-AaX3qLNEsa8%FjaXvL(k295EOWmbd=|MC%i5WpdrN=0Ooj^UaXspL0L#D z@?{RbO8qj-N<eA4F{Pu$&rJcz9d69r4`mncD1Nz?fH>-?y4p~yCu6Ge$07UIFpv1} z9Ut>8ve3uMpY-f<ujXt!@!z-yw9@S9SWQ)lQf^zVvfy&Fh724IwnuF49>iYy2dz4J AQ~&?~ literal 0 HcmV?d00001 diff --git a/images/menu-true-color.png b/images/menu-true-color.png new file mode 100644 index 0000000000000000000000000000000000000000..5ab943d92f4406c7edf20f5831f171e38e96fb3f GIT binary patch literal 53763 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 NFuyn-^!Y1~{{y%~G4cQa literal 0 HcmV?d00001 diff --git a/images/multiple-clients.png b/images/multiple-clients.png new file mode 100644 index 0000000000000000000000000000000000000000..958ee2cfdc908a85e3a4186b4d1bda45f6b2618b GIT binary patch literal 134215 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%0D$NO%5Gu=*nEahyfnvxtOb(>y_=j=49tMY}Plp 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≻C=B2fy@%*uNBV_Z_^72rHgsf3Ow6(dp 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 literal 0 HcmV?d00001 diff --git a/images/pymux.png b/images/pymux.png new file mode 100644 index 0000000000000000000000000000000000000000..7e8d73a8960c58d963c57e7cbc875d821ed010d3 GIT binary patch literal 205809 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�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�)JRQowB%fMYPy!bhuzjvV+ViUnr1>kTV{=IfW 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∋`v8T@4W<H*HQoT9o)cLwvuSC&h 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 QA_0f0lBQzOL({ka2kp>A<NyEw literal 0 HcmV?d00001 diff --git a/pymux/__init__.py b/pymux/__init__.py new file mode 100644 index 0000000..baffc48 --- /dev/null +++ b/pymux/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/pymux/__main__.py b/pymux/__main__.py new file mode 100644 index 0000000..a95c19f --- /dev/null +++ b/pymux/__main__.py @@ -0,0 +1,8 @@ +""" +Make sure `python -m pymux` works. +""" +from __future__ import unicode_literals +from .entry_points.run_pymux import run + +if __name__ == '__main__': + run() diff --git a/pymux/arrangement.py b/pymux/arrangement.py new file mode 100644 index 0000000..7c3ef58 --- /dev/null +++ b/pymux/arrangement.py @@ -0,0 +1,737 @@ +""" +Arrangement of panes. + +Don't confuse with the prompt_toolkit VSplit/HSplit classes. This is a higher +level abstraction of the Pymux window layout. + +An arrangement consists of a list of windows. And a window has a list of panes, +arranged by ordering them in HSplit/VSplit instances. +""" +from __future__ import unicode_literals + +from ptterm import Terminal +from prompt_toolkit.application.current import get_app, set_app +from prompt_toolkit.buffer import Buffer + +import math +import os +import weakref +import six + +__all__ = ( + 'LayoutTypes', + 'Pane', + 'HSplit', + 'VSplit', + 'Window', + 'Arrangement', +) + + +class LayoutTypes: + # The values are in lowercase with dashes, because that is what users can + # use at the command line. + EVEN_HORIZONTAL = 'even-horizontal' + EVEN_VERTICAL = 'even-vertical' + MAIN_HORIZONTAL = 'main-horizontal' + MAIN_VERTICAL = 'main-vertical' + TILED = 'tiled' + + _ALL = [EVEN_HORIZONTAL, EVEN_VERTICAL, MAIN_HORIZONTAL, MAIN_VERTICAL, TILED] + + +class Pane(object): + """ + One pane, containing one process and a search buffer for going into copy + mode or displaying the help. + """ + _pane_counter = 1000 # Start at 1000, to be sure to not confuse this with pane indexes. + + def __init__(self, terminal=None): + assert isinstance(terminal, Terminal) + + self.terminal = terminal + self.chosen_name = None + + # Displayed the clock instead of this pane content. + self.clock_mode = False + + # Give unique ID. + Pane._pane_counter += 1 + self.pane_id = Pane._pane_counter + + # Prompt_toolkit buffer, for displaying scrollable text. + # (In copy mode, or help mode.) + # Note: Because the scroll_buffer can only contain text, we also use the + # get_tokens_for_line, that returns the token list with color + # information for each line. + self.scroll_buffer = Buffer(read_only=True) + self.copy_get_tokens_for_line = lambda lineno: [] + self.display_scroll_buffer = False + self.scroll_buffer_title = '' + + @property + def process(self): + return self.terminal.process + + @property + def name(self): + """ + The name for the window as displayed in the title bar and status bar. + """ + # Name, explicitely set for the pane. + if self.chosen_name: + return self.chosen_name + else: + # Name from the process running inside the pane. + name = self.process.get_name() + if name: + return os.path.basename(name) + + return '' + + def enter_copy_mode(self): + """ + Suspend the process, and copy the screen content to the `scroll_buffer`. + That way the user can search through the history and copy/paste. + """ + self.terminal.enter_copy_mode() + + def focus(self): + """ + Focus this pane. + """ + get_app().layout.focus(self.terminal) + + +class _WeightsDictionary(weakref.WeakKeyDictionary): + """ + Dictionary for the weights: weak keys, but defaults to 1. + + (Weights are used to represent the proportion of pane sizes in + HSplit/VSplit lists.) + + This dictionary maps the child (another HSplit/VSplit or Pane), to the + size. (Integer.) + """ + def __getitem__(self, key): + try: + # (Don't use 'super' here. This is a classobj in Python2.) + return weakref.WeakKeyDictionary.__getitem__(self, key) + except KeyError: + return 1 + + +class _Split(list): + """ + Base class for horizontal and vertical splits. (This is a higher level + split than prompt_toolkit.layout.HSplit.) + """ + def __init__(self, *a, **kw): + list.__init__(self, *a, **kw) + + # Mapping children to its weight. + self.weights = _WeightsDictionary() + + def __hash__(self): + # Required in order to add HSplit/VSplit to the weights dict. " + return id(self) + + def __repr__(self): + return '%s(%s)' % (self.__class__.__name__, list.__repr__(self)) + + +class HSplit(_Split): + """ Horizontal split. """ + + +class VSplit(_Split): + """ Horizontal split. """ + + +class Window(object): + """ + Pymux window. + """ + _window_counter = 1000 # Start here, to avoid confusion with window index. + + def __init__(self, index=0): + self.index = index + self.root = HSplit() + self._active_pane = None + self._prev_active_pane = None + self.chosen_name = None + self.previous_selected_layout = None + + #: When true, the current pane is zoomed in. + self.zoom = False + + #: When True, send input to all panes simultaniously. + self.synchronize_panes = False + + # Give unique ID. + Window._window_counter += 1 + self.window_id = Window._window_counter + + def invalidation_hash(self): + """ + Return a hash (string) that can be used to determine when the layout + has to be rebuild. + """ +# if not self.root: +# return '<empty-window>' + + def _hash_for_split(split): + result = [] + for item in split: + if isinstance(item, (VSplit, HSplit)): + result.append(_hash_for_split(item)) + elif isinstance(item, Pane): + result.append('p%s' % item.pane_id) + + if isinstance(split, HSplit): + return 'HSplit(%s)' % (','.join(result)) + else: + return 'VSplit(%s)' % (','.join(result)) + + return '<window_id=%s,zoom=%s,children=%s>' % ( + self.window_id, self.zoom, _hash_for_split(self.root)) + + @property + def active_pane(self): + """ + The current active :class:`.Pane`. + """ + return self._active_pane + + @active_pane.setter + def active_pane(self, value): + assert isinstance(value, Pane) + + # Remember previous active pane. + if self._active_pane: + self._prev_active_pane = weakref.ref(self._active_pane) + + self.zoom = False + self._active_pane = value + + @property + def previous_active_pane(self): + """ + The previous active :class:`.Pane` or `None` if unknown. + """ + p = self._prev_active_pane and self._prev_active_pane() + + # Only return when this pane actually still exists in the current + # window. + if p and p in self.panes: + return p + + @property + def name(self): + """ + The name for this window as it should be displayed in the status bar. + """ + # Name, explicitely set for the window. + if self.chosen_name: + return self.chosen_name + else: + pane = self.active_pane + if pane: + return pane.name + + return '' + + def add_pane(self, pane, vsplit=False): + """ + Add another pane to this Window. + """ + assert isinstance(pane, Pane) + assert isinstance(vsplit, bool) + + split_cls = VSplit if vsplit else HSplit + + if self.active_pane is None: + self.root.append(pane) + else: + parent = self._get_parent(self.active_pane) + same_direction = isinstance(parent, split_cls) + + index = parent.index(self.active_pane) + + if same_direction: + parent.insert(index + 1, pane) + else: + new_split = split_cls([self.active_pane, pane]) + parent[index] = new_split + + # Give the newly created split the same weight as the original + # pane that was at this position. + parent.weights[new_split] = parent.weights[self.active_pane] + + self.active_pane = pane + self.zoom = False + + def remove_pane(self, pane): + """ + Remove pane from this Window. + """ + assert isinstance(pane, Pane) + + if pane in self.panes: + # When this pane was focused, switch to previous active or next in order. + if pane == self.active_pane: + if self.previous_active_pane: + self.active_pane = self.previous_active_pane + else: + self.focus_next() + + # Remove from the parent. When the parent becomes empty, remove the + # parent itself recursively. + p = self._get_parent(pane) + p.remove(pane) + + while len(p) == 0 and p != self.root: + p2 = self._get_parent(p) + p2.remove(p) + p = p2 + + # When the parent has only one item left, collapse into its parent. + while len(p) == 1 and p != self.root: + p2 = self._get_parent(p) + p2.weights[p[0]] = p2.weights[p] # Keep dimensions. + i = p2.index(p) + p2[i] = p[0] + p = p2 + + @property + def panes(self): + " List with all panes from this Window. " + result = [] + + for s in self.splits: + for item in s: + if isinstance(item, Pane): + result.append(item) + + return result + + @property + def splits(self): + " Return a list with all HSplit/VSplit instances. " + result = [] + + def collect(split): + result.append(split) + + for item in split: + if isinstance(item, (HSplit, VSplit)): + collect(item) + + collect(self.root) + return result + + def _get_parent(self, item): + " The HSplit/VSplit that contains the active pane. " + for s in self.splits: + if item in s: + return s + + @property + def has_panes(self): + " True when this window contains at least one pane. " + return len(self.panes) > 0 + + @property + def active_process(self): + " Return `Process` that should receive user input. " + p = self.active_pane + + if p is not None: + return p.process + + def focus_next(self, count=1): + " Focus the next pane. " + panes = self.panes + if panes: + self.active_pane = panes[(panes.index(self.active_pane) + count) % len(panes)] + else: + self.active_pane = None # No panes left. + + def focus_previous(self): + " Focus the previous pane. " + self.focus_next(count=-1) + + def rotate(self, count=1, with_pane_before_only=False, with_pane_after_only=False): + """ + Rotate panes. + When `with_pane_before_only` or `with_pane_after_only` is True, only rotate + with the pane before/after the active pane. + """ + # Create (split, index, pane, weight) tuples. + items = [] + current_pane_index = None + + for s in self.splits: + for index, item in enumerate(s): + if isinstance(item, Pane): + items.append((s, index, item, s.weights[item])) + if item == self.active_pane: + current_pane_index = len(items) - 1 + + # Only before after? Reduce list of panes. + if with_pane_before_only: + items = items[current_pane_index - 1:current_pane_index + 1] + + elif with_pane_after_only: + items = items[current_pane_index:current_pane_index + 2] + + # Rotate positions. + for i, triple in enumerate(items): + split, index, pane, weight = triple + + new_item = items[(i + count) % len(items)][2] + + split[index] = new_item + split.weights[new_item] = weight + + def select_layout(self, layout_type): + """ + Select one of the predefined layouts. + """ + assert layout_type in LayoutTypes._ALL + + # When there is only one pane, always choose EVEN_HORIZONTAL, + # Otherwise, we create VSplit/HSplit instances with an empty list of + # children. + if len(self.panes) == 1: + layout_type = LayoutTypes.EVEN_HORIZONTAL + + # even-horizontal. + if layout_type == LayoutTypes.EVEN_HORIZONTAL: + self.root = HSplit(self.panes) + + # even-vertical. + elif layout_type == LayoutTypes.EVEN_VERTICAL: + self.root = VSplit(self.panes) + + # main-horizontal. + elif layout_type == LayoutTypes.MAIN_HORIZONTAL: + self.root = HSplit([ + self.active_pane, + VSplit([p for p in self.panes if p != self.active_pane]) + ]) + + # main-vertical. + elif layout_type == LayoutTypes.MAIN_VERTICAL: + self.root = VSplit([ + self.active_pane, + HSplit([p for p in self.panes if p != self.active_pane]) + ]) + + # tiled. + elif layout_type == LayoutTypes.TILED: + panes = self.panes + column_count = math.ceil(len(panes) ** .5) + + rows = HSplit() + current_row = VSplit() + + for p in panes: + current_row.append(p) + + if len(current_row) >= column_count: + rows.append(current_row) + current_row = VSplit() + if current_row: + rows.append(current_row) + + self.root = rows + + self.previous_selected_layout = layout_type + + def select_next_layout(self, count=1): + """ + Select next layout. (Cycle through predefined layouts.) + """ + # List of all layouts. (When we have just two panes, only toggle + # between horizontal/vertical.) + if len(self.panes) == 2: + all_layouts = [LayoutTypes.EVEN_HORIZONTAL, LayoutTypes.EVEN_VERTICAL] + else: + all_layouts = LayoutTypes._ALL + + # Get index of current layout. + layout = self.previous_selected_layout or LayoutTypes._ALL[-1] + try: + index = all_layouts.index(layout) + except ValueError: + index = 0 + + # Switch to new layout. + new_layout = all_layouts[(index + count) % len(all_layouts)] + self.select_layout(new_layout) + + def select_previous_layout(self): + self.select_next_layout(count=-1) + + def change_size_for_active_pane(self, up=0, right=0, down=0, left=0): + """ + Increase the size of the current pane in any of the four directions. + """ + child = self.active_pane + self.change_size_for_pane(child, up=up, right=right, down=down, left=left) + + def change_size_for_pane(self, pane, up=0, right=0, down=0, left=0): + """ + Increase the size of the current pane in any of the four directions. + Positive values indicate an increase, negative values a decrease. + """ + assert isinstance(pane, Pane) + + def find_split_and_child(split_cls, is_before): + " Find the split for which we will have to update the weights. " + child = pane + split = self._get_parent(child) + + def found(): + return isinstance(split, split_cls) and ( + not is_before or split.index(child) > 0) and ( + is_before or split.index(child) < len(split) - 1) + + while split and not found(): + child = split + split = self._get_parent(child) + + return split, child # split can be None! + + def handle_side(split_cls, is_before, amount, trying_other_side=False): + " Increase weights on one side. (top/left/right/bottom). " + if amount: + split, child = find_split_and_child(split_cls, is_before) + + if split: + # Find neighbour. + neighbour_index = split.index(child) + (-1 if is_before else 1) + neighbour_child = split[neighbour_index] + + # Increase/decrease weights. + split.weights[child] += amount + split.weights[neighbour_child] -= amount + + # Ensure that all weights are at least one. + for k, value in split.weights.items(): + if value < 1: + split.weights[k] = 1 + + else: + # When no split has been found where we can move in this + # direction, try to move the other side instead using a + # negative amount. This happens when we run "resize-pane -R 4" + # inside the pane that is completely on the right. In that + # case it's logical to move the left border to the right + # instead. + if not trying_other_side: + handle_side(split_cls, not is_before, -amount, + trying_other_side=True) + + handle_side(VSplit, True, left) + handle_side(VSplit, False, right) + handle_side(HSplit, True, up) + handle_side(HSplit, False, down) + + def get_pane_index(self, pane): + " Return the index of the given pane. ValueError if not found. " + assert isinstance(pane, Pane) + return self.panes.index(pane) + + +class Arrangement(object): + """ + Arrangement class for one Pymux session. + This contains the list of windows and the layout of the panes for each + window. All the clients share the same Arrangement instance, but they can + have different windows active. + """ + def __init__(self): + self.windows = [] + self.base_index = 0 + + self._active_window_for_cli = weakref.WeakKeyDictionary() + self._prev_active_window_for_cli = weakref.WeakKeyDictionary() + + # The active window of the last CLI. Used as default when a new session + # is attached. + self._last_active_window = None + + def invalidation_hash(self): + """ + When this changes, the layout needs to be rebuild. + """ + if not self.windows: + return '<no-windows>' + + w = self.get_active_window() + return w.invalidation_hash() + + def get_active_window(self): + """ + The current active :class:`.Window`. + """ + app = get_app() + + try: + return self._active_window_for_cli[app] + except KeyError: + self._active_window_for_cli[app] = self._last_active_window or self.windows[0] + return self.windows[0] + + def set_active_window(self, window): + assert isinstance(window, Window) + app = get_app() + + previous = self.get_active_window() + self._prev_active_window_for_cli[app] = previous + self._active_window_for_cli[app] = window + self._last_active_window = window + + def set_active_window_from_pane_id(self, pane_id): + """ + Make the window with this pane ID the active Window. + """ + assert isinstance(pane_id, int) + + for w in self.windows: + for p in w.panes: + if p.pane_id == pane_id: + self.set_active_window(w) + + def get_previous_active_window(self): + " The previous active Window or None if unknown. " + app = get_app() + + try: + return self._prev_active_window_for_cli[app] + except KeyError: + return None + + def get_window_by_index(self, index): + " Return the Window with this index or None if not found. " + for w in self.windows: + if w.index == index: + return w + + def create_window(self, pane, name=None, set_active=True): + """ + Create a new window that contains just this pane. + + :param pane: The :class:`.Pane` instance to put in the new window. + :param name: If given, name for the new window. + :param set_active: When True, focus the new window. + """ + assert isinstance(pane, Pane) + assert name is None or isinstance(name, six.text_type) + + # Take the first available index. + taken_indexes = [w.index for w in self.windows] + + index = self.base_index + while index in taken_indexes: + index += 1 + + # Create new window and add it. + w = Window(index) + w.add_pane(pane) + self.windows.append(w) + + # Sort windows by index. + self.windows = sorted(self.windows, key=lambda w: w.index) + + app = get_app(return_none=True) + + if app is not None and set_active: + self.set_active_window(w) + + if name is not None: + w.chosen_name = name + + assert w.active_pane == pane + assert w._get_parent(pane) + + def move_window(self, window, new_index): + """ + Move window to a new index. + """ + assert isinstance(window, Window) + assert isinstance(new_index, int) + + window.index = new_index + + # Sort windows by index. + self.windows = sorted(self.windows, key=lambda w: w.index) + + def get_active_pane(self): + """ + The current :class:`.Pane` from the current window. + """ + w = self.get_active_window() + if w is not None: + return w.active_pane + + def remove_pane(self, pane): + """ + Remove a :class:`.Pane`. (Look in all windows.) + """ + assert isinstance(pane, Pane) + + for w in self.windows: + w.remove_pane(pane) + + # No panes left in this window? + if not w.has_panes: + # Focus next. + for app, active_w in self._active_window_for_cli.items(): + if w == active_w: + with set_app(app): + self.focus_next_window() + + self.windows.remove(w) + + def focus_previous_window(self): + w = self.get_active_window() + + self.set_active_window(self.windows[ + (self.windows.index(w) - 1) % len(self.windows)]) + + def focus_next_window(self): + w = self.get_active_window() + + self.set_active_window(self.windows[ + (self.windows.index(w) + 1) % len(self.windows)]) + + def break_pane(self, set_active=True): + """ + When the current window has multiple panes, remove the pane from this + window and put it in a new window. + + :param set_active: When True, focus the new window. + """ + w = self.get_active_window() + + if len(w.panes) > 1: + pane = w.active_pane + self.get_active_window().remove_pane(pane) + self.create_window(pane, set_active=set_active) + + def rotate_window(self, count=1): + " Rotate the panes in the active window. " + w = self.get_active_window() + w.rotate(count=count) + + @property + def has_panes(self): + " True when any of the windows has a :class:`.Pane`. " + for w in self.windows: + if w.has_panes: + return True + return False diff --git a/pymux/client/__init__.py b/pymux/client/__init__.py new file mode 100644 index 0000000..dacbf9e --- /dev/null +++ b/pymux/client/__init__.py @@ -0,0 +1,3 @@ +from __future__ import unicode_literals +from .base import Client +from .defaults import create_client, list_clients diff --git a/pymux/client/base.py b/pymux/client/base.py new file mode 100644 index 0000000..8443360 --- /dev/null +++ b/pymux/client/base.py @@ -0,0 +1,22 @@ +from __future__ import unicode_literals + +from prompt_toolkit.output import ColorDepth +from abc import ABCMeta +from six import with_metaclass + + +__all__ = [ + 'Client', +] + + +class Client(with_metaclass(ABCMeta, object)): + def run_command(self, command, pane_id=None): + """ + Ask the server to run this command. + """ + + def attach(self, detach_other_clients=False, color_depth=ColorDepth.DEPTH_8_BIT): + """ + Attach client user interface. + """ diff --git a/pymux/client/defaults.py b/pymux/client/defaults.py new file mode 100644 index 0000000..938c307 --- /dev/null +++ b/pymux/client/defaults.py @@ -0,0 +1,24 @@ +from __future__ import unicode_literals +from prompt_toolkit.utils import is_windows +__all__ = [ + 'create_client', + 'list_clients', +] + + +def create_client(socket_name): + if is_windows(): + from .windows import WindowsClient + return WindowsClient() + else: + from .posix import PosixClient + return PosixClient(socket_name) + + +def list_clients(): + if is_windows(): + from .windows import list_clients + return list_clients() + else: + from .posix import list_clients + return list_clients() diff --git a/pymux/client/posix.py b/pymux/client/posix.py new file mode 100644 index 0000000..53b8662 --- /dev/null +++ b/pymux/client/posix.py @@ -0,0 +1,203 @@ +from __future__ import unicode_literals + +from prompt_toolkit.eventloop.select import select_fds +from prompt_toolkit.input.posix_utils import PosixStdinReader +from prompt_toolkit.input.vt100 import raw_mode, cooked_mode +from prompt_toolkit.output.vt100 import _get_size, Vt100_Output +from prompt_toolkit.output import ColorDepth + +from pymux.utils import nonblocking + +import getpass +import glob +import json +import os +import signal +import socket +import sys +import tempfile +from .base import Client + +INPUT_TIMEOUT = .5 + +__all__ = ( + 'PosixClient', + 'list_clients', +) + + +class PosixClient(Client): + def __init__(self, socket_name): + self.socket_name = socket_name + self._mode_context_managers = [] + + # Connect to socket. + self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + self.socket.connect(socket_name) + self.socket.setblocking(1) + + # Input reader. + # Some terminals, like lxterminal send non UTF-8 input sequences, + # even when the input encoding is supposed to be UTF-8. This + # happens in the case of mouse clicks in the right area of a wide + # terminal. Apparently, these are some binary blobs in between the + # UTF-8 input.) + # We should not replace these, because this would break the + # decoding otherwise. (Also don't pass errors='ignore', because + # that doesn't work for parsing mouse input escape sequences, which + # consist of a fixed number of bytes.) + self._stdin_reader = PosixStdinReader(sys.stdin.fileno(), errors='replace') + + def run_command(self, command, pane_id=None): + """ + Ask the server to run this command. + + :param pane_id: Optional identifier of the current pane. + """ + self._send_packet({ + 'cmd': 'run-command', + 'data': command, + 'pane_id': pane_id + }) + + def attach(self, detach_other_clients=False, color_depth=ColorDepth.DEPTH_8_BIT): + """ + Attach client user interface. + """ + assert isinstance(detach_other_clients, bool) + + self._send_size() + self._send_packet({ + 'cmd': 'start-gui', + 'detach-others': detach_other_clients, + 'color-depth': color_depth, + 'term': os.environ.get('TERM', ''), + 'data': '' + }) + + with raw_mode(sys.stdin.fileno()): + data_buffer = b'' + + stdin_fd = sys.stdin.fileno() + socket_fd = self.socket.fileno() + current_timeout = INPUT_TIMEOUT # Timeout, used to flush escape sequences. + + try: + def winch_handler(signum, frame): + self._send_size() + + signal.signal(signal.SIGWINCH, winch_handler) + while True: + r = select_fds([stdin_fd, socket_fd], current_timeout) + + if socket_fd in r: + # Received packet from server. + data = self.socket.recv(1024) + + if data == b'': + # End of file. Connection closed. + # Reset terminal + o = Vt100_Output.from_pty(sys.stdout) + o.quit_alternate_screen() + o.disable_mouse_support() + o.disable_bracketed_paste() + o.reset_attributes() + o.flush() + return + else: + data_buffer += data + + while b'\0' in data_buffer: + pos = data_buffer.index(b'\0') + self._process(data_buffer[:pos]) + data_buffer = data_buffer[pos + 1:] + + elif stdin_fd in r: + # Got user input. + self._process_stdin() + current_timeout = INPUT_TIMEOUT + + else: + # Timeout. (Tell the server to flush the vt100 Escape.) + self._send_packet({'cmd': 'flush-input'}) + current_timeout = None + finally: + signal.signal(signal.SIGWINCH, signal.SIG_IGN) + + def _process(self, data_buffer): + """ + Handle incoming packet from server. + """ + packet = json.loads(data_buffer.decode('utf-8')) + + if packet['cmd'] == 'out': + # Call os.write manually. In Python2.6, sys.stdout.write doesn't use UTF-8. + os.write(sys.stdout.fileno(), packet['data'].encode('utf-8')) + + elif packet['cmd'] == 'suspend': + # Suspend client process to background. + if hasattr(signal, 'SIGTSTP'): + os.kill(os.getpid(), signal.SIGTSTP) + + elif packet['cmd'] == 'mode': + # Set terminal to raw/cooked. + action = packet['data'] + + if action == 'raw': + cm = raw_mode(sys.stdin.fileno()) + cm.__enter__() + self._mode_context_managers.append(cm) + + elif action == 'cooked': + cm = cooked_mode(sys.stdin.fileno()) + cm.__enter__() + self._mode_context_managers.append(cm) + + elif action == 'restore' and self._mode_context_managers: + cm = self._mode_context_managers.pop() + cm.__exit__() + + def _process_stdin(self): + """ + Received data on stdin. Read and send to server. + """ + with nonblocking(sys.stdin.fileno()): + data = self._stdin_reader.read() + + # Send input in chunks of 4k. + step = 4056 + for i in range(0, len(data), step): + self._send_packet({ + 'cmd': 'in', + 'data': data[i:i + step], + }) + + def _send_packet(self, data): + " Send to server. " + data = json.dumps(data).encode('utf-8') + + # Be sure that our socket is blocking, otherwise, the send() call could + # raise `BlockingIOError` if the buffer is full. + self.socket.setblocking(1) + + self.socket.send(data + b'\0') + + def _send_size(self): + " Report terminal size to server. " + rows, cols = _get_size(sys.stdout.fileno()) + self._send_packet({ + 'cmd': 'size', + 'data': [rows, cols] + }) + + +def list_clients(): + """ + List all the servers that are running. + """ + p = '%s/pymux.sock.%s.*' % (tempfile.gettempdir(), getpass.getuser()) + for path in glob.glob(p): + try: + yield PosixClient(path) + except socket.error: + pass diff --git a/pymux/client/windows.py b/pymux/client/windows.py new file mode 100644 index 0000000..5e0d733 --- /dev/null +++ b/pymux/client/windows.py @@ -0,0 +1,15 @@ +from __future__ import unicode_literals +from .base import Client + +__all__ = [ + 'WindowsClient', + 'list_clients', +] + +class WindowsClient(Client): + # NOT YES IMPLEMENTED. + pass + + +def list_clients(): + return [] diff --git a/pymux/commands/__init__.py b/pymux/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pymux/commands/aliases.py b/pymux/commands/aliases.py new file mode 100644 index 0000000..9984641 --- /dev/null +++ b/pymux/commands/aliases.py @@ -0,0 +1,48 @@ +""" +Aliases for all commands. +(On purpose kept compatible with tmux.) +""" +from __future__ import unicode_literals + +__all__ = ( + 'ALIASES', +) + + +ALIASES = { + 'bind': 'bind-key', + 'breakp': 'break-pane', + 'clearhist': 'clear-history', + 'confirm': 'confirm-before', + 'detach': 'detach-client', + 'display': 'display-message', + 'displayp': 'display-panes', + 'killp': 'kill-pane', + 'killw': 'kill-window', + 'last': 'last-window', + 'lastp': 'last-pane', + 'lextl': 'next-layout', + 'lsk': 'list-keys', + 'lsp': 'list-panes', + 'movew': 'move-window', + 'neww': 'new-window', + 'next': 'next-window', + 'pasteb': 'paste-buffer', + 'prev': 'previous-window', + 'prevl': 'previous-layout', + 'rename': 'rename-session', + 'renamew': 'rename-window', + 'resizep': 'resize-pane', + 'rotatew': 'rotate-window', + 'selectl': 'select-layout', + 'selectp': 'select-pane', + 'selectw': 'select-window', + 'send': 'send-keys', + 'set': 'set-option', + 'setw': 'set-window-option', + 'source': 'source-file', + 'splitw': 'split-window', + 'suspendc': 'suspend-client', + 'swapp': 'swap-pane', + 'unbind': 'unbind-key', +} diff --git a/pymux/commands/commands.py b/pymux/commands/commands.py new file mode 100644 index 0000000..5db40c2 --- /dev/null +++ b/pymux/commands/commands.py @@ -0,0 +1,659 @@ +from __future__ import unicode_literals +import docopt +import os +import re +import shlex +import six + +from prompt_toolkit.application.current import get_app +from prompt_toolkit.document import Document +from prompt_toolkit.key_binding.vi_state import InputMode + +from pymux.arrangement import LayoutTypes +from pymux.commands.aliases import ALIASES +from pymux.commands.utils import wrap_argument +from pymux.format import format_pymux_string +from pymux.key_mappings import pymux_key_to_prompt_toolkit_key_sequence, prompt_toolkit_key_to_vt100_key +from pymux.layout import focus_right, focus_left, focus_up, focus_down +from pymux.log import logger +from pymux.options import SetOptionError + +__all__ = ( + 'call_command_handler', + 'get_documentation_for_command', + 'get_option_flags_for_command', + 'handle_command', + 'has_command_handler', +) + +COMMANDS_TO_HANDLERS = {} # Global mapping of pymux commands to their handlers. +COMMANDS_TO_HELP = {} +COMMANDS_TO_OPTION_FLAGS = {} + + +def has_command_handler(command): + return command in COMMANDS_TO_HANDLERS + + +def get_documentation_for_command(command): + """ Return the help text for this command, or None if the command is not + known. """ + if command in COMMANDS_TO_HELP: + return 'Usage: %s %s' % (command, COMMANDS_TO_HELP.get(command, '')) + + +def get_option_flags_for_command(command): + " Return a list of options (-x flags) for this command. " + return COMMANDS_TO_OPTION_FLAGS.get(command, []) + + +def handle_command(pymux, input_string): + """ + Handle command. + """ + assert isinstance(input_string, six.text_type) + + input_string = input_string.strip() + logger.info('handle command: %s %s.', input_string, type(input_string)) + + if input_string and not input_string.startswith('#'): # Ignore comments. + try: + if six.PY2: + # In Python2.6, shlex doesn't work with unicode input at all. + # In Python2.7, shlex tries to encode using ASCII. + parts = shlex.split(input_string.encode('utf-8')) + parts = [p.decode('utf-8') for p in parts] + else: + parts = shlex.split(input_string) + except ValueError as e: + # E.g. missing closing quote. + pymux.show_message('Invalid command %s: %s' % (input_string, e)) + else: + call_command_handler(parts[0], pymux, parts[1:]) + + +def call_command_handler(command, pymux, arguments): + """ + Execute command. + + :param arguments: List of options. + """ + assert isinstance(arguments, list) + + # Resolve aliases. + command = ALIASES.get(command, command) + + try: + handler = COMMANDS_TO_HANDLERS[command] + except KeyError: + pymux.show_message('Invalid command: %s' % (command,)) + else: + try: + handler(pymux, arguments) + except CommandException as e: + pymux.show_message(e.message) + + +def cmd(name, options=''): + """ + Decorator for all commands. + + Commands will receive (pymux, variables) as input. + Commands can raise CommandException. + """ + # Validate options. + if options: + try: + docopt.docopt('Usage:\n %s %s' % (name, options, ), []) + except SystemExit: + pass + + def decorator(func): + def command_wrapper(pymux, arguments): + # Hack to make the 'bind-key' option work. + # (bind-key expects a variable number of arguments.) + if name == 'bind-key' and '--' not in arguments: + # Insert a double dash after the first non-option. + for i, p in enumerate(arguments): + if not p.startswith('-'): + arguments.insert(i + 1, '--') + break + + # Parse options. + try: + # Python 2 workaround: pass bytes to docopt. + # From the following, only the bytes version returns the right + # output in Python 2: + # docopt.docopt('Usage:\n app <params>...', [b'a', b'b']) + # docopt.docopt('Usage:\n app <params>...', [u'a', u'b']) + # https://github.com/docopt/docopt/issues/30 + # (Not sure how reliable this is...) + if six.PY2: + arguments = [a.encode('utf-8') for a in arguments] + + received_options = docopt.docopt( + 'Usage:\n %s %s' % (name, options), + arguments, + help=False) # Don't interpret the '-h' option as help. + + # Make sure that all the received options from docopt are + # unicode objects. (Docopt returns 'str' for Python2.) + for k, v in received_options.items(): + if isinstance(v, six.binary_type): + received_options[k] = v.decode('utf-8') + except SystemExit: + raise CommandException('Usage: %s %s' % (name, options)) + + # Call handler. + func(pymux, received_options) + + # Invalidate all clients, not just the current CLI. + pymux.invalidate() + + COMMANDS_TO_HANDLERS[name] = command_wrapper + COMMANDS_TO_HELP[name] = options + + # Get list of option flags. + flags = re.findall(r'-[a-zA-Z0-9]\b', options) + COMMANDS_TO_OPTION_FLAGS[name] = flags + + return func + return decorator + + +class CommandException(Exception): + " When raised from a command handler, this message will be shown. " + def __init__(self, message): + self.message = message + +# +# The actual commands. +# + + +@cmd('break-pane', options='[-d]') +def break_pane(pymux, variables): + dont_focus_window = variables['-d'] + + pymux.arrangement.break_pane(set_active=not dont_focus_window) + pymux.invalidate() + + +@cmd('select-pane', options='(-L|-R|-U|-D|-t <pane-id>)') +def select_pane(pymux, variables): + + if variables['-t']: + pane_id = variables['<pane-id>'] + w = pymux.arrangement.get_active_window() + + if pane_id == ':.+': + w.focus_next() + elif pane_id == ':.-': + w.focus_previous() + else: + # Select pane by index. + try: + pane_id = int(pane_id[1:]) + w.active_pane = w.panes[pane_id] + except (IndexError, ValueError): + raise CommandException('Invalid pane.') + + else: + if variables['-L']: h = focus_left + if variables['-U']: h = focus_up + if variables['-D']: h = focus_down + if variables['-R']: h = focus_right + + h(pymux) + + +@cmd('select-window', options='(-t <target-window>)') +def select_window(pymux, variables): + """ + Select a window. E.g: select-window -t :3 + """ + window_id = variables['<target-window>'] + + def invalid_window(): + raise CommandException('Invalid window: %s' % window_id) + + if window_id.startswith(':'): + try: + number = int(window_id[1:]) + except ValueError: + invalid_window() + else: + w = pymux.arrangement.get_window_by_index(number) + if w: + pymux.arrangement.set_active_window(w) + else: + invalid_window() + else: + invalid_window() + + +@cmd('move-window', options='(-t <dst-window>)') +def move_window(pymux, variables): + """ + Move window to a new index. + """ + dst_window = variables['<dst-window>'] + try: + new_index = int(dst_window) + except ValueError: + raise CommandException('Invalid window index: %r' % (dst_window, )) + + # Check first whether the index was not yet taken. + if pymux.arrangement.get_window_by_index(new_index): + raise CommandException("Can't move window: index in use.") + + # Save index. + w = pymux.arrangement.get_active_window() + pymux.arrangement.move_window(w, new_index) + + +@cmd('rotate-window', options='[-D|-U]') +def rotate_window(pymux, variables): + if variables['-D']: + pymux.arrangement.rotate_window(count=-1) + else: + pymux.arrangement.rotate_window() + + +@cmd('swap-pane', options='(-D|-U)') +def swap_pane(pymux, variables): + pymux.arrangement.get_active_window().rotate(with_pane_after_only=variables['-U']) + + +@cmd('kill-pane') +def kill_pane(pymux, variables): + pane = pymux.arrangement.get_active_pane() + pymux.kill_pane(pane) + + +@cmd('kill-window') +def kill_window(pymux, variables): + " Kill all panes in the current window. " + for pane in pymux.arrangement.get_active_window().panes: + pymux.kill_pane(pane) + + +@cmd('suspend-client') +def suspend_client(pymux, variables): + connection = pymux.get_connection() + + if connection: + connection.suspend_client_to_background() + + +@cmd('clock-mode') +def clock_mode(pymux, variables): + pane = pymux.arrangement.get_active_pane() + if pane: + pane.clock_mode = not pane.clock_mode + + +@cmd('last-pane') +def last_pane(pymux, variables): + w = pymux.arrangement.get_active_window() + prev_active_pane = w.previous_active_pane + + if prev_active_pane: + w.active_pane = prev_active_pane + + +@cmd('next-layout') +def next_layout(pymux, variables): + " Select next layout. " + pane = pymux.arrangement.get_active_window() + if pane: + pane.select_next_layout() + + +@cmd('previous-layout') +def previous_layout(pymux, variables): + " Select previous layout. " + pane = pymux.arrangement.get_active_window() + if pane: + pane.select_previous_layout() + + +@cmd('new-window', options='[(-n <name>)] [(-c <start-directory>)] [<executable>]') +def new_window(pymux, variables): + executable = variables['<executable>'] + start_directory = variables['<start-directory>'] + name = variables['<name>'] + + pymux.create_window(executable, start_directory=start_directory, name=name) + + +@cmd('next-window') +def next_window(pymux, variables): + " Focus the next window. " + pymux.arrangement.focus_next_window() + + +@cmd('last-window') +def _(pymux, variables): + " Go to previous active window. " + w = pymux.arrangement.get_previous_active_window() + + if w: + pymux.arrangement.set_active_window(w) + + +@cmd('previous-window') +def previous_window(pymux, variables): + " Focus the previous window. " + pymux.arrangement.focus_previous_window() + + +@cmd('select-layout', options='<layout-type>') +def select_layout(pymux, variables): + layout_type = variables['<layout-type>'] + + if layout_type in LayoutTypes._ALL: + pymux.arrangement.get_active_window().select_layout(layout_type) + else: + raise CommandException('Invalid layout type.') + + +@cmd('rename-window', options='<name>') +def rename_window(pymux, variables): + """ + Rename the active window. + """ + pymux.arrangement.get_active_window().chosen_name = variables['<name>'] + + +@cmd('rename-pane', options='<name>') +def rename_pane(pymux, variables): + """ + Rename the active pane. + """ + pymux.arrangement.get_active_pane().chosen_name = variables['<name>'] + + +@cmd('rename-session', options='<name>') +def rename_session(pymux, variables): + """ + Rename this session. + """ + pymux.session_name = variables['<name>'] + + +@cmd('split-window', options='[-v|-h] [(-c <start-directory>)] [<executable>]') +def split_window(pymux, variables): + """ + Split horizontally or vertically. + """ + executable = variables['<executable>'] + start_directory = variables['<start-directory>'] + + # The tmux definition of horizontal is the opposite of prompt_toolkit. + pymux.add_process(executable, vsplit=variables['-h'], + start_directory=start_directory) + + +@cmd('resize-pane', options="[(-L <left>)] [(-U <up>)] [(-D <down>)] [(-R <right>)] [-Z]") +def resize_pane(pymux, variables): + """ + Resize/zoom the active pane. + """ + try: + left = int(variables['<left>'] or 0) + right = int(variables['<right>'] or 0) + up = int(variables['<up>'] or 0) + down = int(variables['<down>'] or 0) + except ValueError: + raise CommandException('Expecting an integer.') + + w = pymux.arrangement.get_active_window() + + if w: + w.change_size_for_active_pane(up=up, right=right, down=down, left=left) + + # Zoom in/out. + if variables['-Z']: + w.zoom = not w.zoom + + +@cmd('detach-client') +def detach_client(pymux, variables): + """ + Detach client. + """ + pymux.detach_client(get_app()) + + +@cmd('confirm-before', options='[(-p <message>)] <command>') +def confirm_before(pymux, variables): + client_state = pymux.get_client_state() + + client_state.confirm_text = variables['<message>'] or '' + client_state.confirm_command = variables['<command>'] + + +@cmd('command-prompt', options='[(-p <message>)] [(-I <default>)] [<command>]') +def command_prompt(pymux, variables): + """ + Enter command prompt. + """ + client_state = pymux.get_client_state() + + if variables['<command>']: + # When a 'command' has been given. + client_state.prompt_text = variables['<message>'] or '(%s)' % variables['<command>'].split()[0] + client_state.prompt_command = variables['<command>'] + + client_state.prompt_mode = True + client_state.prompt_buffer.reset(Document( + format_pymux_string(pymux, variables['<default>'] or ''))) + + get_app().layout.focus(client_state.prompt_buffer) + else: + # Show the ':' prompt. + client_state.prompt_text = '' + client_state.prompt_command = '' + + get_app().layout.focus(client_state.command_buffer) + + # Go to insert mode. + get_app().vi_state.input_mode = InputMode.INSERT + + +@cmd('send-prefix') +def send_prefix(pymux, variables): + """ + Send prefix to active pane. + """ + process = pymux.arrangement.get_active_pane().process + + for k in pymux.key_bindings_manager.prefix: + vt100_data = prompt_toolkit_key_to_vt100_key(k) + process.write_input(vt100_data) + + +@cmd('bind-key', options='[-n] <key> [--] <command> [<arguments>...]') +def bind_key(pymux, variables): + """ + Bind a key sequence. + -n: Not necessary to use the prefix. + """ + key = variables['<key>'] + command = variables['<command>'] + arguments = variables['<arguments>'] + needs_prefix = not variables['-n'] + + try: + pymux.key_bindings_manager.add_custom_binding( + key, command, arguments, needs_prefix=needs_prefix) + except ValueError: + raise CommandException('Invalid key: %r' % (key, )) + + +@cmd('unbind-key', options='[-n] <key>') +def unbind_key(pymux, variables): + """ + Remove key binding. + """ + key = variables['<key>'] + needs_prefix = not variables['-n'] + + pymux.key_bindings_manager.remove_custom_binding( + key, needs_prefix=needs_prefix) + + +@cmd('send-keys', options='<keys>...') +def send_keys(pymux, variables): + """ + Send key strokes to the active process. + """ + pane = pymux.arrangement.get_active_pane() + + if pane.display_scroll_buffer: + raise CommandException('Cannot send keys. Pane is in copy mode.') + + for key in variables['<keys>']: + # Translate key from pymux key to prompt_toolkit key. + try: + keys_sequence = pymux_key_to_prompt_toolkit_key_sequence(key) + except ValueError: + raise CommandException('Invalid key: %r' % (key, )) + + # Translate prompt_toolkit key to VT100 key. + for k in keys_sequence: + pane.process.write_key(k) + + +@cmd('copy-mode', options='[-u]') +def copy_mode(pymux, variables): + """ + Enter copy mode. + """ + go_up = variables['-u'] # Go in copy mode and page-up directly. + # TODO: handle '-u' + + pane = pymux.arrangement.get_active_pane() + pane.enter_copy_mode() + + +@cmd('paste-buffer') +def paste_buffer(pymux, variables): + """ + Paste clipboard content into buffer. + """ + pane = pymux.arrangement.get_active_pane() + pane.process.write_input(get_app().clipboard.get_data().text, paste=True) + + +@cmd('source-file', options='<filename>') +def source_file(pymux, variables): + """ + Source configuration file. + """ + filename = os.path.expanduser(variables['<filename>']) + try: + with open(filename, 'rb') as f: + for line in f: + line = line.decode('utf-8') + handle_command(pymux, line) + except IOError as e: + raise CommandException('IOError: %s' % (e, )) + + +@cmd('set-option', options='<option> <value>') +def set_option(pymux, variables, window=False): + name = variables['<option>'] + value = variables['<value>'] + + if window: + option = pymux.window_options.get(name) + else: + option = pymux.options.get(name) + + if option: + try: + option.set_value(pymux, value) + except SetOptionError as e: + raise CommandException(e.message) + else: + raise CommandException('Invalid option: %s' % (name, )) + +@cmd('set-window-option', options='<option> <value>') +def set_window_option(pymux, variables): + set_option(pymux, variables, window=True) + + +@cmd('display-panes') +def display_panes(pymux, variables): + " Display the pane numbers. " + pymux.display_pane_numbers = True + + +@cmd('display-message', options='<message>') +def display_message(pymux, variables): + " Display a message. " + message = variables['<message>'] + client_state = pymux.get_client_state() + client_state.message = message + + +@cmd('clear-history') +def clear_history(pymux, variables): + " Clear scrollback buffer. " + pane = pymux.arrangement.get_active_pane() + + if pane.display_scroll_buffer: + raise CommandException('Not available in copy mode') + else: + pane.process.screen.clear_history() + + +@cmd('list-keys') +def list_keys(pymux, variables): + """ + Display all configured key bindings. + """ + # Create help string. + result = [] + + for k, custom_binding in pymux.key_bindings_manager.custom_bindings.items(): + needs_prefix, key = k + + result.append('bind-key %3s %-10s %s %s' % ( + ('-n' if needs_prefix else ''), key, custom_binding.command, + ' '.join(map(wrap_argument, custom_binding.arguments)))) + + result = '\n'.join(sorted(result)) + + # Display help in pane. + pymux.get_client_state().layout_manager.display_popup('list-keys', result) + + +@cmd('list-panes') +def list_panes(pymux, variables): + """ + Display a list of all the panes. + """ + w = pymux.arrangement.get_active_window() + active_pane = w.active_pane + + result = [] + + for i, p in enumerate(w.panes): + process = p.process + + result.append('%i: [%sx%s] [history %s/%s] %s\n' % ( + i, process.sx, process.sy, + min(pymux.history_limit, process.screen.line_offset + process.sy), + pymux.history_limit, + ('(active)' if p == active_pane else ''))) + + # Display help in pane. + active_pane.display_text(''.join(result), title='list-panes') + + +# Check whether all aliases point to real commands. +for k in ALIASES.values(): + assert k in COMMANDS_TO_HANDLERS diff --git a/pymux/commands/completer.py b/pymux/commands/completer.py new file mode 100644 index 0000000..6e2c018 --- /dev/null +++ b/pymux/commands/completer.py @@ -0,0 +1,185 @@ +from __future__ import unicode_literals + +from prompt_toolkit.completion import Completer, Completion, WordCompleter +from prompt_toolkit.document import Document + +from .aliases import ALIASES +from .commands import COMMANDS_TO_HANDLERS, get_option_flags_for_command +from .utils import wrap_argument + +from pymux.arrangement import LayoutTypes +from pymux.key_mappings import PYMUX_TO_PROMPT_TOOLKIT_KEYS + +from functools import partial + + +__all__ = ( + 'create_command_completer', +) + + +def create_command_completer(pymux): + return ShlexCompleter(partial(get_completions_for_parts, pymux=pymux)) + + +class CommandCompleter(Completer): + """ + Completer for command names. + """ + def __init__(self): + # Completer for full command names. + self._command_completer = WordCompleter( + sorted(COMMANDS_TO_HANDLERS.keys()), + ignore_case=True, WORD=True, match_middle=True) + + # Completer for aliases. + self._aliases_completer = WordCompleter( + sorted(ALIASES.keys()), + ignore_case=True, WORD=True, match_middle=True) + + def get_completions(self, document, complete_event): + # First, complete on full command names. + found = False + + for c in self._command_completer.get_completions(document, complete_event): + found = True + yield c + + # When no matches are found, complete aliases instead. + # The completion however, inserts the full name. + if not found: + for c in self._aliases_completer.get_completions(document, complete_event): + full_name = ALIASES.get(c.display) + + yield Completion(full_name, + start_position=c.start_position, + display='%s (%s)' % (c.display, full_name)) + + +_command_completer = CommandCompleter() +_layout_type_completer = WordCompleter(sorted(LayoutTypes._ALL), WORD=True) +_keys_completer = WordCompleter(sorted(PYMUX_TO_PROMPT_TOOLKIT_KEYS.keys()), + ignore_case=True, WORD=True) + + +def get_completions_for_parts(parts, last_part, complete_event, pymux): + completer = None + + # Resolve aliases. + if len(parts) > 0: + parts = [ALIASES.get(parts[0], parts[0])] + parts[1:] + + if len(parts) == 0: + # New command. + completer = _command_completer + + elif len(parts) >= 1 and last_part.startswith('-'): + flags = get_option_flags_for_command(parts[0]) + completer = WordCompleter(sorted(flags), WORD=True) + + elif len(parts) == 1 and parts[0] in ('set-option', 'set-window-option'): + options = pymux.options if parts[0] == 'set-option' else pymux.window_options + + completer = WordCompleter(sorted(options.keys()), sentence=True) + + elif len(parts) == 2 and parts[0] in ('set-option', 'set-window-option'): + options = pymux.options if parts[0] == 'set-option' else pymux.window_options + + option = options.get(parts[1]) + if option: + completer = WordCompleter(sorted(option.get_all_values(pymux)), sentence=True) + + elif len(parts) == 1 and parts[0] == 'select-layout': + completer = _layout_type_completer + + elif len(parts) == 1 and parts[0] == 'send-keys': + completer = _keys_completer + + elif parts[0] == 'bind-key': + if len(parts) == 1: + completer = _keys_completer + + elif len(parts) == 2: + completer = _command_completer + + # Recursive, for bind-key options. + if parts and parts[0] == 'bind-key' and len(parts) > 2: + for c in get_completions_for_parts(parts[2:], last_part, complete_event, pymux): + yield c + + if completer: + for c in completer.get_completions(Document(last_part), complete_event): + yield c + + +class ShlexCompleter(Completer): + """ + Completer that can be used when the input is parsed with shlex. + """ + def __init__(self, get_completions_for_parts): + assert callable(get_completions_for_parts) + self.get_completions_for_parts = get_completions_for_parts + + def get_completions(self, document, complete_event): + text = document.text_before_cursor + + parts, part_start_pos = self.parse(text) + + for c in self.get_completions_for_parts(parts[:-1], parts[-1], complete_event): + yield Completion(wrap_argument(parts[-1][:c.start_position] + c.text), + start_position=part_start_pos - len(document.text), + display=c.display, + display_meta=c.display_meta) + + @classmethod + def parse(cls, text): + """ + Parse the given text. Returns a tuple: + (list_of_parts, start_pos_of_the_last_part). + """ + OUTSIDE, IN_DOUBLE, IN_SINGLE = 0, 1, 2 + + iterator = enumerate(text) + state = OUTSIDE + parts = [] + current_part = '' + part_start_pos = 0 + + for i, c in iterator: # XXX: correctly handle empty strings. + if state == OUTSIDE: + if c.isspace(): + # New part. + if current_part: + parts.append(current_part) + part_start_pos = i + 1 + current_part = '' + elif c == '"': + state = IN_DOUBLE + elif c == "'": + state = IN_SINGLE + else: + current_part += c + + elif state == IN_SINGLE: + if c == "'": + state = OUTSIDE + elif c == "\\": + next(iterator) + current_part += c + else: + current_part += c + + elif state == IN_DOUBLE: + if c == '"': + state = OUTSIDE + elif c == "\\": + next(iterator) + current_part += c + else: + current_part += c + + parts.append(current_part) + return parts, part_start_pos + + +# assert ShlexCompleter.parse('"hello" world') == (['hello', 'world'], 8) diff --git a/pymux/commands/utils.py b/pymux/commands/utils.py new file mode 100644 index 0000000..be4e736 --- /dev/null +++ b/pymux/commands/utils.py @@ -0,0 +1,15 @@ +from __future__ import unicode_literals + +__all__ = ( + 'wrap_argument', +) + + +def wrap_argument(text): + """ + Wrap command argument in quotes and escape when this contains special characters. + """ + if not any(x in text for x in [' ', '"', "'", '\\']): + return text + else: + return '"%s"' % (text.replace('\\', r'\\').replace('"', r'\"'), ) diff --git a/pymux/entry_points/__init__.py b/pymux/entry_points/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pymux/entry_points/run_pymux.py b/pymux/entry_points/run_pymux.py new file mode 100644 index 0000000..b881c0f --- /dev/null +++ b/pymux/entry_points/run_pymux.py @@ -0,0 +1,163 @@ +#!/usr/bin/env python +""" +pymux: Pure Python terminal multiplexer. +Usage: + pymux [(standalone|start-server|attach)] [-d] + [--truecolor] [--ansicolor] [(-S <socket>)] [(-f <file>)] + [(--log <logfile>)] + [--] [<command>] + pymux list-sessions + pymux -h | --help + pymux <command> + +Options: + standalone : Run as a standalone process. (for debugging, detaching is + not possible. + start-server : Run a server daemon that can be attached later on. + attach : Attach to a running session. + + -f : Path to configuration file. By default: '~/.pymux.conf'. + -S : Unix socket path. + -d : Detach all other clients, when attaching. + --log : Logfile. + --truecolor : Render true color (24 bit) instead of 256 colors. + (Each client can set this separately.) +""" +from __future__ import unicode_literals, absolute_import + +from prompt_toolkit.output import ColorDepth +from pymux.main import Pymux +from pymux.client import create_client, list_clients +from pymux.utils import daemonize + +import docopt +import getpass +import logging +import os +import sys +import tempfile + +__all__ = ( + 'run', +) + + +def run(): + a = docopt.docopt(__doc__) + socket_name = a['<socket>'] or os.environ.get('PYMUX') + socket_name_from_env = not a['<socket>'] and os.environ.get('PYMUX') + filename = a['<file>'] + command = a['<command>'] + true_color = a['--truecolor'] + ansi_colors_only = a['--ansicolor'] or \ + bool(os.environ.get('PROMPT_TOOLKIT_ANSI_COLORS_ONLY', False)) + + # Parse pane_id from socket_name. It looks like "socket_name,pane_id". + if socket_name and ',' in socket_name: + socket_name, pane_id = socket_name.rsplit(',', 1) + else: + pane_id = None + + # Color depth. + if ansi_colors_only: + color_depth = ColorDepth.DEPTH_4_BIT + elif true_color: + color_depth = ColorDepth.DEPTH_24_BIT + else: + color_depth = ColorDepth.DEPTH_8_BIT + + # Expand socket name. (Make it possible to just accept numbers.) + if socket_name and socket_name.isdigit(): + socket_name = '%s/pymux.sock.%s.%s' % ( + tempfile.gettempdir(), getpass.getuser(), socket_name) + + # Configuration filename. + default_config = os.path.abspath(os.path.expanduser('~/.pymux.conf')) + if not filename and os.path.exists(default_config): + filename = default_config + + if filename: + filename = os.path.abspath(os.path.expanduser(filename)) + + # Create 'Pymux'. + mux = Pymux(source_file=filename, startup_command=command) + + # Setup logging. + if a['<logfile>']: + logging.basicConfig(filename=a['<logfile>'], level=logging.DEBUG) + + if a['standalone']: + mux.run_standalone(color_depth=color_depth) + + elif a['list-sessions'] or a['<command>'] in ('ls', 'list-sessions'): + for c in list_clients(): + print(c.socket_name) + + elif a['start-server']: + if socket_name_from_env: + _socket_from_env_warning() + sys.exit(1) + + # Log to stdout. + logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) + + # Run server. + socket_name = mux.listen_on_socket() + try: + mux.run_server() + except KeyboardInterrupt: + sys.exit(1) + + elif a['attach']: + if socket_name_from_env: + _socket_from_env_warning() + sys.exit(1) + + detach_other_clients = a['-d'] + + if socket_name: + create_client(socket_name).attach( + detach_other_clients=detach_other_clients, + color_depth=color_depth) + else: + # Connect to the first server. + for c in list_clients(): + c.attach(detach_other_clients=detach_other_clients, + color_depth=color_depth) + break + else: # Nobreak. + print('No pymux instance found.') + sys.exit(1) + + elif a['<command>'] and socket_name: + create_client(socket_name).run_command(a['<command>'], pane_id) + + elif not socket_name: + # Run client/server combination. + socket_name = mux.listen_on_socket(socket_name) + pid = daemonize() + + if pid > 0: + # Create window. It is important that this happens in the daemon, + # because the parent of the process running inside should be this + # daemon. (Otherwise the `waitpid` call won't work.) + mux.run_server() + else: + create_client(socket_name).attach(color_depth=color_depth) + + else: + if socket_name_from_env: + _socket_from_env_warning() + sys.exit(1) + else: + print('Invalid command.') + sys.exit(1) + + +def _socket_from_env_warning(): + print('Please be careful nesting pymux sessions.') + print('Unset PYMUX environment variable first.') + + +if __name__ == '__main__': + run() diff --git a/pymux/enums.py b/pymux/enums.py new file mode 100644 index 0000000..ae1636a --- /dev/null +++ b/pymux/enums.py @@ -0,0 +1,13 @@ +from __future__ import unicode_literals + +__all__ = ( + 'COMMAND', + 'PROMPT', +) + + +#: Name of the command buffer. +COMMAND = 'COMMAND' + +#: Name of the input for a "command-prompt" command. +PROMPT = 'PROMPT' diff --git a/pymux/filters.py b/pymux/filters.py new file mode 100644 index 0000000..49f99bf --- /dev/null +++ b/pymux/filters.py @@ -0,0 +1,101 @@ +from __future__ import unicode_literals +from prompt_toolkit.filters import Filter + +__all__ = ( + 'HasPrefix', + 'WaitsForConfirmation', + 'InCommandMode', + 'WaitsForPrompt', + 'InScrollBuffer', + 'InScrollBufferNotSearching', + 'InScrollBufferSearching', +) + + +class HasPrefix(Filter): + """ + When the prefix key (Usual C-b) has been pressed. + """ + def __init__(self, pymux): + self.pymux = pymux + + def __call__(self): + return self.pymux.get_client_state().has_prefix + + +class WaitsForConfirmation(Filter): + """ + Waiting for a yes/no key press. + """ + def __init__(self, pymux): + self.pymux = pymux + + def __call__(self): + return bool(self.pymux.get_client_state().confirm_command) + + +class InCommandMode(Filter): + """ + When ':' has been pressed.' + """ + def __init__(self, pymux): + self.pymux = pymux + + def __call__(self): + client_state = self.pymux.get_client_state() + return client_state.command_mode and not client_state.confirm_command + + +class WaitsForPrompt(Filter): + """ + Waiting for input for a "command-prompt" command. + """ + def __init__(self, pymux): + self.pymux = pymux + + def __call__(self): + client_state = self.pymux.get_client_state() + return bool(client_state.prompt_command) and not client_state.confirm_command + + +def _confirm_or_prompt_or_command(pymux): + " True when we are waiting for a command, prompt or confirmation. " + client_state = pymux.get_client_state() + if client_state.confirm_text or client_state.prompt_command or client_state.command_mode: + return True + + +class InScrollBuffer(Filter): + def __init__(self, pymux): + self.pymux = pymux + + def __call__(self): + if _confirm_or_prompt_or_command(self.pymux): + return False + + pane = self.pymux.arrangement.get_active_pane() + return pane.display_scroll_buffer + + +class InScrollBufferNotSearching(Filter): + def __init__(self, pymux): + self.pymux = pymux + + def __call__(self): + if _confirm_or_prompt_or_command(self.pymux): + return False + + pane = self.pymux.arrangement.get_active_pane() + return pane.display_scroll_buffer and not pane.is_searching + + +class InScrollBufferSearching(Filter): + def __init__(self, pymux): + self.pymux = pymux + + def __call__(self): + if _confirm_or_prompt_or_command(self.pymux): + return False + + pane = self.pymux.arrangement.get_active_pane() + return pane.display_scroll_buffer and pane.is_searching diff --git a/pymux/format.py b/pymux/format.py new file mode 100644 index 0000000..3f2cdad --- /dev/null +++ b/pymux/format.py @@ -0,0 +1,99 @@ +""" +Pymux string formatting. +""" +from __future__ import unicode_literals +import datetime +import socket +import six + +__all__ = ( + 'format_pymux_string', +) + + +def format_pymux_string(pymux, string, window=None, pane=None): + """ + Apply pymux sting formatting. (Similar to tmux.) + E.g. #P is replaced by the index of the active pane. + + We try to stay compatible with tmux, if possible. + One thing that we won't support (for now) is colors, because our styling + works different. (With a Style class.) On the other hand, in the future, we + could allow things like `#[token=Token.Title.PID]`. This gives a clean + separation of semantics and colors, making it easy to write different color + schemes. + """ + arrangement = pymux.arrangement + + if window is None: + window = arrangement.get_active_window() + + if pane is None: + pane = window.active_pane + + def id_of_pane(): + return '%s' % (pane.pane_id, ) + + def index_of_pane(): + try: + return '%s' % (window.get_pane_index(pane), ) + except ValueError: + return '/' + + def index_of_window(): + return '%s' % (window.index, ) + + def name_of_window(): + return window.name or '(noname)' + + def window_flags(): + z = 'Z' if window.zoom else '' + + if window == arrangement.get_active_window(): + return '*' + z + elif window == arrangement.get_previous_active_window(): + return '-' + z + else: + return z + ' ' + + def name_of_session(): + return pymux.session_name + + def title_of_pane(): + return pane.process.screen.title + + def hostname(): + return socket.gethostname() + + def literal(): + return '#' + + format_table = { + '#D': id_of_pane, + '#F': window_flags, + '#I': index_of_window, + '#P': index_of_pane, + '#S': name_of_session, + '#T': title_of_pane, + '#W': name_of_window, + '#h': hostname, + '##': literal, + } + + # Date/time formatting. + if '%' in string: + try: + if six.PY2: + string = datetime.datetime.now().strftime( + string.encode('utf-8')).decode('utf-8') + else: + string = datetime.datetime.now().strftime(string) + except ValueError: # strftime format ends with raw % + string = '<ValueError>' + + # Apply '#' formatting. + for symbol, f in format_table.items(): + if symbol in string: + string = string.replace(symbol, f()) + + return string diff --git a/pymux/key_bindings.py b/pymux/key_bindings.py new file mode 100644 index 0000000..ceda0c1 --- /dev/null +++ b/pymux/key_bindings.py @@ -0,0 +1,259 @@ +""" +Key bindings. +""" +from __future__ import unicode_literals +from prompt_toolkit.filters import has_focus, Condition, has_selection +from prompt_toolkit.keys import Keys +from prompt_toolkit.selection import SelectionType +from prompt_toolkit.key_binding import KeyBindings, merge_key_bindings + +from .enums import COMMAND, PROMPT +from .filters import WaitsForConfirmation, HasPrefix, InScrollBuffer, InScrollBufferNotSearching +from .key_mappings import pymux_key_to_prompt_toolkit_key_sequence +from .commands.commands import call_command_handler + +import six + +__all__ = ( + 'PymuxKeyBindings', +) + + +class PymuxKeyBindings(object): + """ + Pymux key binding manager. + """ + def __init__(self, pymux): + self.pymux = pymux + + def get_search_state(): + " Return the currently active SearchState. (The one for the focused pane.) " + return pymux.arrangement.get_active_pane().search_state + + self.custom_key_bindings = KeyBindings() + + self.key_bindings = merge_key_bindings([ + self._load_builtins(), + self.custom_key_bindings, + ]) + + self._prefix = ('c-b', ) + self._prefix_binding = None + + # Load initial bindings. + self._load_prefix_binding() + + # Custom user configured key bindings. + # { (needs_prefix, key) -> (command, handler) } + self.custom_bindings = {} + + def _load_prefix_binding(self): + """ + Load the prefix key binding. + """ + pymux = self.pymux + + # Remove previous binding. + if self._prefix_binding: + self.key_bindings.remove_binding(self._prefix_binding) + + # Create new Python binding. + @self.custom_key_bindings.add(*self._prefix, filter= + ~(HasPrefix(pymux) | has_focus(COMMAND) | has_focus(PROMPT) | WaitsForConfirmation(pymux))) + def enter_prefix_handler(event): + " Enter prefix mode. " + pymux.get_client_state().has_prefix = True + + self._prefix_binding = enter_prefix_handler + + @property + def prefix(self): + " Get the prefix key. " + return self._prefix + + @prefix.setter + def prefix(self, keys): + """ + Set a new prefix key. + """ + assert isinstance(keys, tuple) + + self._prefix = keys + self._load_prefix_binding() + + def _load_builtins(self): + """ + Fill the Registry with the hard coded key bindings. + """ + pymux = self.pymux + kb = KeyBindings() + + # Create filters. + has_prefix = HasPrefix(pymux) + waits_for_confirmation = WaitsForConfirmation(pymux) + prompt_or_command_focus = has_focus(COMMAND) | has_focus(PROMPT) + display_pane_numbers = Condition(lambda: pymux.display_pane_numbers) + in_scroll_buffer_not_searching = InScrollBufferNotSearching(pymux) + + @kb.add(Keys.Any, filter=has_prefix) + def _(event): + " Ignore unknown Ctrl-B prefixed key sequences. " + pymux.get_client_state().has_prefix = False + + @kb.add('c-c', filter=prompt_or_command_focus & ~has_prefix) + @kb.add('c-g', filter=prompt_or_command_focus & ~has_prefix) +# @kb.add('backspace', filter=has_focus(COMMAND) & ~has_prefix & +# Condition(lambda: cli.buffers[COMMAND].text == '')) + def _(event): + " Leave command mode. " + pymux.leave_command_mode(append_to_history=False) + + @kb.add('y', filter=waits_for_confirmation) + @kb.add('Y', filter=waits_for_confirmation) + def _(event): + """ + Confirm command. + """ + client_state = pymux.get_client_state() + + command = client_state.confirm_command + client_state.confirm_command = None + client_state.confirm_text = None + + pymux.handle_command(command) + + @kb.add('n', filter=waits_for_confirmation) + @kb.add('N', filter=waits_for_confirmation) + @kb.add('c-c' , filter=waits_for_confirmation) + def _(event): + """ + Cancel command. + """ + client_state = pymux.get_client_state() + client_state.confirm_command = None + client_state.confirm_text = None + + @kb.add('c-c', filter=in_scroll_buffer_not_searching) + @kb.add('enter', filter=in_scroll_buffer_not_searching) + @kb.add('q', filter=in_scroll_buffer_not_searching) + def _(event): + " Exit scroll buffer. " + pane = pymux.arrangement.get_active_pane() + pane.exit_scroll_buffer() + + @kb.add(' ', filter=in_scroll_buffer_not_searching) + def _(event): + " Enter selection mode when pressing space in copy mode. " + event.current_buffer.start_selection(selection_type=SelectionType.CHARACTERS) + + @kb.add('enter', filter=in_scroll_buffer_not_searching & has_selection) + def _(event): + " Copy selection when pressing Enter. " + clipboard_data = event.current_buffer.copy_selection() + event.app.clipboard.set_data(clipboard_data) + + @kb.add('v', filter=in_scroll_buffer_not_searching & has_selection) + def _(event): + " Toggle between selection types. " + types = [SelectionType.LINES, SelectionType.BLOCK, SelectionType.CHARACTERS] + selection_state = event.current_buffer.selection_state + + try: + index = types.index(selection_state.type) + except ValueError: # Not in list. + index = 0 + + selection_state.type = types[(index + 1) % len(types)] + + @Condition + def popup_displayed(): + return self.pymux.get_client_state().display_popup + + @kb.add('q', filter=popup_displayed, eager=True) + def _(event): + " Quit pop-up dialog. " + self.pymux.get_client_state().display_popup = False + + @kb.add(Keys.Any, eager=True, filter=display_pane_numbers) + def _(event): + " When the pane numbers are shown. Any key press should hide them. " + pymux.display_pane_numbers = False + + @Condition + def clock_displayed(): + " " + pane = pymux.arrangement.get_active_pane() + return pane.clock_mode + + @kb.add(Keys.Any, eager=True, filter=clock_displayed) + def _(event): + " When the clock is displayed. Any key press should hide it. " + pane = pymux.arrangement.get_active_pane() + pane.clock_mode = False + + return kb + + def add_custom_binding(self, key_name, command, arguments, needs_prefix=False): + """ + Add custom binding (for the "bind-key" command.) + Raises ValueError if the give `key_name` is an invalid name. + + :param key_name: Pymux key name, for instance "C-a" or "M-x". + """ + assert isinstance(key_name, six.text_type) + assert isinstance(command, six.text_type) + assert isinstance(arguments, list) + + # Unbind previous key. + self.remove_custom_binding(key_name, needs_prefix=needs_prefix) + + # Translate the pymux key name into a prompt_toolkit key sequence. + # (Can raise ValueError.) + keys_sequence = pymux_key_to_prompt_toolkit_key_sequence(key_name) + + # Create handler and add to Registry. + if needs_prefix: + filter = HasPrefix(self.pymux) + else: + filter = ~HasPrefix(self.pymux) + + filter = filter & ~(WaitsForConfirmation(self.pymux) | + has_focus(COMMAND) | has_focus(PROMPT)) + + def key_handler(event): + " The actual key handler. " + call_command_handler(command, self.pymux, arguments) + self.pymux.get_client_state().has_prefix = False + + self.custom_key_bindings.add(*keys_sequence, filter=filter)(key_handler) + + # Store key in `custom_bindings` in order to be able to call + # "unbind-key" later on. + k = (needs_prefix, key_name) + self.custom_bindings[k] = CustomBinding(key_handler, command, arguments) + + def remove_custom_binding(self, key_name, needs_prefix=False): + """ + Remove custom key binding for a key. + + :param key_name: Pymux key name, for instance "C-A". + """ + k = (needs_prefix, key_name) + + if k in self.custom_bindings: + self.custom_key_bindings.remove(self.custom_bindings[k].handler) + del self.custom_bindings[k] + + +class CustomBinding(object): + """ + Record for storing a single custom key binding. + """ + def __init__(self, handler, command, arguments): + assert callable(handler) + assert isinstance(command, six.text_type) + assert isinstance(arguments, list) + + self.handler = handler + self.command = command + self.arguments = arguments diff --git a/pymux/key_mappings.py b/pymux/key_mappings.py new file mode 100644 index 0000000..36ce5aa --- /dev/null +++ b/pymux/key_mappings.py @@ -0,0 +1,231 @@ +""" +Mapping between vt100 key sequences, the prompt_toolkit key constants and the +Pymux namings. (Those namings are kept compatible with tmux.) +""" +from __future__ import unicode_literals +from prompt_toolkit.keys import Keys +from prompt_toolkit.input.vt100_parser import ANSI_SEQUENCES + +__all__ = ( + 'pymux_key_to_prompt_toolkit_key_sequence', + 'prompt_toolkit_key_to_vt100_key', + 'PYMUX_TO_PROMPT_TOOLKIT_KEYS', +) + + +def pymux_key_to_prompt_toolkit_key_sequence(key): + """ + Turn a pymux description of a key. E.g. "C-a" or "M-x" into a + prompt-toolkit key sequence. + + Raises `ValueError` if the key is not known. + """ + # Make the c- and m- prefixes case insensitive. + if key.lower().startswith('m-c-'): + key = 'M-C-' + key[4:] + elif key.lower().startswith('c-'): + key = 'C-' + key[2:] + elif key.lower().startswith('m-'): + key = 'M-' + key[2:] + + # Lookup key. + try: + return PYMUX_TO_PROMPT_TOOLKIT_KEYS[key] + except KeyError: + if len(key) == 1: + return (key, ) + else: + raise ValueError('Unknown key: %r' % (key, )) + + +# Create a mapping from prompt_toolkit keys to their ANSI sequences. +# TODO: This is not completely correct yet. It doesn't take +# cursor/application mode into account. Create new tables for this. +_PROMPT_TOOLKIT_KEY_TO_VT100 = dict( + (key, vt100_data) for vt100_data, key in ANSI_SEQUENCES.items()) + + +def prompt_toolkit_key_to_vt100_key(key, application_mode=False): + """ + Turn a prompt toolkit key. (E.g Keys.ControlB) into a Vt100 key sequence. + (E.g. \x1b[A.) + """ + application_mode_keys = { + Keys.Up: '\x1bOA', + Keys.Left: '\x1bOD', + Keys.Right: '\x1bOC', + Keys.Down: '\x1bOB', + } + + if key == Keys.ControlJ: + # Required for redis-cli. This can be removed when prompt_toolkit stops + # replacing \r by \n. + return '\r' + + if key == '\n': + return '\r' + + elif application_mode and key in application_mode_keys: + return application_mode_keys.get(key) + else: + return _PROMPT_TOOLKIT_KEY_TO_VT100.get(key, key) + + +PYMUX_TO_PROMPT_TOOLKIT_KEYS = { + 'Space': (' '), + + 'C-a': (Keys.ControlA, ), + 'C-b': (Keys.ControlB, ), + 'C-c': (Keys.ControlC, ), + 'C-d': (Keys.ControlD, ), + 'C-e': (Keys.ControlE, ), + 'C-f': (Keys.ControlF, ), + 'C-g': (Keys.ControlG, ), + 'C-h': (Keys.ControlH, ), + 'C-i': (Keys.ControlI, ), + 'C-j': (Keys.ControlJ, ), + 'C-k': (Keys.ControlK, ), + 'C-l': (Keys.ControlL, ), + 'C-m': (Keys.ControlM, ), + 'C-n': (Keys.ControlN, ), + 'C-o': (Keys.ControlO, ), + 'C-p': (Keys.ControlP, ), + 'C-q': (Keys.ControlQ, ), + 'C-r': (Keys.ControlR, ), + 'C-s': (Keys.ControlS, ), + 'C-t': (Keys.ControlT, ), + 'C-u': (Keys.ControlU, ), + 'C-v': (Keys.ControlV, ), + 'C-w': (Keys.ControlW, ), + 'C-x': (Keys.ControlX, ), + 'C-y': (Keys.ControlY, ), + 'C-z': (Keys.ControlZ, ), + + 'C-Left': (Keys.ControlLeft, ), + 'C-Right': (Keys.ControlRight, ), + 'C-Up': (Keys.ControlUp, ), + 'C-Down': (Keys.ControlDown, ), + 'C-\\': (Keys.ControlBackslash, ), + + 'S-Left': (Keys.ShiftLeft, ), + 'S-Right': (Keys.ShiftRight, ), + 'S-Up': (Keys.ShiftUp, ), + 'S-Down': (Keys.ShiftDown, ), + + 'M-C-a': (Keys.Escape, Keys.ControlA, ), + 'M-C-b': (Keys.Escape, Keys.ControlB, ), + 'M-C-c': (Keys.Escape, Keys.ControlC, ), + 'M-C-d': (Keys.Escape, Keys.ControlD, ), + 'M-C-e': (Keys.Escape, Keys.ControlE, ), + 'M-C-f': (Keys.Escape, Keys.ControlF, ), + 'M-C-g': (Keys.Escape, Keys.ControlG, ), + 'M-C-h': (Keys.Escape, Keys.ControlH, ), + 'M-C-i': (Keys.Escape, Keys.ControlI, ), + 'M-C-j': (Keys.Escape, Keys.ControlJ, ), + 'M-C-k': (Keys.Escape, Keys.ControlK, ), + 'M-C-l': (Keys.Escape, Keys.ControlL, ), + 'M-C-m': (Keys.Escape, Keys.ControlM, ), + 'M-C-n': (Keys.Escape, Keys.ControlN, ), + 'M-C-o': (Keys.Escape, Keys.ControlO, ), + 'M-C-p': (Keys.Escape, Keys.ControlP, ), + 'M-C-q': (Keys.Escape, Keys.ControlQ, ), + 'M-C-r': (Keys.Escape, Keys.ControlR, ), + 'M-C-s': (Keys.Escape, Keys.ControlS, ), + 'M-C-t': (Keys.Escape, Keys.ControlT, ), + 'M-C-u': (Keys.Escape, Keys.ControlU, ), + 'M-C-v': (Keys.Escape, Keys.ControlV, ), + 'M-C-w': (Keys.Escape, Keys.ControlW, ), + 'M-C-x': (Keys.Escape, Keys.ControlX, ), + 'M-C-y': (Keys.Escape, Keys.ControlY, ), + 'M-C-z': (Keys.Escape, Keys.ControlZ, ), + + 'M-C-Left': (Keys.Escape, Keys.ControlLeft, ), + 'M-C-Right': (Keys.Escape, Keys.ControlRight, ), + 'M-C-Up': (Keys.Escape, Keys.ControlUp, ), + 'M-C-Down': (Keys.Escape, Keys.ControlDown, ), + 'M-C-\\': (Keys.Escape, Keys.ControlBackslash, ), + + 'M-a': (Keys.Escape, 'a'), + 'M-b': (Keys.Escape, 'b'), + 'M-c': (Keys.Escape, 'c'), + 'M-d': (Keys.Escape, 'd'), + 'M-e': (Keys.Escape, 'e'), + 'M-f': (Keys.Escape, 'f'), + 'M-g': (Keys.Escape, 'g'), + 'M-h': (Keys.Escape, 'h'), + 'M-i': (Keys.Escape, 'i'), + 'M-j': (Keys.Escape, 'j'), + 'M-k': (Keys.Escape, 'k'), + 'M-l': (Keys.Escape, 'l'), + 'M-m': (Keys.Escape, 'm'), + 'M-n': (Keys.Escape, 'n'), + 'M-o': (Keys.Escape, 'o'), + 'M-p': (Keys.Escape, 'p'), + 'M-q': (Keys.Escape, 'q'), + 'M-r': (Keys.Escape, 'r'), + 'M-s': (Keys.Escape, 's'), + 'M-t': (Keys.Escape, 't'), + 'M-u': (Keys.Escape, 'u'), + 'M-v': (Keys.Escape, 'v'), + 'M-w': (Keys.Escape, 'w'), + 'M-x': (Keys.Escape, 'x'), + 'M-y': (Keys.Escape, 'y'), + 'M-z': (Keys.Escape, 'z'), + + 'M-0': (Keys.Escape, '0'), + 'M-1': (Keys.Escape, '1'), + 'M-2': (Keys.Escape, '2'), + 'M-3': (Keys.Escape, '3'), + 'M-4': (Keys.Escape, '4'), + 'M-5': (Keys.Escape, '5'), + 'M-6': (Keys.Escape, '6'), + 'M-7': (Keys.Escape, '7'), + 'M-8': (Keys.Escape, '8'), + 'M-9': (Keys.Escape, '9'), + + 'M-Up': (Keys.Escape, Keys.Up), + 'M-Down': (Keys.Escape, Keys.Down, ), + 'M-Left': (Keys.Escape, Keys.Left, ), + 'M-Right': (Keys.Escape, Keys.Right, ), + 'Left': (Keys.Left, ), + 'Right': (Keys.Right, ), + 'Up': (Keys.Up, ), + 'Down': (Keys.Down, ), + 'BSpace': (Keys.Backspace, ), + 'BTab': (Keys.BackTab, ), + 'DC': (Keys.Delete, ), + 'IC': (Keys.Insert, ), + 'End': (Keys.End, ), + 'Enter': (Keys.ControlJ, ), + 'Home': (Keys.Home, ), + 'Escape': (Keys.Escape, ), + 'Tab': (Keys.Tab, ), + + 'F1': (Keys.F1, ), + 'F2': (Keys.F2, ), + 'F3': (Keys.F3, ), + 'F4': (Keys.F4, ), + 'F5': (Keys.F5, ), + 'F6': (Keys.F6, ), + 'F7': (Keys.F7, ), + 'F8': (Keys.F8, ), + 'F9': (Keys.F9, ), + 'F10': (Keys.F10, ), + 'F11': (Keys.F11, ), + 'F12': (Keys.F12, ), + 'F13': (Keys.F13, ), + 'F14': (Keys.F14, ), + 'F15': (Keys.F15, ), + 'F16': (Keys.F16, ), + 'F17': (Keys.F17, ), + 'F18': (Keys.F18, ), + 'F19': (Keys.F19, ), + 'F20': (Keys.F20, ), + + 'NPage': (Keys.PageDown, ), + 'PageDown': (Keys.PageDown, ), + 'PgDn': (Keys.PageDown, ), + 'PPage': (Keys.PageUp, ), + 'PageUp': (Keys.PageUp, ), + 'PgUp': (Keys.PageUp, ), +} diff --git a/pymux/layout.py b/pymux/layout.py new file mode 100644 index 0000000..6ec8fda --- /dev/null +++ b/pymux/layout.py @@ -0,0 +1,943 @@ +# encoding: utf-8 +""" +The layout engine. This builds the prompt_toolkit layout. +""" +from __future__ import unicode_literals + +from prompt_toolkit.application.current import get_app +from prompt_toolkit.filters import Condition, has_focus +from prompt_toolkit.formatted_text import FormattedText, HTML +from prompt_toolkit.layout.containers import VSplit, HSplit, Window, FloatContainer, Float, ConditionalContainer, Container, WindowAlign, to_container +from prompt_toolkit.layout.controls import BufferControl, FormattedTextControl +from prompt_toolkit.layout.dimension import Dimension +from prompt_toolkit.layout.dimension import Dimension as D +from prompt_toolkit.layout.dimension import to_dimension, is_dimension +from prompt_toolkit.layout.menus import CompletionsMenu +from prompt_toolkit.layout.processors import BeforeInput, ShowArg, AppendAutoSuggestion, Processor, Transformation, HighlightSelectionProcessor +from prompt_toolkit.layout.screen import Char +from prompt_toolkit.mouse_events import MouseEventType +from prompt_toolkit.widgets import FormattedTextToolbar, TextArea, Dialog, SearchToolbar + +from six.moves import range +from functools import partial + +import pymux.arrangement as arrangement +import datetime +import weakref +import six + +from .filters import WaitsForConfirmation +from .format import format_pymux_string +from .log import logger + +__all__ = ( + 'LayoutManager', +) + + +class Justify: + " Justify enum for the status bar. " + LEFT = 'left' + CENTER = 'center' + RIGHT = 'right' + + _ALL = [LEFT, CENTER, RIGHT] + + +class Z_INDEX: + HIGHLIGHTED_BORDER = 2 + STATUS_BAR = 5 + COMMAND_LINE = 6 + MESSAGE_TOOLBAR = 7 + WINDOW_TITLE_BAR = 8 + POPUP = 9 + + +class Background(Container): + """ + Generate the background of dots, which becomes visible when several clients + are attached and not all of them have the same size. + + (This is implemented as a Container, rather than a UIControl wrapped in a + Window, because it can be done very effecient this way.) + """ + def reset(self): + pass + + def preferred_width(self, max_available_width): + return D() + + def preferred_height(self, width, max_available_height): + return D() + + def write_to_screen(self, screen, mouse_handlers, write_position, + parent_style, erase_bg, z_index): + " Fill the whole area of write_position with dots. " + default_char = Char(' ', 'class:background') + dot = Char('.', 'class:background') + + ypos = write_position.ypos + xpos = write_position.xpos + + for y in range(ypos, ypos + write_position.height): + row = screen.data_buffer[y] + + for x in range(xpos, xpos + write_position.width): + row[x] = dot if (x + y) % 3 == 0 else default_char + + def get_children(self): + return [] + + +# Numbers for the clock and pane numbering. +_numbers = list(zip(*[ # (Transpose x/y.) + ['#####', ' #', '#####', '#####', '# #', '#####', '#####', '#####', '#####', '#####'], + ['# #', ' #', ' #', ' #', '# #', '# ', '# ', ' #', '# #', '# #'], + ['# #', ' #', '#####', '#####', '#####', '#####', '#####', ' #', '#####', '#####'], + ['# #', ' #', '# ', ' #', ' #', ' #', '# #', ' #', '# #', ' #'], + ['#####', ' #', '#####', '#####', ' #', '#####', '#####', ' #', '#####', '#####'], +])) + + +def _draw_number(screen, x_offset, y_offset, number, style='class:clock', + transparent=False): + " Write number at position. " + fg = Char(' ', 'class:clock') + bg = Char(' ', '') + + for y, row in enumerate(_numbers[number]): + screen_row = screen.data_buffer[y + y_offset] + for x, n in enumerate(row): + if n == '#': + screen_row[x + x_offset] = fg + elif not transparent: + screen_row[x + x_offset] = bg + + +class BigClock(Container): + """ + Display a big clock. + """ + WIDTH = 28 + HEIGHT = 5 + + def __init__(self, on_click): + assert callable(on_click) + self.on_click = on_click + + def reset(self): + pass + + def write_to_screen(self, screen, mouse_handlers, write_position, + parent_style, erase_bg, z_index): + xpos = write_position.xpos + ypos = write_position.ypos + + # Erase background. + bg = Char(' ', '') + + def draw_func(): + for y in range(ypos, self.HEIGHT + ypos): + row = screen.data_buffer[y] + for x in range(xpos, xpos + self.WIDTH): + row[x] = bg + + # Display time. + now = datetime.datetime.now() + _draw_number(screen, xpos + 0, ypos, now.hour // 10) + _draw_number(screen, xpos + 6, ypos, now.hour % 10) + _draw_number(screen, xpos + 16, ypos, now.minute // 10) + _draw_number(screen, xpos + 23, ypos, now.minute % 10) + + # Add a colon + screen.data_buffer[ypos + 1][xpos + 13] = Char(' ', 'class:clock') + screen.data_buffer[ypos + 3][xpos + 13] = Char(' ', 'class:clock') + + screen.width = self.WIDTH + screen.height = self.HEIGHT + + mouse_handlers.set_mouse_handler_for_range( + x_min=xpos, + x_max=xpos + write_position.width, + y_min=ypos, + y_max=ypos + write_position.height, + handler=self._mouse_handler) + + screen.draw_with_z_index(z_index=z_index, draw_func=draw_func) + + def _mouse_handler(self, cli, mouse_event): + " Click callback. " + if mouse_event.event_type == MouseEventType.MOUSE_UP: + self.on_click(cli) + else: + return NotImplemented + + def preferred_width(self, max_available_width): + return D.exact(BigClock.WIDTH) + + def preferred_height(self, width, max_available_height): + return D.exact(BigClock.HEIGHT) + + def get_children(self): + return [] + + +class PaneNumber(Container): # XXX: make FormattedTextControl + """ + Number of panes, to be drawn in the middle of the pane. + """ + WIDTH = 5 + HEIGHT = 5 + + def __init__(self, pymux, arrangement_pane): + self.pymux = pymux + self.arrangement_pane = arrangement_pane + + def reset(self): + pass + + def _get_index(self): + window = self.pymux.arrangement.get_active_window() + try: + return window.get_pane_index(self.arrangement_pane) + except ValueError: + return 0 + + def preferred_width(self, max_available_width): + # Enough to display all the digits. + return Dimension.exact(6 * len('%s' % self._get_index()) - 1) + + def preferred_height(self, width, max_available_height): + return Dimension.exact(self.HEIGHT) + + def write_to_screen(self, screen, mouse_handlers, write_position, + parent_style, erase_bg, z_index): + style = 'class:panenumber' + + def draw_func(): + for i, d in enumerate('%s' % (self._get_index(),)): + _draw_number(screen, write_position.xpos + i * 6, write_position.ypos, + int(d), style=style, transparent=True) + + screen.draw_with_z_index(z_index=z_index, draw_func=draw_func) + + def get_children(self): + return [] + + +class MessageToolbar(FormattedTextToolbar): + """ + Pop-up (at the bottom) for showing error/status messages. + """ + def __init__(self, client_state): + def get_message(): + # If there is a message to be shown for this client, show that. + if client_state.message: + return client_state.message + else: + return '' + + def get_tokens(): + message = get_message() + if message: + return FormattedText([ + ('class:message', message), + ('[SetCursorPosition]', ''), + ('class:message', ' '), + ]) + else: + return '' + + @Condition + def is_visible(): + return bool(get_message()) + + super(MessageToolbar, self).__init__(get_tokens) + + +class LayoutManager(object): + """ + The main layout class, that contains the whole Pymux layout. + """ + def __init__(self, pymux, client_state): + self.pymux = pymux + self.client_state = client_state + + # Popup dialog for displaying keys, etc... + search_textarea = SearchToolbar() + self._popup_textarea = TextArea(scrollbar=True, read_only=True, search_field=search_textarea) + self.popup_dialog = Dialog( + title='Keys', + body=HSplit([ + Window(FormattedTextControl(text=''), height=1), # 1 line margin. + self._popup_textarea, + search_textarea, + Window( + FormattedTextControl( + text=HTML('Press [<b>q</b>] to quit or [<b>/</b>] for searching.')), + align=WindowAlign.CENTER, + height=1) + ]) + ) + + self.layout = self._create_layout() + + # Keep track of render information. + self.pane_write_positions = {} + + def reset_write_positions(self): + """ + Clear write positions right before rendering. (They are populated + during rendering). + """ + self.pane_write_positions = {} + + def display_popup(self, title, content): + """ + Display a pop-up dialog. + """ + assert isinstance(title, six.text_type) + assert isinstance(content, six.text_type) + + self.popup_dialog.title = title + self._popup_textarea.text = content + self.client_state.display_popup = True + get_app().layout.focus(self._popup_textarea) + + def _create_select_window_handler(self, window): + " Return a mouse handler that selects the given window when clicking. " + def handler(mouse_event): + if mouse_event.event_type == MouseEventType.MOUSE_DOWN: + self.pymux.arrangement.set_active_window(window) + self.pymux.invalidate() + else: + return NotImplemented # Event not handled here. + return handler + + def _get_status_tokens(self): + " The tokens for the status bar. " + result = [] + + # Display panes. + for i, w in enumerate(self.pymux.arrangement.windows): + if i > 0: + result.append(('', ' ')) + + if w == self.pymux.arrangement.get_active_window(): + style = 'class:window.current' + format_str = self.pymux.window_status_current_format + + else: + style = 'class:window' + format_str = self.pymux.window_status_format + + result.append(( + style, + format_pymux_string(self.pymux, format_str, window=w), + self._create_select_window_handler(w))) + + return result + + def _get_status_left_tokens(self): + return format_pymux_string(self.pymux, self.pymux.status_left) + + def _get_status_right_tokens(self): + return format_pymux_string(self.pymux, self.pymux.status_right) + + def _get_align(self): + if self.pymux.status_justify == Justify.RIGHT: + return WindowAlign.RIGHT + elif self.pymux.status_justify == Justify.CENTER: + return WindowAlign.CENTER + else: + return WindowAlign.LEFT + + def _before_prompt_command_tokens(self): + return [('class:commandline.prompt', '%s ' % (self.client_state.prompt_text, ))] + + def _create_layout(self): + """ + Generate the main prompt_toolkit layout. + """ + waits_for_confirmation = WaitsForConfirmation(self.pymux) + + return FloatContainer( + content=HSplit([ + # The main window. + FloatContainer( + Background(), + floats=[ + Float(width=lambda: self.pymux.get_window_size().columns, + height=lambda: self.pymux.get_window_size().rows, + content=DynamicBody(self.pymux)) + ]), + # Status bar. + ConditionalContainer( + content=VSplit([ + # Left. + Window( + height=1, + width=(lambda: D(max=self.pymux.status_left_length)), + dont_extend_width=True, + content=FormattedTextControl(self._get_status_left_tokens)), + # List of windows in the middle. + Window( + height=1, + char=' ', + align=self._get_align, + content=FormattedTextControl(self._get_status_tokens)), + # Right. + Window( + height=1, + width=(lambda: D(max=self.pymux.status_right_length)), + dont_extend_width=True, + align=WindowAlign.RIGHT, + content=FormattedTextControl(self._get_status_right_tokens)) + ], z_index=Z_INDEX.STATUS_BAR, style='class:statusbar'), + filter=Condition(lambda: self.pymux.enable_status), + ) + ]), + floats=[ + Float(bottom=1, left=0, z_index=Z_INDEX.MESSAGE_TOOLBAR, + content=MessageToolbar(self.client_state)), + Float(left=0, right=0, bottom=0, content=HSplit([ + # Wait for confirmation toolbar. + ConditionalContainer( + content=Window( + height=1, + content=ConfirmationToolbar(self.pymux, self.client_state), + z_index=Z_INDEX.COMMAND_LINE, + ), + filter=waits_for_confirmation, + ), + # ':' prompt toolbar. + ConditionalContainer( + content=Window( + height=D(min=1), # Can be more if the command is multiline. + style='class:commandline', + dont_extend_height=True, + content=BufferControl( + buffer=self.client_state.command_buffer, + preview_search=True, + input_processors=[ + AppendAutoSuggestion(), + BeforeInput(':', style='class:commandline-prompt'), + ShowArg(), + HighlightSelectionProcessor(), + ]), + z_index=Z_INDEX.COMMAND_LINE, + ), + filter=has_focus(self.client_state.command_buffer), + ), + # Other command-prompt commands toolbar. + ConditionalContainer( + content=Window( + height=1, + style='class:commandline', + content=BufferControl( + buffer=self.client_state.prompt_buffer, + input_processors=[ + BeforeInput(self._before_prompt_command_tokens), + AppendAutoSuggestion(), + HighlightSelectionProcessor(), + ]), + z_index=Z_INDEX.COMMAND_LINE, + ), + filter=has_focus(self.client_state.prompt_buffer), + ), + ])), + # Keys pop-up. + Float( + content=ConditionalContainer( + content=self.popup_dialog, + filter=Condition(lambda: self.client_state.display_popup), + ), + left=3, right=3, top=5, bottom=5, + z_index=Z_INDEX.POPUP, + ), + Float(xcursor=True, ycursor=True, content=CompletionsMenu(max_height=12)), + ] + ) + + +class ConfirmationToolbar(FormattedTextControl): + """ + Window that displays the yes/no confirmation dialog. + """ + def __init__(self, pymux, client_state): + def get_tokens(): + return [ + ('class:question', ' '), + ('class:question', format_pymux_string( + pymux, client_state.confirm_text or '')), + ('class:question', ' '), + ('class:yesno', ' y/n'), + ('[SetCursorPosition]', ''), + ('class:yesno', ' '), + ] + + super(ConfirmationToolbar, self).__init__( + get_tokens, style='class:confirmationtoolbar') + + +class DynamicBody(Container): + """ + The dynamic part, which is different for each CLI (for each client). It + depends on which window/pane is active. + + This makes it possible to have just one main layout class, and + automatically rebuild the parts that change if the windows/panes + arrangement changes, without doing any synchronisation. + """ + def __init__(self, pymux): + self.pymux = pymux + self._bodies_for_app = weakref.WeakKeyDictionary() # Maps Application to (hash, Container) + + def _get_body(self): + " Return the Container object for the current CLI. " + new_hash = self.pymux.arrangement.invalidation_hash() + + # Return existing layout if nothing has changed to the arrangement. + app = get_app() + + if app in self._bodies_for_app: + existing_hash, container = self._bodies_for_app[app] + if existing_hash == new_hash: + return container + + # The layout changed. Build a new layout when the arrangement changed. + new_layout = self._build_layout() + self._bodies_for_app[app] = (new_hash, new_layout) + return new_layout + + def _build_layout(self): + " Rebuild a new Container object and return that. " + logger.info('Rebuilding layout.') + + if not self.pymux.arrangement.windows: + # No Pymux windows in the arrangement. + return Window() + + active_window = self.pymux.arrangement.get_active_window() + + # When zoomed, only show the current pane, otherwise show all of them. + if active_window.zoom: + return to_container(_create_container_for_process( + self.pymux, active_window, active_window.active_pane, zoom=True)) + else: + window = self.pymux.arrangement.get_active_window() + return HSplit([ + # Some spacing for the top status bar. + ConditionalContainer( + content=Window(height=1), + filter=Condition(lambda: self.pymux.enable_pane_status)), + # The actual content. + _create_split(self.pymux, window, window.root) + ]) + + def reset(self): + for invalidation_hash, body in self._bodies_for_app.values(): + body.reset() + + def preferred_width(self, max_available_width): + body = self._get_body() + return body.preferred_width(max_available_width) + + def preferred_height(self, width, max_available_height): + body = self._get_body() + return body.preferred_height(width, max_available_height) + + def write_to_screen(self, screen, mouse_handlers, write_position, + parent_style, erase_bg, z_index): + body = self._get_body() + body.write_to_screen(screen, mouse_handlers, write_position, + parent_style, erase_bg, z_index) + + def get_children(self): + # (Required for prompt_toolkit.layout.utils.find_window_for_buffer_name.) + body = self._get_body() + return [body] + + +class SizedBox(Container): + """ + Container whith enforces a given width/height without taking the children + into account (even if no width/height is given). + + :param content: `Container`. + :param report_write_position_callback: `None` or a callable for reporting + back the dimensions used while drawing. + """ + def __init__(self, content, width=None, height=None, + report_write_position_callback=None): + assert is_dimension(width) + assert is_dimension(height) + assert report_write_position_callback is None or callable(report_write_position_callback) + + self.content = to_container(content) + self.width = width + self.height = height + self.report_write_position_callback = report_write_position_callback + + def reset(self): + self.content.reset() + + def preferred_width(self, max_available_width): + return to_dimension(self.width) + + def preferred_height(self, width, max_available_height): + return to_dimension(self.height) + + def write_to_screen(self, screen, mouse_handlers, write_position, + parent_style, erase_bg, z_index): + # Report dimensions. + if self.report_write_position_callback: + self.report_write_position_callback(write_position) + + self.content.write_to_screen( + screen, mouse_handlers, write_position, parent_style, erase_bg, z_index) + + def get_children(self): + return [self.content] + + +def _create_split(pymux, window, split): + """ + Create a prompt_toolkit `Container` instance for the given pymux split. + """ + assert isinstance(split, (arrangement.HSplit, arrangement.VSplit)) + is_vsplit = isinstance(split, arrangement.VSplit) + + def get_average_weight(): + """ Calculate average weight of the children. Return 1 if none of + the children has a weight specified yet. """ + weights = 0 + count = 0 + + for i in split: + if i in split.weights: + weights += split.weights[i] + count += 1 + + if weights: + return max(1, weights // count) + else: + return 1 + + def report_write_position_callback(item, write_position): + """ + When the layout is rendered, store the actial dimensions as + weights in the arrangement.VSplit/HSplit classes. + + This is required because when a pane is resized with an increase of +1, + we want to be sure that this corresponds exactly with one row or + column. So, that updating weights corresponds exactly 1/1 to updating + the size of the panes. + """ + if is_vsplit: + split.weights[item] = write_position.width + else: + split.weights[item] = write_position.height + + def get_size(item): + return D(weight=split.weights.get(item) or average_weight) + + content = [] + average_weight = get_average_weight() + + for i, item in enumerate(split): + # Create function for calculating dimensions for child. + width = height = None + if is_vsplit: + width = partial(get_size, item) + else: + height = partial(get_size, item) + + # Create child. + if isinstance(item, (arrangement.VSplit, arrangement.HSplit)): + child = _create_split(pymux, window, item) + elif isinstance(item, arrangement.Pane): + child = _create_container_for_process(pymux, window, item) + else: + raise TypeError('Got %r' % (item,)) + + # Wrap child in `SizedBox` to enforce dimensions and sync back. + content.append(SizedBox( + child, width=width, height=height, + report_write_position_callback=partial(report_write_position_callback, item))) + + # Create prompt_toolkit Container. + if is_vsplit: + return_cls = VSplit + padding_char = _border_vertical + else: + return_cls = HSplit + padding_char = _border_horizontal + + return return_cls(content, + padding=1, + padding_char=padding_char) + + +class _UseCopyTokenListProcessor(Processor): + """ + In order to allow highlighting of the copy region, we use a preprocessed + list of (Token, text) tuples. This processor returns just that list for the + given pane. + """ + def __init__(self, arrangement_pane): + self.arrangement_pane = arrangement_pane + + def apply_transformation(self, document, lineno, source_to_display, tokens): + tokens = self.arrangement_pane.copy_get_tokens_for_line(lineno) + return Transformation(tokens[:]) + + def invalidation_hash(self, document): + return document.text + + +def _create_container_for_process(pymux, window, arrangement_pane, zoom=False): + """ + Create a `Container` with a titlebar for a process. + """ + @Condition + def clock_is_visible(): + return arrangement_pane.clock_mode + + @Condition + def pane_numbers_are_visible(): + return pymux.display_pane_numbers + + terminal_is_focused = has_focus(arrangement_pane.terminal) + + def get_terminal_style(): + if terminal_is_focused(): + result = 'class:terminal.focused' + else: + result = 'class:terminal' + return result + + def get_titlebar_text_fragments(): + result = [] + + if zoom: + result.append(('class:titlebar-zoom', ' Z ')) + + if arrangement_pane.process.is_terminated: + result.append(('class:terminated', ' Terminated ')) + + # Scroll buffer info. + if arrangement_pane.display_scroll_buffer: + result.append(('class:copymode', ' %s ' % arrangement_pane.scroll_buffer_title)) + + # Cursor position. + document = arrangement_pane.scroll_buffer.document + result.append(('class:copymode.position', ' %i,%i ' % ( + document.cursor_position_row, document.cursor_position_col))) + + if arrangement_pane.name: + result.append(('class:name', ' %s ' % arrangement_pane.name)) + result.append(('', ' ')) + + return result + [ + ('', format_pymux_string(pymux, ' #T ', pane=arrangement_pane)) # XXX: Make configurable. + ] + + def get_pane_index(): + try: + w = pymux.arrangement.get_active_window() + index = w.get_pane_index(arrangement_pane) + except ValueError: + index = '/' + + return '%3s ' % index + + def on_click(): + " Click handler for the clock. When clicked, select this pane. " + arrangement_pane.clock_mode = False + pymux.arrangement.get_active_window().active_pane = arrangement_pane + pymux.invalidate() + + + return HighlightBordersIfActive( + window, + arrangement_pane, + get_terminal_style, + FloatContainer( + HSplit([ + # The terminal. + TracePaneWritePosition( + pymux, arrangement_pane, + content=arrangement_pane.terminal), + ]), + + # + floats=[ + # The title bar. + Float(content= + ConditionalContainer( + content=VSplit([ + Window( + height=1, + content=FormattedTextControl( + get_titlebar_text_fragments)), + Window( + height=1, + width=4, + content=FormattedTextControl(get_pane_index), + style='class:paneindex') + ], style='class:titlebar'), + filter=Condition(lambda: pymux.enable_pane_status)), + left=0, right=0, top=-1, height=1, z_index=Z_INDEX.WINDOW_TITLE_BAR), + + # The clock. + Float( + content=ConditionalContainer(BigClock(on_click), + filter=clock_is_visible)), + + # Pane number. + Float(content=ConditionalContainer( + content=PaneNumber(pymux, arrangement_pane), + filter=pane_numbers_are_visible)), + ] + ) + ) + + +class _ContainerProxy(Container): + def __init__(self, content): + self.content = content + + def reset(self): + self.content.reset() + + def preferred_width(self, max_available_width): + return self.content.preferred_width(max_available_width) + + def preferred_height(self, width, max_available_height): + return self.content.preferred_height(width, max_available_height) + + def write_to_screen(self, screen, mouse_handlers, write_position, parent_style, erase_bg, z_index): + self.content.write_to_screen(screen, mouse_handlers, write_position, parent_style, erase_bg, z_index) + + def get_children(self): + return [self.content] + + +_focused_border_titlebar = '┃' +_focused_border_vertical = '┃' +_focused_border_horizontal = '━' +_focused_border_left_top = '┏' +_focused_border_right_top = '┓' +_focused_border_left_bottom = '┗' +_focused_border_right_bottom = '┛' + +_border_vertical = '│' +_border_horizontal = '─' +_border_left_bottom = '└' +_border_right_bottom = '┘' +_border_left_top = '┌' +_border_right_top = '┐' + + +class HighlightBordersIfActive(object): + """ + Put borders around this control if active. + """ + def __init__(self, window, pane, style, content): + @Condition + def is_selected(): + return window.active_pane == pane + + def conditional_float(char, left=None, right=None, top=None, + bottom=None, width=None, height=None): + return Float( + content=ConditionalContainer( + Window(char=char, style='class:border'), + filter=is_selected), + left=left, right=right, top=top, bottom=bottom, width=width, height=height, + z_index=Z_INDEX.HIGHLIGHTED_BORDER) + + self.container = FloatContainer( + content, + style=style, + floats=[ + # Sides. + conditional_float(_focused_border_vertical, left=-1, top=0, bottom=0, width=1), + conditional_float(_focused_border_vertical, right=-1, top=0, bottom=0, width=1), + conditional_float(_focused_border_horizontal, left=0, right=0, top=-1, height=1), + conditional_float(_focused_border_horizontal, left=0, right=0, bottom=-1, height=1), + + # Corners. + conditional_float(_focused_border_left_top, left=-1, top=-1, width=1, height=1), + conditional_float(_focused_border_right_top, right=-1, top=-1, width=1, height=1), + conditional_float(_focused_border_left_bottom, left=-1, bottom=-1, width=1, height=1), + conditional_float(_focused_border_right_bottom, right=-1, bottom=-1, width=1, height=1), + ]) + + def __pt_container__(self): + return self.container + + +class TracePaneWritePosition(_ContainerProxy): # XXX: replace with SizedBox + " Trace the write position of this pane. " + def __init__(self, pymux, arrangement_pane, content): + content = to_container(content) + _ContainerProxy.__init__(self, content) + + self.pymux = pymux + self.arrangement_pane = arrangement_pane + + def write_to_screen(self, screen, mouse_handlers, write_position, parent_style, erase_bg, z_inedx): + _ContainerProxy.write_to_screen(self, screen, mouse_handlers, write_position, parent_style, erase_bg, z_inedx) + self.pymux.get_client_state().layout_manager.pane_write_positions[self.arrangement_pane] = write_position + + +def focus_left(pymux): + " Move focus to the left. " + _move_focus(pymux, + lambda wp: wp.xpos - 2, # 2 in order to skip over the border. + lambda wp: wp.ypos) + + +def focus_right(pymux): + " Move focus to the right. " + _move_focus(pymux, + lambda wp: wp.xpos + wp.width + 1, + lambda wp: wp.ypos) + + +def focus_down(pymux): + " Move focus down. " + _move_focus(pymux, + lambda wp: wp.xpos, + lambda wp: wp.ypos + wp.height + 2) + # 2 in order to skip over the border. Only required when the + # pane-status is not shown, but a border instead. + + +def focus_up(pymux): + " Move focus up. " + _move_focus(pymux, + lambda wp: wp.xpos, + lambda wp: wp.ypos - 2) + + +def _move_focus(pymux, get_x, get_y): + " Move focus of the active window. " + window = pymux.arrangement.get_active_window() + + try: + write_pos = pymux.get_client_state().layout_manager.pane_write_positions[window.active_pane] + except KeyError: + pass + else: + x = get_x(write_pos) + y = get_y(write_pos) + + # Look for the pane at this position. + for pane, wp in pymux.get_client_state().layout_manager.pane_write_positions.items(): + if (wp.xpos <= x < wp.xpos + wp.width and + wp.ypos <= y < wp.ypos + wp.height): + window.active_pane = pane + return diff --git a/pymux/log.py b/pymux/log.py new file mode 100644 index 0000000..a74926f --- /dev/null +++ b/pymux/log.py @@ -0,0 +1,9 @@ +from __future__ import unicode_literals +import logging + +__all__ = ( + 'logger', +) + + +logger = logging.getLogger(__package__) diff --git a/pymux/main.py b/pymux/main.py new file mode 100644 index 0000000..619a0dd --- /dev/null +++ b/pymux/main.py @@ -0,0 +1,655 @@ +from __future__ import unicode_literals + +from prompt_toolkit.application import Application +from prompt_toolkit.application.current import get_app, set_app +from prompt_toolkit.auto_suggest import AutoSuggestFromHistory +from prompt_toolkit.buffer import Buffer +from prompt_toolkit.enums import EditingMode +from prompt_toolkit.eventloop import Future +from prompt_toolkit.eventloop import get_event_loop +from prompt_toolkit.eventloop.context import context +from prompt_toolkit.filters import Condition +from prompt_toolkit.input.defaults import create_input +from prompt_toolkit.key_binding.vi_state import InputMode +from prompt_toolkit.layout.layout import Layout +from prompt_toolkit.layout.screen import Size +from prompt_toolkit.output.defaults import create_output + +from .style import ui_style +from .arrangement import Arrangement, Pane, Window +from .commands.commands import handle_command, call_command_handler +from .commands.completer import create_command_completer +from .enums import COMMAND, PROMPT +from .key_bindings import PymuxKeyBindings +from .layout import LayoutManager, Justify +from .log import logger +from .options import ALL_OPTIONS, ALL_WINDOW_OPTIONS +from .rc import STARTUP_COMMANDS +from .utils import get_default_shell +from ptterm import Terminal + +import os +import signal +import six +import sys +import tempfile +import threading +import time +import traceback +import weakref + +__all__ = [ + 'Pymux', +] + + +class ClientState(object): + """ + State information that is independent for each client. + """ + def __init__(self, pymux, input, output, color_depth, connection): + self.pymux = pymux + self.input = input + self.output = output + self.color_depth = color_depth + self.connection = connection + + #: True when the prefix key (Ctrl-B) has been pressed. + self.has_prefix = False + + #: Error/info message. + self.message = None + + # When a "confirm-before" command is running, + # Show this text in the command bar. When confirmed, execute + # confirm_command. + self.confirm_text = None + self.confirm_command = None + + # When a "command-prompt" command is running. + self.prompt_text = None + self.prompt_command = None + + # Popup. + self.display_popup = False + + # Input buffers. + self.command_buffer = Buffer( + name=COMMAND, + accept_handler=self._handle_command, + auto_suggest=AutoSuggestFromHistory(), + multiline=False, + complete_while_typing=False, + completer=create_command_completer(pymux)) + + self.prompt_buffer = Buffer( + name=PROMPT, + accept_handler=self._handle_prompt_command, + multiline=False, + auto_suggest=AutoSuggestFromHistory()) + + # Layout. + self.layout_manager = LayoutManager(self.pymux, self) + + self.app = self._create_app() + + # Clear write positions right before rendering. (They are populated + # during rendering). + def before_render(_): + self.layout_manager.reset_write_positions() + self.app.before_render += before_render + + @property + def command_mode(self): + return get_app().layout.has_focus(COMMAND) + + def _handle_command(self, buffer): + " When text is accepted in the command line. " + text = buffer.text + + # First leave command mode. We want to make sure that the working + # pane is focused again before executing the command handers. + self.pymux.leave_command_mode(append_to_history=True) + + # Execute command. + self.pymux.handle_command(text) + + def _handle_prompt_command(self, buffer): + " When a command-prompt command is accepted. " + text = buffer.text + prompt_command = self.prompt_command + + # Leave command mode and handle command. + self.pymux.leave_command_mode(append_to_history=True) + self.pymux.handle_command(prompt_command.replace('%%', text)) + + def _create_app(self): + """ + Create `Application` instance for this . + """ + pymux = self.pymux + + def on_focus_changed(): + """ When the focus changes to a read/write buffer, make sure to go + to insert mode. This happens when the ViState was set to NAVIGATION + in the copy buffer. """ + vi_state = app.vi_state + + if app.current_buffer.read_only(): + vi_state.input_mode = InputMode.NAVIGATION + else: + vi_state.input_mode = InputMode.INSERT + + app = Application( + output=self.output, + input=self.input, + color_depth=self.color_depth, + + layout=Layout(container=self.layout_manager.layout), + key_bindings=pymux.key_bindings_manager.key_bindings, + mouse_support=Condition(lambda: pymux.enable_mouse_support), + full_screen=True, + style=self.pymux.style, + on_invalidate=(lambda _: pymux.invalidate())) + + # Synchronize the Vi state with the CLI object. + # (This is stored in the current class, but expected to be in the + # CommandLineInterface.) + def sync_vi_state(_): + VI = EditingMode.VI + EMACS = EditingMode.EMACS + + if self.confirm_text or self.prompt_command or self.command_mode: + app.editing_mode = VI if pymux.status_keys_vi_mode else EMACS + else: + app.editing_mode = VI if pymux.mode_keys_vi_mode else EMACS + + app.key_processor.before_key_press += sync_vi_state + app.key_processor.after_key_press += sync_vi_state + app.key_processor.after_key_press += self.sync_focus + + # Set render postpone time. (.1 instead of 0). + # This small change ensures that if for a split second a process + # outputs a lot of information, we don't give the highest priority to + # rendering output. (Nobody reads that fast in real-time.) + app.max_render_postpone_time = .1 # Second. + + # Hide message when a key has been pressed. + def key_pressed(_): + self.message = None + app.key_processor.before_key_press += key_pressed + + # The following code needs to run with the application active. + # Especially, `create_window` needs to know what the current + # application is, in order to focus the new pane. + with set_app(app): + # Redraw all CLIs. (Adding a new client could mean that the others + # change size, so everything has to be redrawn.) + pymux.invalidate() + + pymux.startup() + + return app + + def sync_focus(self, *_): + """ + Focus the focused window from the pymux arrangement. + """ + # Pop-up displayed? + if self.display_popup: + self.app.layout.focus(self.layout_manager.popup_dialog) + return + + # Confirm. + if self.confirm_text: + return + + # Custom prompt. + if self.prompt_command: + return # Focus prompt + + # Command mode. + if self.command_mode: + return # Focus command + + # No windows left, return. We will quit soon. + if not self.pymux.arrangement.windows: + return + + pane = self.pymux.arrangement.get_active_pane() + self.app.layout.focus(pane.terminal) + + +class Pymux(object): + """ + The main Pymux application class. + + Usage: + + p = Pymux() + p.listen_on_socket() + p.run_server() + + Or: + + p = Pymux() + p.run_standalone() + """ + def __init__(self, source_file=None, startup_command=None): + self._client_states = {} # connection -> client_state + + # Options + self.enable_mouse_support = True + self.enable_status = True + self.enable_pane_status = True#False + self.enable_bell = True + self.remain_on_exit = False + self.status_keys_vi_mode = False + self.mode_keys_vi_mode = False + self.history_limit = 2000 + self.status_interval = 4 + self.default_terminal = 'xterm-256color' + self.status_left = '[#S] ' + self.status_left_length = 20 + self.status_right = ' %H:%M %d-%b-%y ' + self.status_right_length = 20 + self.window_status_current_format = '#I:#W#F' + self.window_status_format = '#I:#W#F' + self.session_name = '0' + self.status_justify = Justify.LEFT + self.default_shell = get_default_shell() + + self.options = ALL_OPTIONS + self.window_options = ALL_WINDOW_OPTIONS + + # When no panes are available. + self.original_cwd = os.getcwd() + + self.display_pane_numbers = False + + #: List of clients. + self._runs_standalone = False + self.connections = [] + self.done_f = Future() + + self._startup_done = False + self.source_file = source_file + self.startup_command = startup_command + + # Keep track of all the panes, by ID. (For quick lookup.) + self.panes_by_id = weakref.WeakValueDictionary() + + # Socket information. + self.socket = None + self.socket_name = None + + # Key bindings manager. + self.key_bindings_manager = PymuxKeyBindings(self) + + self.arrangement = Arrangement() + + self.style = ui_style + + def _start_auto_refresh_thread(self): + """ + Start the background thread that auto refreshes all clients according to + `self.status_interval`. + """ + def run(): + while True: + time.sleep(self.status_interval) + self.invalidate() + + t = threading.Thread(target=run) + t.daemon = True + t.start() + + @property + def apps(self): + return [c.app for c in self._client_states.values()] + + def get_client_state(self): + " Return the active ClientState instance. " + app = get_app() + for client_state in self._client_states.values(): + if client_state.app == app: + return client_state + + raise ValueError + + def get_connection(self): + " Return the active Connection instance. " + app = get_app() + for connection, client_state in self._client_states.items(): + if client_state.app == app: + return connection + + raise ValueError + + def startup(self): + # Handle start-up comands. + # (Does initial key bindings.) + if not self._startup_done: + self._startup_done = True + + # Execute default config. + for cmd in STARTUP_COMMANDS.splitlines(): + self.handle_command(cmd) + + # Source the given file. + if self.source_file: + call_command_handler('source-file', self, [self.source_file]) + + # Make sure that there is one window created. + self.create_window(command=self.startup_command) + + def get_title(self): + """ + The title to be displayed in the titlebar of the terminal. + """ + w = self.arrangement.get_active_window() + + if w and w.active_process: + title = w.active_process.screen.title + else: + title = '' + + if title: + return '%s - Pymux' % (title, ) + else: + return 'Pymux' + + def get_window_size(self): + """ + Get the size to be used for the DynamicBody. + This will be the smallest size of all clients. + """ + def active_window_for_app(app): + with set_app(app): + return self.arrangement.get_active_window() + + active_window = self.arrangement.get_active_window() + + # Get sizes for connections watching the same window. + apps = [client_state.app for client_state in self._client_states.values() + if active_window_for_app(client_state.app) == active_window] + sizes = [app.output.get_size() for app in apps] + + rows = [s.rows for s in sizes] + columns = [s.columns for s in sizes] + + if rows and columns: + return Size(rows=min(rows) - (1 if self.enable_status else 0), + columns=min(columns)) + else: + return Size(rows=20, columns=80) + + def _create_pane(self, window=None, command=None, start_directory=None): + """ + Create a new :class:`pymux.arrangement.Pane` instance. (Don't put it in + a window yet.) + + :param window: If a window is given, take the CWD of the current + process of that window as the start path for this pane. + :param command: If given, run this command instead of `self.default_shell`. + :param start_directory: If given, use this as the CWD. + """ + assert window is None or isinstance(window, Window) + assert command is None or isinstance(command, six.text_type) + assert start_directory is None or isinstance(start_directory, six.text_type) + + def done_callback(): + " When the process finishes. " + if not self.remain_on_exit: + # Remove pane from layout. + self.arrangement.remove_pane(pane) + + # No panes left? -> Quit. + if not self.arrangement.has_panes: + self.stop() + + # Make sure the right pane is focused for each client. + for client_state in self._client_states.values(): + client_state.sync_focus() + + self.invalidate() + + def bell(): + " Sound bell on all clients. " + if self.enable_bell: + for c in self.apps: + c.output.bell() + + # Start directory. + if start_directory: + path = start_directory + elif window and window.active_process: + # When the path of the active process is known, + # start the new process at the same location. + path = window.active_process.get_cwd() + else: + path = None + + def before_exec(): + " Called in the process fork (in the child process). " + # Go to this directory. + try: + os.chdir(path or self.original_cwd) + except OSError: + pass # No such file or directory. + + # Set terminal variable. (We emulate xterm.) + os.environ['TERM'] = self.default_terminal + + # Make sure to set the PYMUX environment variable. + if self.socket_name: + os.environ['PYMUX'] = '%s,%i' % ( + self.socket_name, pane.pane_id) + + if command: + command = command.split() + else: + command = [self.default_shell] + + # Create new pane and terminal. + terminal = Terminal(done_callback=done_callback, bell_func=bell, + before_exec_func=before_exec) + pane = Pane(terminal) + + # Keep track of panes. This is a WeakKeyDictionary, we only add, but + # don't remove. + self.panes_by_id[pane.pane_id] = pane + + logger.info('Created process %r.', command) + + return pane + + def invalidate(self): + " Invalidate the UI for all clients. " + for app in self.apps: + app.invalidate() + + def stop(self): + for app in self.apps: + app.exit() + self.done_f.set_result(None) + + def create_window(self, command=None, start_directory=None, name=None): + """ + Create a new :class:`pymux.arrangement.Window` in the arrangement. + """ + assert command is None or isinstance(command, six.text_type) + assert start_directory is None or isinstance(start_directory, six.text_type) + + pane = self._create_pane(None, command, start_directory=start_directory) + + self.arrangement.create_window(pane, name=name) + pane.focus() + self.invalidate() + + def add_process(self, command=None, vsplit=False, start_directory=None): + """ + Add a new process to the current window. (vsplit/hsplit). + """ + assert command is None or isinstance(command, six.text_type) + assert start_directory is None or isinstance(start_directory, six.text_type) + + window = self.arrangement.get_active_window() + + pane = self._create_pane(window, command, start_directory=start_directory) + window.add_pane(pane, vsplit=vsplit) + pane.focus() + self.invalidate() + + def kill_pane(self, pane): + """ + Kill the given pane, and remove it from the arrangement. + """ + assert isinstance(pane, Pane) + + # Send kill signal. + if not pane.process.is_terminated: + pane.process.kill() + + # Remove from layout. + self.arrangement.remove_pane(pane) + + def leave_command_mode(self, append_to_history=False): + """ + Leave the command/prompt mode. + """ + client_state = self.get_client_state() + + client_state.command_buffer.reset(append_to_history=append_to_history) + client_state.prompt_buffer.reset(append_to_history=True) + + client_state.prompt_command = '' + client_state.confirm_command = '' + + client_state.app.layout.focus_previous() + + def handle_command(self, command): + """ + Handle command from the command line. + """ + handle_command(self, command) + + def show_message(self, message): + """ + Set a warning message. This will be shown at the bottom until a key has + been pressed. + + :param message: String. + """ + self.get_client_state().message = message + + def detach_client(self, app): + """ + Detach the client that belongs to this CLI. + """ + connection = self.get_connection() + if connection: + connection.detach_and_close() + + # Redraw all clients -> Maybe their size has to change. + self.invalidate() + + def listen_on_socket(self, socket_name=None): + """ + Listen for clients on a Unix socket. + Returns the socket name. + """ + from .server import bind_socket + if self.socket is None: + # Py2 uses 0027 and Py3 uses 0o027, but both know + # how to create the right value from the string '0027'. + old_umask = os.umask(int('0027', 8)) + self.socket_name, self.socket = bind_socket(socket_name) + _ = os.umask(old_umask) + self.socket.listen(0) + get_event_loop().add_reader(self.socket.fileno(), self._socket_accept) + + # Set session_name according to socket name. + if '.' in self.socket_name: + self.session_name = self.socket_name.rpartition('.')[-1] + + logger.info('Listening on %r.' % self.socket_name) + return self.socket_name + + def _socket_accept(self): + """ + Accept connection from client. + """ + logger.info('Client attached.') + from .server import ServerConnection + + connection, client_address = self.socket.accept() + # Note: We don't have to put this socket in non blocking mode. + # This can cause crashes when sending big packets on OS X. + + # We have to create a new `context`, because this will be the scope for + # a new prompt_toolkit.Application to become active. + with context(): + connection = ServerConnection(self, connection, client_address) + self.connections.append(connection) + + def run_server(self): + # Ignore keyboard. (When people run "pymux server" and press Ctrl-C.) + # Pymux has to be terminated by termining all the processes running in + # its panes. + def handle_sigint(*a): + print('Ignoring keyboard interrupt.') + + signal.signal(signal.SIGINT, handle_sigint) + + # Start background threads. + self._start_auto_refresh_thread() + + # Run eventloop. + try: + get_event_loop().run_until_complete(self.done_f) + except: + # When something bad happens, always dump the traceback. + # (Otherwise, when running as a daemon, and stdout/stderr are not + # available, it's hard to see what went wrong.) + fd, path = tempfile.mkstemp(prefix='pymux.crash-') + logger.fatal( + 'Pymux has crashed, dumping traceback to {0}'.format(path)) + os.write(fd, traceback.format_exc().encode('utf-8')) + os.close(fd) + raise + + finally: + # Clean up socket. + os.remove(self.socket_name) + + def run_standalone(self, color_depth): + """ + Run pymux standalone, rather than using a client/server architecture. + This is mainly useful for debugging. + """ + self._runs_standalone = True + self._start_auto_refresh_thread() + + client_state = self.add_client( + input=create_input(), + output=create_output(stdout=sys.stdout), + color_depth=color_depth, + connection=None) + + client_state.app.run() + + def add_client(self, output, input, color_depth, connection): + client_state = ClientState(self, + connection=None, + input=input, + output=output, + color_depth=color_depth) + + self._client_states[connection] = client_state + + return client_state + + def remove_client(self, connection): + if connection in self._client_states: + del self._client_states[connection] diff --git a/pymux/options.py b/pymux/options.py new file mode 100644 index 0000000..9cc6f40 --- /dev/null +++ b/pymux/options.py @@ -0,0 +1,201 @@ +""" +All configurable options which can be changed through "set-option" commands. +""" +from __future__ import unicode_literals +from abc import ABCMeta, abstractmethod +import six + +from .key_mappings import PYMUX_TO_PROMPT_TOOLKIT_KEYS, pymux_key_to_prompt_toolkit_key_sequence +from .utils import get_default_shell +from .layout import Justify + +__all__ = ( + 'Option', + 'SetOptionError', + 'OnOffOption', + 'ALL_OPTIONS', + 'ALL_WINDOW_OPTIONS', +) + + +class Option(six.with_metaclass(ABCMeta, object)): + """ + Base class for all options. + """ + @abstractmethod + def get_all_values(self): + """ + Return a list of strings, with all possible values. (For + autocompletion.) + """ + + @abstractmethod + def set_value(self, pymux, value): + " Set option. This can raise SetOptionError. " + + +class SetOptionError(Exception): + """ + Raised when setting an option fails. + """ + def __init__(self, message): + self.message = message + + +class OnOffOption(Option): + """ + Boolean on/off option. + """ + def __init__(self, attribute_name, window_option=False): + self.attribute_name = attribute_name + self.window_option = window_option + + def get_all_values(self, pymux): + return ['on', 'off'] + + def set_value(self, pymux, value): + value = value.lower() + + if value in ('on', 'off'): + if self.window_option: + w = pymux.arrangement.get_active_window() + setattr(w, self.attribute_name, (value == 'on')) + else: + setattr(pymux, self.attribute_name, (value == 'on')) + else: + raise SetOptionError('Expecting "yes" or "no".') + + +class StringOption(Option): + """ + String option, the attribute is set as a Pymux attribute. + """ + def __init__(self, attribute_name, possible_values=None): + self.attribute_name = attribute_name + self.possible_values = possible_values or [] + + def get_all_values(self, pymux): + return sorted(set( + self.possible_values + [getattr(pymux, self.attribute_name)] + )) + + def set_value(self, pymux, value): + setattr(pymux, self.attribute_name, value) + + +class PositiveIntOption(Option): + """ + Positive integer option, the attribute is set as a Pymux attribute. + """ + def __init__(self, attribute_name, possible_values=None): + self.attribute_name = attribute_name + self.possible_values = ['%s' % i for i in (possible_values or [])] + + def get_all_values(self, pymux): + return sorted(set( + self.possible_values + + ['%s' % getattr(pymux, self.attribute_name)] + )) + + def set_value(self, pymux, value): + """ + Take a string, and return an integer. Raise SetOptionError when the + given text does not parse to a positive integer. + """ + try: + value = int(value) + if value < 0: + raise ValueError + except ValueError: + raise SetOptionError('Expecting an integer.') + else: + setattr(pymux, self.attribute_name, value) + + +class KeyPrefixOption(Option): + def get_all_values(self, pymux): + return PYMUX_TO_PROMPT_TOOLKIT_KEYS.keys() + + def set_value(self, pymux, value): + # Translate prefix to prompt_toolkit + try: + keys = pymux_key_to_prompt_toolkit_key_sequence(value) + except ValueError: + raise SetOptionError('Invalid key: %r' % (value, )) + else: + pymux.key_bindings_manager.prefix = keys + + +class BaseIndexOption(Option): + " Base index for window numbering. " + def get_all_values(self, pymux): + return ['0', '1'] + + def set_value(self, pymux, value): + try: + value = int(value) + except ValueError: + raise SetOptionError('Expecting an integer.') + else: + pymux.arrangement.base_index = value + + +class KeysOption(Option): + " Emacs or Vi mode. " + def __init__(self, attribute_name): + self.attribute_name = attribute_name + + def get_all_values(self, pymux): + return ['emacs', 'vi'] + + def set_value(self, pymux, value): + if value in ('emacs', 'vi'): + setattr(pymux, self.attribute_name, value == 'vi') + else: + raise SetOptionError('Expecting "vi" or "emacs".') + +class JustifyOption(Option): + def __init__(self, attribute_name): + self.attribute_name = attribute_name + + def get_all_values(self, pymux): + return Justify._ALL + + def set_value(self, pymux, value): + if value in Justify._ALL: + setattr(pymux, self.attribute_name, value) + else: + raise SetOptionError('Invalid justify option.') + + +ALL_OPTIONS = { + 'base-index': BaseIndexOption(), + 'bell': OnOffOption('enable_bell'), + 'history-limit': PositiveIntOption( + 'history_limit', [200, 500, 1000, 2000, 5000, 10000]), + 'mouse': OnOffOption('enable_mouse_support'), + 'prefix': KeyPrefixOption(), + 'remain-on-exit': OnOffOption('remain_on_exit'), + 'status': OnOffOption('enable_status'), + 'pane-border-status': OnOffOption('enable_pane_status'), + 'status-keys': KeysOption('status_keys_vi_mode'), + 'mode-keys': KeysOption('mode_keys_vi_mode'), + 'default-terminal': StringOption( + 'default_terminal', ['xterm', 'xterm-256color', 'screen']), + 'status-right': StringOption('status_right'), + 'status-left': StringOption('status_left'), + 'status-right-length': PositiveIntOption('status_right_length', [20]), + 'status-left-length': PositiveIntOption('status_left_length', [20]), + 'window-status-format': StringOption('window_status_format'), + 'window-status-current-format': StringOption('window_status_current_format'), + 'default-shell': StringOption( + 'default_shell', [get_default_shell()]), + 'status-justify': JustifyOption('status_justify'), + 'status-interval': PositiveIntOption( + 'status_interval', [1, 2, 4, 8, 16, 30, 60]), +} + + +ALL_WINDOW_OPTIONS = { + 'synchronize-panes': OnOffOption('synchronize_panes', window_option=True), +} diff --git a/pymux/rc.py b/pymux/rc.py new file mode 100644 index 0000000..e526b8d --- /dev/null +++ b/pymux/rc.py @@ -0,0 +1,83 @@ +""" +Initial configuration. +""" +from __future__ import unicode_literals + +__all__ = ( + 'STARTUP_COMMANDS' +) + +STARTUP_COMMANDS = """ +bind-key '"' split-window -v +bind-key % split-window -h +bind-key c new-window +bind-key Right select-pane -R +bind-key Left select-pane -L +bind-key Up select-pane -U +bind-key Down select-pane -D +bind-key C-l select-pane -R +bind-key C-h select-pane -L +bind-key C-j select-pane -D +bind-key C-k select-pane -U +bind-key ; last-pane +bind-key ! break-pane +bind-key d detach-client +bind-key t clock-mode +bind-key Space next-layout +bind-key C-z suspend-client + +bind-key z resize-pane -Z +bind-key k resize-pane -U 2 +bind-key j resize-pane -D 2 +bind-key h resize-pane -L 2 +bind-key l resize-pane -R 2 +bind-key q display-panes +bind-key C-Up resize-pane -U 2 +bind-key C-Down resize-pane -D 2 +bind-key C-Left resize-pane -L 2 +bind-key C-Right resize-pane -R 2 +bind-key M-Up resize-pane -U 5 +bind-key M-Down resize-pane -D 5 +bind-key M-Left resize-pane -L 5 +bind-key M-Right resize-pane -R 5 + +bind-key : command-prompt +bind-key 0 select-window -t :0 +bind-key 1 select-window -t :1 +bind-key 2 select-window -t :2 +bind-key 3 select-window -t :3 +bind-key 4 select-window -t :4 +bind-key 5 select-window -t :5 +bind-key 6 select-window -t :6 +bind-key 7 select-window -t :7 +bind-key 8 select-window -t :8 +bind-key 9 select-window -t :9 +bind-key n next-window +bind-key p previous-window +bind-key o select-pane -t :.+ +bind-key { swap-pane -U +bind-key } swap-pane -D +bind-key x confirm-before -p "kill-pane #P?" kill-pane +bind-key & confirm-before -p "kill-window #W?" kill-window +bind-key C-o rotate-window +bind-key M-o rotate-window -D +bind-key C-b send-prefix +bind-key . command-prompt "move-window -t '%%'" +bind-key [ copy-mode +bind-key ] paste-buffer +bind-key ? list-keys +bind-key PPage copy-mode -u + +# Layouts. +bind-key M-1 select-layout even-horizontal +bind-key M-2 select-layout even-vertical +bind-key M-3 select-layout main-horizontal +bind-key M-4 select-layout main-vertical +bind-key M-5 select-layout tiled + +# Renaming stuff. +bind-key , command-prompt -I #W "rename-window '%%'" +#bind-key "'" command-prompt -I #W "rename-pane '%%'" +bind-key "'" command-prompt -p index "select-window -t ':%%'" +bind-key . command-prompt "move-window -t '%%'" +""" diff --git a/pymux/server.py b/pymux/server.py new file mode 100644 index 0000000..af35cd2 --- /dev/null +++ b/pymux/server.py @@ -0,0 +1,265 @@ +from __future__ import unicode_literals +import getpass +import json +import socket +import tempfile + +from prompt_toolkit.eventloop import get_event_loop +from prompt_toolkit.application.current import set_app +from prompt_toolkit.input.vt100 import PipeInput +from prompt_toolkit.input.vt100_parser import Vt100Parser +from prompt_toolkit.layout.screen import Size +from prompt_toolkit.output.vt100 import Vt100_Output + +from .log import logger + +__all__ = ( + 'ServerConnection', + 'bind_socket', +) + + +class ServerConnection(object): + """ + For each client that connects, we have one instance of this class. + """ + def __init__(self, pymux, connection, client_address): + self.pymux = pymux + self.connection = connection + self.client_address = client_address + self.size = Size(rows=20, columns=80) + self._closed = False + + self._recv_buffer = b'' + self.client_state = None + + def feed_key(key): + self.client_state.app.key_processor.feed(key) + self.client_state.app.key_processor.process_keys() + + self._inputstream = Vt100Parser(feed_key) + self._pipeinput = _ClientInput(self._send_packet) + + get_event_loop().add_reader( + connection.fileno(), self._recv) + + def _recv(self): + """ + Data received from the client. + (Parse it.) + """ + # Read next chunk. + try: + data = self.connection.recv(1024) + except OSError as e: + # On OSX, when we try to create a new window by typing "pymux + # new-window" in a centain pane, very often we get the following + # error: "OSError: [Errno 9] Bad file descriptor." + # This doesn't seem very harmful, and we can just try again. + logger.warning('Got OSError while reading data from client: %s. ' + 'Trying again.', e) + return + + if data == b'': + # End of file. Close connection. + self.detach_and_close() + else: + # Receive and process packets. + self._recv_buffer += data + + while b'\0' in self._recv_buffer: + # Zero indicates end of packet. + pos = self._recv_buffer.index(b'\0') + self._process(self._recv_buffer[:pos]) + self._recv_buffer = self._recv_buffer[pos + 1:] + + def _process(self, data): + """ + Process packet received from client. + """ + try: + packet = json.loads(data.decode('utf-8')) + except ValueError: + # So far, this never happened. But it would be good to have some + # protection. + logger.warning('Received invalid JSON from client. Ignoring.') + return + + # Handle commands. + if packet['cmd'] == 'run-command': + self._run_command(packet) + + # Handle stdin. + elif packet['cmd'] == 'in': + self._pipeinput.send_text(packet['data']) + +# elif packet['cmd'] == 'flush-input': +# self._inputstream.flush() # Flush escape key. # XXX: I think we no longer need this. + + # Set size. (The client reports the size.) + elif packet['cmd'] == 'size': + data = packet['data'] + self.size = Size(rows=data[0], columns=data[1]) + self.pymux.invalidate() + + # Start GUI. (Create CommandLineInterface front-end for pymux.) + elif packet['cmd'] == 'start-gui': + detach_other_clients = bool(packet['detach-others']) + color_depth = packet['color-depth'] + term = packet['term'] + + if detach_other_clients: + for c in self.pymux.connections: + c.detach_and_close() + + self._create_app(color_depth=color_depth, term=term) + + def _send_packet(self, data): + """ + Send packet to client. + """ + try: + self.connection.send(json.dumps(data).encode('utf-8') + b'\0') + except socket.error: + if not self._closed: + self.detach_and_close() + + def _run_command(self, packet): + """ + Execute a run command from the client. + """ + create_temp_cli = self.client_states is None + + if create_temp_cli: + # If this client doesn't have a CLI. Create a Fake CLI where the + # window containing this pane, is the active one. (The CLI instance + # will be removed before the render function is called, so it doesn't + # hurt too much and makes the code easier.) + pane_id = int(packet['pane_id']) + self._create_app() + with set_app(self.client_state.app): + self.pymux.arrangement.set_active_window_from_pane_id(pane_id) + + with set_app(self.client_state.app): + try: + self.pymux.handle_command(packet['data']) + finally: + self._close_connection() + + def _create_app(self, color_depth, term='xterm'): + """ + Create CommandLineInterface for this client. + Called when the client wants to attach the UI to the server. + """ + output = Vt100_Output(_SocketStdout(self._send_packet), + lambda: self.size, + term=term, + write_binary=False) + + self.client_state = self.pymux.add_client( + input=self._pipeinput, output=output, connection=self, color_depth=color_depth) + + future = self.client_state.app.run_async() + + @future.add_done_callback + def done(_): + self._close_connection() + + def _close_connection(self): + # This is important. If we would forget this, the server will + # render CLI output for clients that aren't connected anymore. + self.pymux.remove_client(self) + self.client_state = None + self._closed = True + + def suspend_client_to_background(self): + """ + Ask the client to suspend itself. (Like, when Ctrl-Z is pressed.) + """ + self._send_packet({'cmd': 'suspend'}) + + def detach_and_close(self): + # Remove from Pymux. + self._close_connection() + + # Remove from eventloop. + get_event_loop().remove_reader(self.connection.fileno()) + self.connection.close() + + +def bind_socket(socket_name=None): + """ + Find a socket to listen on and return it. + + Returns (socket_name, sock_obj) + """ + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + + if socket_name: + s.bind(socket_name) + return socket_name, s + else: + i = 0 + while True: + try: + socket_name = '%s/pymux.sock.%s.%i' % ( + tempfile.gettempdir(), getpass.getuser(), i) + s.bind(socket_name) + return socket_name, s + except (OSError, socket.error): + i += 1 + + # When 100 times failed, cancel server + if i == 100: + logger.warning('100 times failed to listen on posix socket. ' + 'Please clean up old sockets.') + raise + + +class _SocketStdout(object): + """ + Stdout-like object that writes everything through the unix socket to the + client. + """ + def __init__(self, send_packet): + assert callable(send_packet) + self.send_packet = send_packet + self._buffer = [] + + def write(self, data): + self._buffer.append(data) + + def flush(self): + data = {'cmd': 'out', 'data': ''.join(self._buffer)} + self.send_packet(data) + self._buffer = [] + + +class _ClientInput(PipeInput): + """ + Input class that can be given to the CommandLineInterface. + We only need this for turning the client into raw_mode/cooked_mode. + """ + def __init__(self, send_packet): + super(_ClientInput, self).__init__() + assert callable(send_packet) + self.send_packet = send_packet + + # Implement raw/cooked mode by sending this to the attached client. + + def raw_mode(self): + return self._create_context_manager('raw') + + def cooked_mode(self): + return self._create_context_manager('cooked') + + def _create_context_manager(self, mode): + " Create a context manager that sends 'mode' commands to the client. " + class mode_context_manager(object): + def __enter__(*a): + self.send_packet({'cmd': 'mode', 'data': mode}) + + def __exit__(*a): + self.send_packet({'cmd': 'mode', 'data': 'restore'}) + + return mode_context_manager() diff --git a/pymux/style.py b/pymux/style.py new file mode 100644 index 0000000..b39ddb9 --- /dev/null +++ b/pymux/style.py @@ -0,0 +1,76 @@ +""" +The color scheme. +""" +from __future__ import unicode_literals +from prompt_toolkit.styles import Style, Priority + +__all__ = ( + 'ui_style', +) + + +ui_style = Style.from_dict({ + 'border': '#888888', + 'terminal.focused border': 'ansigreen bold', + + #'terminal titleba': 'bg:#aaaaaa #dddddd ', + 'terminal titlebar': 'bg:#888888 #ffffff', +# 'terminal titlebar paneindex': 'bg:#888888 #000000', + + 'terminal.focused titlebar': 'bg:#448844 #ffffff', + 'terminal.focused titlebar name': 'bg:#88aa44 #ffffff', + 'terminal.focused titlebar paneindex': 'bg:#ff0000', + +# 'titlebar title': '', +# 'titlebar name': '#ffffff noitalic', +# 'focused-terminal titlebar name': 'bg:#88aa44', +# 'titlebar.line': '#444444', +# 'titlebar.line focused': '#448844 noinherit', +# 'titlebar focused': 'bg:#5f875f #ffffff bold', +# 'titlebar.title focused': '', +# 'titlebar.zoom': 'bg:#884400 #ffffff', +# 'titlebar paneindex': '', +# 'titlebar.copymode': 'bg:#88aa88 #444444', +# 'titlebar.copymode.position': '', + +# 'focused-terminal titlebar.copymode': 'bg:#aaff44 #000000', +# 'titlebar.copymode.position': '#888888', + + 'commandline': 'bg:#4e4e4e #ffffff', + 'commandline.command': 'bold', + 'commandline.prompt': 'bold', + #'statusbar': 'noreverse bg:#448844 #000000', + 'statusbar': 'noreverse bg:ansigreen #000000', + 'statusbar window': '#ffffff', + 'statusbar window.current': 'bg:#44ff44 #000000', + 'auto-suggestion': 'bg:#4e5e4e #88aa88', + 'message': 'bg:#bbee88 #222222', + 'background': '#888888', + 'clock': 'bg:#88aa00', + 'panenumber': 'bg:#888888', + 'panenumber focused': 'bg:#aa8800', + 'terminated': 'bg:#aa0000 #ffffff', + + 'confirmationtoolbar': 'bg:#880000 #ffffff', + 'confirmationtoolbar question': '', + 'confirmationtoolbar yesno': 'bg:#440000', + + 'copy-mode-cursor-position': 'bg:ansiyellow ansiblack', + +# 'search-toolbar': 'bg:#88ff44 #444444', + 'search-toolbar.prompt': 'bg:#88ff44 #444444', + 'search-toolbar.text': 'bg:#88ff44 #000000', +# 'search-toolbar focused': 'bg:#aaff44 #444444', +# 'search-toolbar.text focused': 'bold #000000', + + 'search-match': '#000000 bg:#88aa88', + 'search-match.current': '#000000 bg:#aaffaa underline', + + # Pop-up dialog. Ignore built-in style. + 'dialog': 'noinherit', + 'dialog.body': 'noinherit', + 'dialog frame': 'noinherit', + 'dialog.body text-area': 'noinherit', + 'dialog.body text-area last-line': 'noinherit', + +}, priority=Priority.MOST_PRECISE) diff --git a/pymux/utils.py b/pymux/utils.py new file mode 100644 index 0000000..f201187 --- /dev/null +++ b/pymux/utils.py @@ -0,0 +1,106 @@ +""" +Some utilities. +""" +from __future__ import unicode_literals +from prompt_toolkit.utils import is_windows + +import os +import sys + +__all__ = ( + 'daemonize', + 'nonblocking', + 'get_default_shell', +) + + +def daemonize(stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'): + """ + Double fork-trick. For starting a posix daemon. + + This forks the current process into a daemon. The stdin, stdout, and stderr + arguments are file names that will be opened and be used to replace the + standard file descriptors in sys.stdin, sys.stdout, and sys.stderr. These + arguments are optional and default to /dev/null. Note that stderr is opened + unbuffered, so if it shares a file with stdout then interleaved output may + not appear in the order that you expect. + + Thanks to: + http://code.activestate.com/recipes/66012-fork-a-daemon-process-on-unix/ + """ + # Do first fork. + try: + pid = os.fork() + if pid > 0: + os.waitpid(pid, 0) + return 0 # Return 0 from first parent. + except OSError as e: + sys.stderr.write("fork #1 failed: (%d) %s\n" % (e.errno, e.strerror)) + sys.exit(1) + + # Decouple from parent environment. + os.chdir("/") + os.umask(0) + os.setsid() + + # Do second fork. + try: + pid = os.fork() + if pid > 0: + sys.exit(0) # Exit second parent. + except OSError as e: + sys.stderr.write("fork #2 failed: (%d) %s\n" % (e.errno, e.strerror)) + sys.exit(1) + + # Now I am a daemon! + + # Redirect standard file descriptors. + + # NOTE: For debugging, you meight want to take these instead of /dev/null. + # so = open('/tmp/log2', 'ab+') + # se = open('/tmp/log2', 'ab+', 0) + + si = open(stdin, 'rb') + so = open(stdout, 'ab+') + se = open(stderr, 'ab+', 0) + os.dup2(si.fileno(), sys.stdin.fileno()) + os.dup2(so.fileno(), sys.stdout.fileno()) + os.dup2(se.fileno(), sys.stderr.fileno()) + + # Return 1 from daemon. + return 1 + + +class nonblocking(object): + """ + Make fd non blocking. + """ + def __init__(self, fd): + self.fd = fd + + def __enter__(self): + import fcntl + self.orig_fl = fcntl.fcntl(self.fd, fcntl.F_GETFL) + fcntl.fcntl(self.fd, fcntl.F_SETFL, self.orig_fl | os.O_NONBLOCK) + + def __exit__(self, *args): + import fcntl + fcntl.fcntl(self.fd, fcntl.F_SETFL, self.orig_fl) + + +def get_default_shell(): + """ + return the path to the default shell for the current user. + """ + if is_windows(): + return 'cmd.exe' + else: + import pwd + import getpass + + if 'SHELL' in os.environ: + return os.environ['SHELL'] + else: + username = getpass.getuser() + shell = pwd.getpwnam(username).pw_shell + return shell diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..6cac906 --- /dev/null +++ b/setup.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python +import os +from setuptools import setup, find_packages + + +long_description = open( + os.path.join( + os.path.dirname(__file__), + 'README.rst' + ) +).read() + + +setup( + name='pymux', + author='Jonathan Slenders', + version='0.13', + license='LICENSE', + url='https://github.com/jonathanslenders/', + description='Pure Python terminal multiplexer.', + long_description=long_description, + packages=find_packages('.'), + install_requires = [ + 'prompt_toolkit>=2.0.0,<2.1.0', + 'six>=1.9.0', + 'docopt>=0.6.2', + ], + entry_points={ + 'console_scripts': [ + 'pymux = pymux.entry_points.run_pymux:run', + ] + }, +) From 189b3848f8d7ec3bde01dbecf6affcd26843e599 Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Sun, 8 Jul 2018 19:29:30 +0200 Subject: [PATCH 02/17] server/client tests --- win-client-test.py | 185 ++++++++++++++++++++++++++++++++ win-server-test.py | 258 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 443 insertions(+) create mode 100644 win-client-test.py create mode 100644 win-server-test.py diff --git a/win-client-test.py b/win-client-test.py new file mode 100644 index 0000000..70bc6f9 --- /dev/null +++ b/win-client-test.py @@ -0,0 +1,185 @@ +from ctypes.wintypes import DWORD, BOOL +import ctypes +#import win32 +from ctypes import windll +from ptterm.backends.win32_pipes import OVERLAPPED +from prompt_toolkit.eventloop import get_event_loop, ensure_future, From, Return + +BUFSIZE = 4096 + +GENERIC_READ = 0x80000000 +GENERIC_WRITE = 0x40000000 +OPEN_EXISTING = 0x3 + +def _create_event(): + """ + Create Win32 event. + """ + event = windll.kernel32.CreateEventA( + None, # Default security attributes. + BOOL(True), # Manual reset event. + BOOL(True), # Initial state = signaled. + None # Unnamed event object. + ) + if not event: + raise Exception('event creation failed.') + return event + + +class PipeClient(object): + def __init__(self, pipe_name): + self.pipe_handle = windll.kernel32.CreateFileW( + pipe_name, + DWORD(GENERIC_READ | GENERIC_WRITE), + DWORD(0), # No sharing. + None, # Default security attributes. + DWORD(OPEN_EXISTING), # dwCreationDisposition. + 0, # dwFlagsAndAttributes. + None # hTemplateFile, + ) + + # TODO: handle errors. + print(self.pipe_handle) + #if self.pipe_handle != + +# def write_message(self, text): +# # Send a message to the pipe server. +# message = text.encode('utf-8') +# rc = DWORD() +# +# fSuccess = windll.kernel32.WriteFile( +# self.pipe_handle, +# ctypes.create_string_buffer(message), +# len(message), +# ctypes.byref(rc), +# None) # Not overlapped. +# +# if not fSuccess: +# print('WriteFile failed.', win32api.GetLastError()) +# return + + def write_message(self, text): + """ + Write data into the pipe. + """ + overlapped = OVERLAPPED() + overlapped.hEvent = _create_event() + c_written = DWORD() + + data = text.encode('utf-8') + + success = windll.kernel32.WriteFile( + self.pipe_handle, + ctypes.create_string_buffer(data), + len(data), + ctypes.byref(c_written), + ctypes.byref(overlapped)) + + if success: + return + + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_IO_PENDING: + yield From(wait_for_event(overlapped.hEvent)) + + success = windll.kernel32.GetOverlappedResult( + self.pipe_handle, + ctypes.byref(overlapped), + ctypes.byref(c_written), + BOOL(False)) + + if not success: + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_BROKEN_PIPE: + print('Overlapped Write failed, broken pipe.') + raise _BrokenPipeError + else: + raise 'Writing overlapped IO failed.' + + elif error_code == ERROR_BROKEN_PIPE: + print('Write failed, broken pipe.') + raise _BrokenPipeError + + +# def read_message(self): +# # Get response. +# buff = ctypes.create_string_buffer(BUFSIZE) +# c_read = DWORD() +# +# print('call readfile') +# success = windll.kernel32.ReadFile( +# self.pipe_handle, +# buff, +# DWORD(BUFSIZE), +# ctypes.byref(c_read), +# None) # Not overlapped. +# +# if success: +# buff[c_read.value] = b'\0' +# return buff.value.decode('utf-8', 'ignore') +# # TODO: handle ERROR_MORE_DATA + + def read_message(self): + """ + (coroutine) + Read data from this pipe. + """ + overlapped = OVERLAPPED() + overlapped.hEvent = _create_event() + + buff = ctypes.create_string_buffer(BUFSIZE + 1) + c_read = DWORD() + rc = DWORD() + + success = windll.kernel32.ReadFile( + self.pipe_handle, + buff, + DWORD(BUFSIZE), + ctypes.byref(c_read), + ctypes.byref(overlapped)) + + print('reading', success) + if success: + buff[c_read.value] = b'\0' + raise Return(buff.value.decode('utf-8', 'ignore')) + + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_IO_PENDING: + yield From(wait_for_event(overlapped.hEvent)) + + success = windll.kernel32.GetOverlappedResult( + self.pipe_handle, + ctypes.byref(overlapped), + ctypes.byref(c_read), + BOOL(False)) + + if success: + buff[c_read.value] = b'\0' + raise Return(buff.value.decode('utf-8', 'ignore')) + + else: + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_BROKEN_PIPE: + print('Overlapped Read failed, broken pipe.') + raise _BrokenPipeError + else: + raise 'reading overlapped IO failed.' + + elif error_code == ERROR_BROKEN_PIPE: + print('Read failed, broken pipe.') + raise _BrokenPipeError + + + + def close(): + win32.CloseHandle(self.pipe_handle) + +def main_coro(): + pipe_name = r'\\.\pipe\pymux.sock.jonathan.9942' + pipe_client = PipeClient(pipe_name) + yield From(pipe_client.write_message('Hi there')) + result = yield From(pipe_client.read_message()) + print('result', repr(result)) + + +get_event_loop().run_until_complete(ensure_future(main_coro())) diff --git a/win-server-test.py b/win-server-test.py new file mode 100644 index 0000000..050aeed --- /dev/null +++ b/win-server-test.py @@ -0,0 +1,258 @@ +#import win32security +from ctypes import windll +from ctypes.wintypes import BOOL, DWORD, HANDLE +from prompt_toolkit.eventloop import get_event_loop, ensure_future, From, Future, Return +import ctypes +import pywintypes +import win32 +import win32api +import win32con +import win32file +import win32pipe +from ptterm.backends.win32_pipes import OVERLAPPED + +socket_name = r'\\.\pipe\pymux.sock.jonathan.9942' + +INSTANCES = 10 +BUFSIZE = 4096 + + +# CreateNamedPipeW flags. +# See: https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-createnamedpipea +PIPE_ACCESS_DUPLEX = 0x00000003 +FILE_FLAG_OVERLAPPED = 0x40000000 +PIPE_TYPE_MESSAGE = 0x00000004 +PIPE_READMODE_MESSAGE = 0x00000002 +PIPE_WAIT = 0x00000000 + +ERROR_IO_PENDING = 997 +ERROR_BROKEN_PIPE= 109 +ERROR_NO_DATA = 232 + +CONNECTING_STATE = 0 +READING_STATE = 1 +WRITING_STATE = 2 + +def _create_event(): + """ + Create Win32 event. + """ + event = windll.kernel32.CreateEventA( + None, # Default security attributes. + BOOL(True), # Manual reset event. + BOOL(True), # Initial state = signaled. + None # Unnamed event object. + ) + if not event: + raise Exception('event creation failed.') + + return event + + +class PipeInstance(object): + def __init__(self, pipe_name, instances=INSTANCES, buffsize=BUFSIZE, timeout=5000): + self.pipe_handle = windll.kernel32.CreateNamedPipeW( + pipe_name, # Pipe name. + PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, + PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, + DWORD(instances), # Max instances. (TODO: increase). + DWORD(buffsize), # Output buffer size. + DWORD(buffsize), # Input buffer size. + DWORD(timeout), # Client time-out. + None, # Default security attributes. + ) + + if not self.pipe_handle: + raise Exception('invalid pipe') + + def handle_pipe(self): + """ + Coroutine that handles this pipe. + """ + while True: + yield From(self._handle_client()) + + def _handle_client(self): + """ + Coroutine that connects to a single client and handles that. + """ + while True: + try: + # Wait for connection. + yield From(self._connect_client()) + + while True: + # Wait for input. + data = yield From(self._read()) + + # Wait for output. + yield From(self._write('Received: ' + data)) + except _BrokenPipeError: + # Disconnect and reconnect. + windll.kernel32.DisconnectNamedPipe(self.pipe_handle) + + + def _connect_client(self): + """ + Wait for a client to connect to this pipe. + """ + overlapped = OVERLAPPED() + overlapped.hEvent = _create_event() + + while True: + success = windll.kernel32.ConnectNamedPipe( + self.pipe_handle, + ctypes.byref(overlapped)) + + if success: + return + + last_error = win32api.GetLastError() + if last_error == ERROR_IO_PENDING: + yield From(wait_for_event(overlapped.hEvent)) + + # XXX: Call GetOverlappedResult. + return # Connection succeeded. + + else: + raise Exception('connect failed with error code' + str(last_error)) + + def _read(self): + """ + Read data from this pipe. + """ + overlapped = OVERLAPPED() + overlapped.hEvent = _create_event() + + buff = ctypes.create_string_buffer(BUFSIZE + 1) + c_read = DWORD() + rc = DWORD() + + success = windll.kernel32.ReadFile( + self.pipe_handle, + buff, + DWORD(BUFSIZE), + ctypes.byref(c_read), + ctypes.byref(overlapped)) + + if success: + buff[c_read.value] = b'\0' + raise Return(buff.value.decode('utf-8', 'ignore')) + + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_IO_PENDING: + yield From(wait_for_event(overlapped.hEvent)) + + success = windll.kernel32.GetOverlappedResult( + self.pipe_handle, + ctypes.byref(overlapped), + ctypes.byref(c_read), + BOOL(False)) + + if success: + buff[c_read.value] = b'\0' + raise Return(buff.value.decode('utf-8', 'ignore')) + + else: + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_BROKEN_PIPE: + print('Overlapped Read failed, broken pipe.') + raise _BrokenPipeError + else: + raise 'reading overlapped IO failed.' + + elif error_code == ERROR_BROKEN_PIPE: + print('Read failed, broken pipe.') + raise _BrokenPipeError + + def _write(self, text): + """ + Write data into the pipe. + """ + overlapped = OVERLAPPED() + overlapped.hEvent = _create_event() + c_written = DWORD() + + data = text.encode('utf-8') + + success = windll.kernel32.WriteFile( + self.pipe_handle, + ctypes.create_string_buffer(data), + len(data), + ctypes.byref(c_written), + ctypes.byref(overlapped)) + + if success: + return + + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_IO_PENDING: + yield From(wait_for_event(overlapped.hEvent)) + + success = windll.kernel32.GetOverlappedResult( + self.pipe_handle, + ctypes.byref(overlapped), + ctypes.byref(c_written), + BOOL(False)) + + if not success: + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_BROKEN_PIPE: + print('Overlapped Write failed, broken pipe.') + raise _BrokenPipeError + else: + raise 'Writing overlapped IO failed.' + + elif error_code == ERROR_BROKEN_PIPE: + print('Write failed, broken pipe.') + raise _BrokenPipeError + + +class _BrokenPipeError(Exception): + pass + + +def disconnect_and_reconnect(pipe): + print('TODO') + + +def wait_for_event(event): + """ + Wraps a win32 event into a `Future` and wait for it. + """ + f = Future() + def ready(): + get_event_loop().remove_win32_handle(event) + f.set_result(None) + get_event_loop().add_win32_handle(event, ready) + return f + + + +def newmain(): + pipes = [PipeInstance(socket_name) for i in range(INSTANCES)] + + for p in pipes: + # Start pipe. + ensure_future(p.handle_pipe()) + + get_event_loop().run_forever() + + +#def gather(*futures): +# result_f = Future() +# done = [0] +# +# def done_cb(f): +# done[0] += 1 +# +# if done[0] == len(futures): +# result_f.set_result(None) +# +# for f in futures: +# f.add_done_callback(done_cb) +# +# return result_f + + +newmain() From 67843f167c25c3343cec86c387d81ed392b4312d Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Sun, 8 Jul 2018 19:29:55 +0200 Subject: [PATCH 03/17] win32 experimental changes. --- pymux/client/defaults.py | 2 +- pymux/client/windows.py | 163 ++++++++++++++++++++++++++++++++++++++- pymux/main.py | 34 +++++++- pymux/server.py | 96 +++++++++++++++++------ 4 files changed, 265 insertions(+), 30 deletions(-) diff --git a/pymux/client/defaults.py b/pymux/client/defaults.py index 938c307..929e874 100644 --- a/pymux/client/defaults.py +++ b/pymux/client/defaults.py @@ -9,7 +9,7 @@ def create_client(socket_name): if is_windows(): from .windows import WindowsClient - return WindowsClient() + return WindowsClient(socket_name) else: from .posix import PosixClient return PosixClient(socket_name) diff --git a/pymux/client/windows.py b/pymux/client/windows.py index 5e0d733..9b4a83d 100644 --- a/pymux/client/windows.py +++ b/pymux/client/windows.py @@ -1,5 +1,19 @@ from __future__ import unicode_literals from .base import Client +import win32file +import win32con +import win32security +import os +from prompt_toolkit.output import ColorDepth +from prompt_toolkit.output.win32 import Win32Output +from prompt_toolkit.eventloop import get_event_loop +from prompt_toolkit.eventloop import Future +from prompt_toolkit.input.win32 import Win32Input +from prompt_toolkit.win32_types import STD_OUTPUT_HANDLE +import json +import sys +from functools import partial +from ctypes import windll __all__ = [ 'WindowsClient', @@ -7,8 +21,153 @@ ] class WindowsClient(Client): - # NOT YES IMPLEMENTED. - pass + def __init__(self, pipe_name): + self._input = Win32Input() + self._hconsole = windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) + self._data_buffer = b'' + + print('Pipe name: ', repr(pipe_name)) + try: + import win32pipe + #self.pipe = win32pipe.ConnectNamedPipe(pipe_name) + self.pipe = win32file.CreateFile( + pipe_name, # Pipe name. + win32con.GENERIC_READ | win32con.GENERIC_WRITE, # Read and write access. + 1, # 10 sharing. + win32security.SECURITY_ATTRIBUTES(), # Default security attributes. + win32con.OPEN_EXISTING, # Open existing pipe. + 0, # win32con.FILE_FLAG_OVERLAPPED, + 0) + except win32file.error as e: + print('Error:', e) + raise + + +# self._stdin_reader = + + def attach(self, detach_other_clients=False, color_depth=ColorDepth.DEPTH_8_BIT): + assert isinstance(detach_other_clients, bool) + future = Future() + + self._send_size() + self._send_packet({ + 'cmd': 'start-gui', + 'detach-others': detach_other_clients, + 'color-depth': color_depth, + 'term': os.environ.get('TERM', ''), + 'data': '' + }) + + loop = get_event_loop() + loop.run_in_executor(self._start_reader_thread) +# loop.add_win32_handle(self.pipe.handle, self._received) + + with self._input.attach(self._input_ready): + loop.run_until_complete(future) + + def _start_reader_thread(self): + while True: + print('Reading pipe') +# num, data = win32file.ReadFile(self.pipe.handle, 2048) + num, data = win32file.ReadFile(self.pipe, 2048) + print('Received from pipe: ', repr(num), repr(data)) + + get_event_loop().call_from_executor( + partial(self._process_chunk, data)) + +# def _received(self): +# print('received something') +# num, data = win32file.ReadFile(self.pipe.handle, 1) +# print('Received', repr(num), repr(data)) + + def _process_chunk(self, data): + print('_process_chunk', repr(data)) + data_buffer = self._data_buffer + data + + while b'\0' in data_buffer: + pos = data_buffer.index(b'\0') + self._process(data_buffer[:pos]) + data_buffer = data_buffer[pos + 1:] + + self._data_buffer = data_buffer + + def _process(self, data_buffer): + """ + Handle incoming packet from server. + """ + packet = json.loads(data_buffer.decode('utf-8')) + print('Processing packet: ', repr(packet)) + + if packet['cmd'] == 'out': + # Call os.write manually. In Python2.6, sys.stdout.write doesn't use UTF-8. + original_mode = DWORD(0) +# windll.kernel32.GetConsoleMode(self._hconsole, byref(original_mode)) +# +# windll.kernel32.SetConsoleMode(self._hconsole, DWORD( +# ENABLE_PROCESSED_INPUT | ENABLE_VIRTUAL_TERMINAL_PROCESSING)) + + try: + os.write(sys.stdout.fileno(), packet['data'].encode('utf-8')) + finally: + pass #windll.kernel32.SetConsoleMode(self._hconsole, original_mode) + + elif packet['cmd'] == 'suspend': + # Suspend client process to background. + pass + + elif packet['cmd'] == 'mode': + pass + + # # Set terminal to raw/cooked. + # action = packet['data'] + + # if action == 'raw': + # cm = raw_mode(sys.stdin.fileno()) + # cm.__enter__() + # self._mode_context_managers.append(cm) + + # elif action == 'cooked': + # cm = cooked_mode(sys.stdin.fileno()) + # cm.__enter__() + # self._mode_context_managers.append(cm) + + # elif action == 'restore' and self._mode_context_managers: + # cm = self._mode_context_managers.pop() + # cm.__exit__() + + + + def _input_ready(self): + print('Input ready') + keys = self._input.read_keys() + print('Received input', repr(keys)) + if keys: + self._send_packet({ + 'cmd': 'in', + 'data': ''.join(key_press.data for key_press in keys), + }) + else: + print('sending nothing, no keys received') + + def _send_packet(self, data): + " Send to server. " + data = json.dumps(data).encode('utf-8') + + def in_thread(): + print('Send packet: ', repr(data)) + win32file.WriteFile(self.pipe, data + b'\0') + print('Send packet done') + get_event_loop().run_in_executor(in_thread) + + def _send_size(self): + " Report terminal size to server. " + output = Win32Output(sys.stdout) + rows, cols = output.get_size() + + self._send_packet({ + 'cmd': 'size', + 'data': [rows, cols] + }) def list_clients(): diff --git a/pymux/main.py b/pymux/main.py index 619a0dd..2d4504a 100644 --- a/pymux/main.py +++ b/pymux/main.py @@ -566,16 +566,42 @@ def listen_on_socket(self, socket_name=None): old_umask = os.umask(int('0027', 8)) self.socket_name, self.socket = bind_socket(socket_name) _ = os.umask(old_umask) - self.socket.listen(0) - get_event_loop().add_reader(self.socket.fileno(), self._socket_accept) +# self.socket.listen(0) +# get_event_loop().add_reader(self.socket.fileno(), self._socket_accept) + print(self.socket) + #print(dir(self.socket)) + get_event_loop().add_win32_handle(self.socket.handle, self._win_socket_accept) # Set session_name according to socket name. - if '.' in self.socket_name: - self.session_name = self.socket_name.rpartition('.')[-1] +# if '.' in self.socket_name: +# self.session_name = self.socket_name.rpartition('.')[-1] logger.info('Listening on %r.' % self.socket_name) return self.socket_name + def _win_socket_accept(self): + import win32pipe + import pywintypes + from .server import ServerConnection + + overlapped = pywintypes.OVERLAPPED() + +# hr = win32pipe.ConnectNamedPipe(self.socket, None)#overlapped) + hr = win32pipe.ConnectNamedPipe(self.socket, overlapped) + + # TODO: right after "ConnectNamedPipe", we should listen again. + print('ConnectNamedPipe hr=', hr) + print(overlapped) + print(dir(overlapped)) + print(overlapped.hEvent) +# input('>') + + with context(): + #connection = ServerConnection(self, hr, hr) + #connection = ServerConnection(self, self.socket.handle, self.socket.handle) + connection = ServerConnection(self, self.socket) + self.connections.append(connection) + def _socket_accept(self): """ Accept connection from client. diff --git a/pymux/server.py b/pymux/server.py index af35cd2..1fa23a2 100644 --- a/pymux/server.py +++ b/pymux/server.py @@ -10,8 +10,10 @@ from prompt_toolkit.input.vt100_parser import Vt100Parser from prompt_toolkit.layout.screen import Size from prompt_toolkit.output.vt100 import Vt100_Output +from functools import partial from .log import logger +import win32file __all__ = ( 'ServerConnection', @@ -23,10 +25,13 @@ class ServerConnection(object): """ For each client that connects, we have one instance of this class. """ - def __init__(self, pymux, connection, client_address): + def __init__(self, pymux, socket): self.pymux = pymux - self.connection = connection - self.client_address = client_address + + self.socket = socket + self.handle = socket.handle + + self.connection = socket.handle self.size = Size(rows=20, columns=80) self._closed = False @@ -40,26 +45,32 @@ def feed_key(key): self._inputstream = Vt100Parser(feed_key) self._pipeinput = _ClientInput(self._send_packet) - get_event_loop().add_reader( - connection.fileno(), self._recv) + print('add win32 handle', socket, socket.handle) +# if connection: # XXX: not sure why we get '0' the first time. +# get_event_loop().add_win32_handle(connection, self._win_recv) + + if socket.handle: # XXX: not sure why we get '0' the first time. + get_event_loop().run_in_executor(self._start_reader_thread) + + def _start_reader_thread(self): + while True: + print('Reading') + num, data = win32file.ReadFile(self.socket, 4096) + print('Received', repr(num), repr(data)) + + get_event_loop().call_from_executor( + partial(self._process_chunk, data)) - def _recv(self): +# def _win_recv(self): +# print('win recv') +# data = win32file.ReadFile(self.connection, 4096) +# print('received', repr(data)) + + def _process_chunk(self, data): """ Data received from the client. (Parse it.) """ - # Read next chunk. - try: - data = self.connection.recv(1024) - except OSError as e: - # On OSX, when we try to create a new window by typing "pymux - # new-window" in a centain pane, very often we get the following - # error: "OSError: [Errno 9] Bad file descriptor." - # This doesn't seem very harmful, and we can just try again. - logger.warning('Got OSError while reading data from client: %s. ' - 'Trying again.', e) - return - if data == b'': # End of file. Close connection. self.detach_and_close() @@ -85,6 +96,8 @@ def _process(self, data): logger.warning('Received invalid JSON from client. Ignoring.') return + print('Received packet: ', repr(packet)) + # Handle commands. if packet['cmd'] == 'run-command': self._run_command(packet) @@ -112,17 +125,30 @@ def _process(self, data): for c in self.pymux.connections: c.detach_and_close() + print('Create app...') self._create_app(color_depth=color_depth, term=term) def _send_packet(self, data): """ Send packet to client. """ - try: - self.connection.send(json.dumps(data).encode('utf-8') + b'\0') - except socket.error: - if not self._closed: - self.detach_and_close() +# import time; time.sleep(2) + data = json.dumps(data).encode('utf-8') + b'\0' + + def send(): + try: + print('sending', repr(data)) + win32file.WriteFile(self.socket, data) + print('Sent') + #self.connection.send(json.dumps(data).encode('utf-8') + b'\0') + except socket.error as e: + print('Error sending', e) + if not self._closed: + self.detach_and_close() + except Exception as e: + print('Error sending', e) + + get_event_loop().run_in_executor(send) def _run_command(self, packet): """ @@ -159,7 +185,9 @@ def _create_app(self, color_depth, term='xterm'): self.client_state = self.pymux.add_client( input=self._pipeinput, output=output, connection=self, color_depth=color_depth) + print('Start running app...') future = self.client_state.app.run_async() + print('Start running app got future...', future) @future.add_done_callback def done(_): @@ -216,6 +244,28 @@ def bind_socket(socket_name=None): raise +def bind_socket(socket_name=None): # XXX: windows + socket_name = r'\\.\pipe\pymux.sock.jonathan.42' + + buffsize = 65536 # TODO: XXX make smaller. + + import win32con + import win32pipe + import win32security + sa = win32security.SECURITY_ATTRIBUTES() + return socket_name, win32pipe.CreateNamedPipe( + socket_name, # Pipe name. + win32con.PIPE_ACCESS_DUPLEX | win32con.FILE_FLAG_OVERLAPPED, #win32con.PIPE_ACCESS_OUTBOUND, # Read/write access + win32con.PIPE_TYPE_BYTE | win32con.PIPE_READMODE_BYTE, + 1, # Max instances. (TODO: increase). + buffsize, # Output buffer size. + buffsize, # Input buffer size. + 0, # Client time-out. + sa # Security attributes. + ) +######### 1, 0, 0, 0, sa) + + class _SocketStdout(object): """ Stdout-like object that writes everything through the unix socket to the From 146acc9fbdb1d136da7eaa81aec605842501a8db Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Thu, 12 Jul 2018 08:30:57 +0200 Subject: [PATCH 04/17] something is working. UI renders in client, but input doesnt work. --- pymux/client/windows.py | 98 +++++--------- pymux/main.py | 77 +++++------ pymux/server.py | 193 +++++++++++++-------------- pymux/win32_client.py | 195 +++++++++++++++++++++++++++ pymux/win32_server.py | 282 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 632 insertions(+), 213 deletions(-) create mode 100644 pymux/win32_client.py create mode 100644 pymux/win32_server.py diff --git a/pymux/client/windows.py b/pymux/client/windows.py index 9b4a83d..7112adc 100644 --- a/pymux/client/windows.py +++ b/pymux/client/windows.py @@ -4,46 +4,36 @@ import win32con import win32security import os +from ctypes import byref +from ctypes.wintypes import DWORD from prompt_toolkit.output import ColorDepth from prompt_toolkit.output.win32 import Win32Output from prompt_toolkit.eventloop import get_event_loop -from prompt_toolkit.eventloop import Future +from prompt_toolkit.eventloop import Future, ensure_future, From from prompt_toolkit.input.win32 import Win32Input from prompt_toolkit.win32_types import STD_OUTPUT_HANDLE import json import sys from functools import partial from ctypes import windll +from ..win32_client import PipeClient __all__ = [ 'WindowsClient', 'list_clients', ] +# See: https://msdn.microsoft.com/pl-pl/library/windows/desktop/ms686033(v=vs.85).aspx +ENABLE_PROCESSED_INPUT = 0x0001 +ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004 + class WindowsClient(Client): def __init__(self, pipe_name): self._input = Win32Input() self._hconsole = windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) self._data_buffer = b'' - print('Pipe name: ', repr(pipe_name)) - try: - import win32pipe - #self.pipe = win32pipe.ConnectNamedPipe(pipe_name) - self.pipe = win32file.CreateFile( - pipe_name, # Pipe name. - win32con.GENERIC_READ | win32con.GENERIC_WRITE, # Read and write access. - 1, # 10 sharing. - win32security.SECURITY_ATTRIBUTES(), # Default security attributes. - win32con.OPEN_EXISTING, # Open existing pipe. - 0, # win32con.FILE_FLAG_OVERLAPPED, - 0) - except win32file.error as e: - print('Error:', e) - raise - - -# self._stdin_reader = + self.pipe = PipeClient(pipe_name) def attach(self, detach_other_clients=False, color_depth=ColorDepth.DEPTH_8_BIT): assert isinstance(detach_other_clients, bool) @@ -58,58 +48,46 @@ def attach(self, detach_other_clients=False, color_depth=ColorDepth.DEPTH_8_BIT) 'data': '' }) - loop = get_event_loop() - loop.run_in_executor(self._start_reader_thread) -# loop.add_win32_handle(self.pipe.handle, self._received) - + f = ensure_future(self._start_reader()) with self._input.attach(self._input_ready): - loop.run_until_complete(future) - - def _start_reader_thread(self): - while True: - print('Reading pipe') -# num, data = win32file.ReadFile(self.pipe.handle, 2048) - num, data = win32file.ReadFile(self.pipe, 2048) - print('Received from pipe: ', repr(num), repr(data)) - - get_event_loop().call_from_executor( - partial(self._process_chunk, data)) + get_event_loop().run_until_complete(f) # Run forever. + print('DONE' * 1000) -# def _received(self): -# print('received something') -# num, data = win32file.ReadFile(self.pipe.handle, 1) -# print('Received', repr(num), repr(data)) - - def _process_chunk(self, data): - print('_process_chunk', repr(data)) - data_buffer = self._data_buffer + data +# loop = get_event_loop() +# loop.run_in_executor(self._start_reader_thread) +# loop.add_win32_handle(self.pipe.handle, self._received) - while b'\0' in data_buffer: - pos = data_buffer.index(b'\0') - self._process(data_buffer[:pos]) - data_buffer = data_buffer[pos + 1:] +# with self._input.attach(self._input_ready): +# get_event_loop().run_until_complete(future) - self._data_buffer = data_buffer + def _start_reader(self): + """ + Read from Win32 pipe. + """ + while True: + message = yield From(self.pipe.read_message()) +# print('Received from pipe: ', repr(message)) + self._process(message) def _process(self, data_buffer): """ Handle incoming packet from server. """ - packet = json.loads(data_buffer.decode('utf-8')) - print('Processing packet: ', repr(packet)) + packet = json.loads(data_buffer) +# print('Processing packet: ', repr(packet)) if packet['cmd'] == 'out': # Call os.write manually. In Python2.6, sys.stdout.write doesn't use UTF-8. original_mode = DWORD(0) -# windll.kernel32.GetConsoleMode(self._hconsole, byref(original_mode)) -# -# windll.kernel32.SetConsoleMode(self._hconsole, DWORD( -# ENABLE_PROCESSED_INPUT | ENABLE_VIRTUAL_TERMINAL_PROCESSING)) + windll.kernel32.GetConsoleMode(self._hconsole, byref(original_mode)) + + windll.kernel32.SetConsoleMode(self._hconsole, DWORD( + ENABLE_PROCESSED_INPUT | ENABLE_VIRTUAL_TERMINAL_PROCESSING)) try: os.write(sys.stdout.fileno(), packet['data'].encode('utf-8')) finally: - pass #windll.kernel32.SetConsoleMode(self._hconsole, original_mode) + windll.kernel32.SetConsoleMode(self._hconsole, original_mode) elif packet['cmd'] == 'suspend': # Suspend client process to background. @@ -135,8 +113,6 @@ def _process(self, data_buffer): # cm = self._mode_context_managers.pop() # cm.__exit__() - - def _input_ready(self): print('Input ready') keys = self._input.read_keys() @@ -151,13 +127,9 @@ def _input_ready(self): def _send_packet(self, data): " Send to server. " - data = json.dumps(data).encode('utf-8') - - def in_thread(): - print('Send packet: ', repr(data)) - win32file.WriteFile(self.pipe, data + b'\0') - print('Send packet done') - get_event_loop().run_in_executor(in_thread) + print('sending packet', repr(data)) + data = json.dumps(data) + ensure_future(self.pipe.write_message(data)) def _send_size(self): " Report terminal size to server. " diff --git a/pymux/main.py b/pymux/main.py index 2d4504a..a3366f4 100644 --- a/pymux/main.py +++ b/pymux/main.py @@ -559,19 +559,22 @@ def listen_on_socket(self, socket_name=None): Listen for clients on a Unix socket. Returns the socket name. """ - from .server import bind_socket + #from .server import bind_socket + from .server import bind_and_listen_on_socket if self.socket is None: - # Py2 uses 0027 and Py3 uses 0o027, but both know - # how to create the right value from the string '0027'. - old_umask = os.umask(int('0027', 8)) - self.socket_name, self.socket = bind_socket(socket_name) - _ = os.umask(old_umask) -# self.socket.listen(0) -# get_event_loop().add_reader(self.socket.fileno(), self._socket_accept) - print(self.socket) - #print(dir(self.socket)) - get_event_loop().add_win32_handle(self.socket.handle, self._win_socket_accept) - + self.socket_name = bind_and_listen_on_socket(socket_name, self._socket_accept) + +# # Py2 uses 0027 and Py3 uses 0o027, but both know +# # how to create the right value from the string '0027'. +# old_umask = os.umask(int('0027', 8)) +# self.socket_name, self.socket = bind_socket(socket_name) +# _ = os.umask(old_umask) +## self.socket.listen(0) +## get_event_loop().add_reader(self.socket.fileno(), self._socket_accept) +# print(self.socket) +# #print(dir(self.socket)) +# get_event_loop().add_win32_handle(self.socket.handle, self._win_socket_accept) +# # Set session_name according to socket name. # if '.' in self.socket_name: # self.session_name = self.socket_name.rpartition('.')[-1] @@ -579,45 +582,31 @@ def listen_on_socket(self, socket_name=None): logger.info('Listening on %r.' % self.socket_name) return self.socket_name - def _win_socket_accept(self): - import win32pipe - import pywintypes + def _socket_accept(self, pipe_connection): from .server import ServerConnection - overlapped = pywintypes.OVERLAPPED() - -# hr = win32pipe.ConnectNamedPipe(self.socket, None)#overlapped) - hr = win32pipe.ConnectNamedPipe(self.socket, overlapped) - - # TODO: right after "ConnectNamedPipe", we should listen again. - print('ConnectNamedPipe hr=', hr) - print(overlapped) - print(dir(overlapped)) - print(overlapped.hEvent) -# input('>') - with context(): #connection = ServerConnection(self, hr, hr) #connection = ServerConnection(self, self.socket.handle, self.socket.handle) - connection = ServerConnection(self, self.socket) + connection = ServerConnection(self, pipe_connection) self.connections.append(connection) - def _socket_accept(self): - """ - Accept connection from client. - """ - logger.info('Client attached.') - from .server import ServerConnection - - connection, client_address = self.socket.accept() - # Note: We don't have to put this socket in non blocking mode. - # This can cause crashes when sending big packets on OS X. - - # We have to create a new `context`, because this will be the scope for - # a new prompt_toolkit.Application to become active. - with context(): - connection = ServerConnection(self, connection, client_address) - self.connections.append(connection) +# def _socket_accept(self): +# """ +# Accept connection from client. +# """ +# logger.info('Client attached.') +# from .server import ServerConnection +# +# connection, client_address = self.socket.accept() +# # Note: We don't have to put this socket in non blocking mode. +# # This can cause crashes when sending big packets on OS X. +# +# # We have to create a new `context`, because this will be the scope for +# # a new prompt_toolkit.Application to become active. +# with context(): +# connection = ServerConnection(self, connection, client_address) +# self.connections.append(connection) def run_server(self): # Ignore keyboard. (When people run "pymux server" and press Ctrl-C.) diff --git a/pymux/server.py b/pymux/server.py index 1fa23a2..afbf98d 100644 --- a/pymux/server.py +++ b/pymux/server.py @@ -4,7 +4,7 @@ import socket import tempfile -from prompt_toolkit.eventloop import get_event_loop +from prompt_toolkit.eventloop import get_event_loop, ensure_future, From from prompt_toolkit.application.current import set_app from prompt_toolkit.input.vt100 import PipeInput from prompt_toolkit.input.vt100_parser import Vt100Parser @@ -25,13 +25,11 @@ class ServerConnection(object): """ For each client that connects, we have one instance of this class. """ - def __init__(self, pymux, socket): + def __init__(self, pymux, pipe_connection): self.pymux = pymux - self.socket = socket - self.handle = socket.handle + self.pipe_connection = pipe_connection - self.connection = socket.handle self.size = Size(rows=20, columns=80) self._closed = False @@ -45,51 +43,47 @@ def feed_key(key): self._inputstream = Vt100Parser(feed_key) self._pipeinput = _ClientInput(self._send_packet) - print('add win32 handle', socket, socket.handle) -# if connection: # XXX: not sure why we get '0' the first time. -# get_event_loop().add_win32_handle(connection, self._win_recv) +# print('add win32 handle', pipe_connection) + ensure_future(self._start_reading()) - if socket.handle: # XXX: not sure why we get '0' the first time. - get_event_loop().run_in_executor(self._start_reader_thread) - - def _start_reader_thread(self): + def _start_reading(self): while True: - print('Reading') - num, data = win32file.ReadFile(self.socket, 4096) - print('Received', repr(num), repr(data)) - - get_event_loop().call_from_executor( - partial(self._process_chunk, data)) - -# def _win_recv(self): -# print('win recv') -# data = win32file.ReadFile(self.connection, 4096) -# print('received', repr(data)) - - def _process_chunk(self, data): - """ - Data received from the client. - (Parse it.) - """ - if data == b'': - # End of file. Close connection. - self.detach_and_close() - else: - # Receive and process packets. - self._recv_buffer += data - - while b'\0' in self._recv_buffer: - # Zero indicates end of packet. - pos = self._recv_buffer.index(b'\0') - self._process(self._recv_buffer[:pos]) - self._recv_buffer = self._recv_buffer[pos + 1:] - + print('start reading') + try: + print(self.pipe_connection) + print(self.pipe_connection.read) + data = yield From(self.pipe_connection.read()) + print('received ', repr(data), type(data)) + self._process(data) + except Exception as e: + import traceback; traceback.print_stack() + print('got exception ', e) + +# def _process_chunk(self, data): +# """ +# Data received from the client. +# (Parse it.) +# """ +# if data == b'': +# # End of file. Close connection. +# self.detach_and_close() +# else: +# # Receive and process packets. +# self._recv_buffer += data +# +# while b'\0' in self._recv_buffer: +# # Zero indicates end of packet. +# pos = self._recv_buffer.index(b'\0') +# self._process(self._recv_buffer[:pos]) +# self._recv_buffer = self._recv_buffer[pos + 1:] +# def _process(self, data): """ Process packet received from client. """ try: - packet = json.loads(data.decode('utf-8')) +# packet = json.loads(data.decode('utf-8')) + packet = json.loads(data) except ValueError: # So far, this never happened. But it would be good to have some # protection. @@ -132,23 +126,14 @@ def _send_packet(self, data): """ Send packet to client. """ -# import time; time.sleep(2) - data = json.dumps(data).encode('utf-8') + b'\0' + data = json.dumps(data) def send(): try: - print('sending', repr(data)) - win32file.WriteFile(self.socket, data) - print('Sent') - #self.connection.send(json.dumps(data).encode('utf-8') + b'\0') - except socket.error as e: - print('Error sending', e) - if not self._closed: - self.detach_and_close() - except Exception as e: - print('Error sending', e) - - get_event_loop().run_in_executor(send) + yield From(self.pipe_connection.write(data)) + except _BrokenPipeError: + pass # TODO + ensure_future(send()) def _run_command(self, packet): """ @@ -200,6 +185,9 @@ def _close_connection(self): self.client_state = None self._closed = True + # Remove from eventloop. + self.pipe_connection.close() + def suspend_client_to_background(self): """ Ask the client to suspend itself. (Like, when Ctrl-Z is pressed.) @@ -210,60 +198,53 @@ def detach_and_close(self): # Remove from Pymux. self._close_connection() - # Remove from eventloop. - get_event_loop().remove_reader(self.connection.fileno()) - self.connection.close() - - -def bind_socket(socket_name=None): + +# def bind_socket(socket_name=None): +# """ +# Find a socket to listen on and return it. +# +# Returns (socket_name, sock_obj) +# """ +# s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) +# +# if socket_name: +# s.bind(socket_name) +# return socket_name, s +# else: +# i = 0 +# while True: +# try: +# socket_name = '%s/pymux.sock.%s.%i' % ( +# tempfile.gettempdir(), getpass.getuser(), i) +# s.bind(socket_name) +# return socket_name, s +# except (OSError, socket.error): +# i += 1 +# +# # When 100 times failed, cancel server +# if i == 100: +# logger.warning('100 times failed to listen on posix socket. ' +# 'Please clean up old sockets.') +# raise +# + + +def bind_and_listen_on_socket(socket_name, accept_callback): """ - Find a socket to listen on and return it. - - Returns (socket_name, sock_obj) """ - s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) - - if socket_name: - s.bind(socket_name) - return socket_name, s - else: - i = 0 - while True: - try: - socket_name = '%s/pymux.sock.%s.%i' % ( - tempfile.gettempdir(), getpass.getuser(), i) - s.bind(socket_name) - return socket_name, s - except (OSError, socket.error): - i += 1 - - # When 100 times failed, cancel server - if i == 100: - logger.warning('100 times failed to listen on posix socket. ' - 'Please clean up old sockets.') - raise + socket_name = r'\\.\pipe\pymux.sock.jonathan.42' + INSTANCES = 10 + from .win32_server import PipeInstance + from prompt_toolkit.eventloop import ensure_future + pipes = [PipeInstance(socket_name, pipe_connection_cb=accept_callback) + for i in range(INSTANCES)] -def bind_socket(socket_name=None): # XXX: windows - socket_name = r'\\.\pipe\pymux.sock.jonathan.42' + for p in pipes: + # Start pipe. + ensure_future(p.handle_pipe()) - buffsize = 65536 # TODO: XXX make smaller. - - import win32con - import win32pipe - import win32security - sa = win32security.SECURITY_ATTRIBUTES() - return socket_name, win32pipe.CreateNamedPipe( - socket_name, # Pipe name. - win32con.PIPE_ACCESS_DUPLEX | win32con.FILE_FLAG_OVERLAPPED, #win32con.PIPE_ACCESS_OUTBOUND, # Read/write access - win32con.PIPE_TYPE_BYTE | win32con.PIPE_READMODE_BYTE, - 1, # Max instances. (TODO: increase). - buffsize, # Output buffer size. - buffsize, # Input buffer size. - 0, # Client time-out. - sa # Security attributes. - ) -######### 1, 0, 0, 0, sa) + return socket_name class _SocketStdout(object): diff --git a/pymux/win32_client.py b/pymux/win32_client.py new file mode 100644 index 0000000..8390f36 --- /dev/null +++ b/pymux/win32_client.py @@ -0,0 +1,195 @@ +from ctypes.wintypes import DWORD, BOOL +import ctypes +#import win32 +from ctypes import windll +from ptterm.backends.win32_pipes import OVERLAPPED +from prompt_toolkit.eventloop import get_event_loop, ensure_future, From, Return + +BUFSIZE = 4096 + +GENERIC_READ = 0x80000000 +GENERIC_WRITE = 0x40000000 +OPEN_EXISTING = 0x3 + +ERROR_IO_PENDING = 997 +ERROR_BROKEN_PIPE= 109 + +def _create_event(): + """ + Create Win32 event. + """ + event = windll.kernel32.CreateEventA( + None, # Default security attributes. + BOOL(True), # Manual reset event. + BOOL(True), # Initial state = signaled. + None # Unnamed event object. + ) + if not event: + raise Exception('event creation failed.') + return event + + +class PipeClient(object): + def __init__(self, pipe_name): + self.pipe_handle = windll.kernel32.CreateFileW( + pipe_name, + DWORD(GENERIC_READ | GENERIC_WRITE), + DWORD(0), # No sharing. + None, # Default security attributes. + DWORD(OPEN_EXISTING), # dwCreationDisposition. + 0, # dwFlagsAndAttributes. + None # hTemplateFile, + ) + + # TODO: handle errors. + print('pipe handle', self.pipe_handle) + #if self.pipe_handle != + +# def write_message(self, text): +# # Send a message to the pipe server. +# message = text.encode('utf-8') +# rc = DWORD() +# +# fSuccess = windll.kernel32.WriteFile( +# self.pipe_handle, +# ctypes.create_string_buffer(message), +# len(message), +# ctypes.byref(rc), +# None) # Not overlapped. +# +# if not fSuccess: +# print('WriteFile failed.', win32api.GetLastError()) +# return + + def write_message(self, text): + """ + (coroutine) + Write data into the pipe. + """ + print('PipeClient.write_message #0') + overlapped = OVERLAPPED() + overlapped.hEvent = _create_event() + c_written = DWORD() + + data = text.encode('utf-8') + print('PipeClient.write_message #1') + + success = windll.kernel32.WriteFile( + self.pipe_handle, + ctypes.create_string_buffer(data), + len(data), + ctypes.byref(c_written), + ctypes.byref(overlapped)) + + print('PipeClient.write_message #2', success) + if success: + return + + error_code = windll.kernel32.GetLastError() + print('PipeClient.write_message #3', error_code) + if error_code == ERROR_IO_PENDING: + yield From(wait_for_event(overlapped.hEvent)) + + success = windll.kernel32.GetOverlappedResult( + self.pipe_handle, + ctypes.byref(overlapped), + ctypes.byref(c_written), + BOOL(False)) + + if not success: + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_BROKEN_PIPE: + print('Overlapped Write failed, broken pipe.') + raise _BrokenPipeError + else: + raise 'Writing overlapped IO failed.' + + elif error_code == ERROR_BROKEN_PIPE: + print('Write failed, broken pipe.') + raise _BrokenPipeError + + +# def read_message(self): +# # Get response. +# buff = ctypes.create_string_buffer(BUFSIZE) +# c_read = DWORD() +# +# print('call readfile') +# success = windll.kernel32.ReadFile( +# self.pipe_handle, +# buff, +# DWORD(BUFSIZE), +# ctypes.byref(c_read), +# None) # Not overlapped. +# +# if success: +# buff[c_read.value] = b'\0' +# return buff.value.decode('utf-8', 'ignore') +# # TODO: handle ERROR_MORE_DATA + + def read_message(self): + """ + (coroutine) + Read data from this pipe. + """ + overlapped = OVERLAPPED() + overlapped.hEvent = _create_event() + + buff = ctypes.create_string_buffer(BUFSIZE + 1) + c_read = DWORD() + rc = DWORD() + + success = windll.kernel32.ReadFile( + self.pipe_handle, + buff, + DWORD(BUFSIZE), + ctypes.byref(c_read), + ctypes.byref(overlapped)) + + print('reading', success) + if success: + buff[c_read.value] = b'\0' + raise Return(buff.value.decode('utf-8', 'ignore')) + + error_code = windll.kernel32.GetLastError() + print('err', error_code) + if error_code == ERROR_IO_PENDING: + yield From(wait_for_event(overlapped.hEvent)) + + success = windll.kernel32.GetOverlappedResult( + self.pipe_handle, + ctypes.byref(overlapped), + ctypes.byref(c_read), + BOOL(False)) + + if success: + buff[c_read.value] = b'\0' + print('received', buff.value) + raise Return(buff.value.decode('utf-8', 'ignore')) + + else: + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_BROKEN_PIPE: + print('Overlapped Read failed, broken pipe.') + raise _BrokenPipeError + else: + raise 'reading overlapped IO failed.' + + elif error_code == ERROR_BROKEN_PIPE: + print('Read failed, broken pipe.') + raise _BrokenPipeError + + + + def close(): + win32.CloseHandle(self.pipe_handle) + +#def main_coro(): +# pipe_name = r'\\.\pipe\pymux.sock.jonathan.9942' +# pipe_client = PipeClient(pipe_name) +# yield From(pipe_client.write_message('Hi there')) +# result = yield From(pipe_client.read_message()) +# print('result', repr(result)) + + +#get_event_loop().run_until_complete(ensure_future(main_coro())) diff --git a/pymux/win32_server.py b/pymux/win32_server.py new file mode 100644 index 0000000..646d78d --- /dev/null +++ b/pymux/win32_server.py @@ -0,0 +1,282 @@ +#import win32security +from ctypes import windll +from ctypes.wintypes import BOOL, DWORD, HANDLE +from prompt_toolkit.eventloop import get_event_loop, ensure_future, From, Future, Return +import ctypes +import pywintypes +import win32 +import win32api +import win32con +import win32file +import win32pipe +from ptterm.backends.win32_pipes import OVERLAPPED + +socket_name = r'\\.\pipe\pymux.sock.jonathan.9942' + +INSTANCES = 10 +BUFSIZE = 4096 + + +# CreateNamedPipeW flags. +# See: https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-createnamedpipea +PIPE_ACCESS_DUPLEX = 0x00000003 +FILE_FLAG_OVERLAPPED = 0x40000000 +PIPE_TYPE_MESSAGE = 0x00000004 +PIPE_READMODE_MESSAGE = 0x00000002 +PIPE_WAIT = 0x00000000 + +ERROR_IO_PENDING = 997 +ERROR_BROKEN_PIPE= 109 +ERROR_NO_DATA = 232 + +CONNECTING_STATE = 0 +READING_STATE = 1 +WRITING_STATE = 2 + + +class Win32PipeConnection(object): + def __init__(self, pipe_instance): + self.pipe_instance = pipe_instance + self.done_f = Future() + + def read(self): + print('Win32PipeConnection.read #0') + if self.done_f.done(): + raise _BrokenPipeError + + try: + print('Win32PipeConnection.read #1') + result = yield From(self.pipe_instance.read()) + print('Win32PipeConnection.read #2') + print('result=', type(result), repr(result)) + raise Return(result) + except _BrokenPipeError: + self.done_f.set_result(None) + raise + + def write(self, message): + if self.done_f.done(): + raise _BrokenPipeError + + try: + yield From(self.pipe_instance.write(message)) + except _BrokenPipeError: + self.done_f.set_result(None) + raise + + def close(self): + pass + + +class PipeInstance(object): + def __init__(self, pipe_name, instances=INSTANCES, buffsize=BUFSIZE, + timeout=5000, pipe_connection_cb=None): + + self.pipe_handle = windll.kernel32.CreateNamedPipeW( + pipe_name, # Pipe name. + PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, + PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, + DWORD(instances), # Max instances. (TODO: increase). + DWORD(buffsize), # Output buffer size. + DWORD(buffsize), # Input buffer size. + DWORD(timeout), # Client time-out. + None, # Default security attributes. + ) + self.pipe_connection_cb = pipe_connection_cb + + if not self.pipe_handle: + raise Exception('invalid pipe') + + def handle_pipe(self): + """ + Coroutine that handles this pipe. + """ + while True: + yield From(self._handle_client()) + + def _handle_client(self): + """ + Coroutine that connects to a single client and handles that. + """ + while True: +# try: + # Wait for connection. + print('wait for connection') + yield From(self._connect_client()) + print('connected') + + conn = Win32PipeConnection(self) + print('connected cb') + self.pipe_connection_cb(conn) + print('connected cb done, wait for done_f') + + yield From(conn.done_f) + print('connected cb done, done_f done') + +# while True: +# # Wait for input. +# data = yield From(self._read()) +# +# # Wait for output. +# yield From(self._write('Received: ' + data)) +# except _BrokenPipeError: + # Disconnect and reconnect. + print('disconnect') + windll.kernel32.DisconnectNamedPipe(self.pipe_handle) + + def _connect_client(self): + """ + Wait for a client to connect to this pipe. + """ + overlapped = OVERLAPPED() + overlapped.hEvent = _create_event() + + while True: + success = windll.kernel32.ConnectNamedPipe( + self.pipe_handle, + ctypes.byref(overlapped)) + + if success: + return + + last_error = win32api.GetLastError() + if last_error == ERROR_IO_PENDING: + yield From(wait_for_event(overlapped.hEvent)) + + # XXX: Call GetOverlappedResult. + return # Connection succeeded. + + else: + raise Exception('connect failed with error code' + str(last_error)) + + def read(self): + """ + Read data from this pipe. + """ + print('Pipe instance read #0') + overlapped = OVERLAPPED() + overlapped.hEvent = _create_event() + + buff = ctypes.create_string_buffer(BUFSIZE + 1) + c_read = DWORD() + rc = DWORD() + + print('Pipe instance read #1') + success = windll.kernel32.ReadFile( + self.pipe_handle, + buff, + DWORD(BUFSIZE), + ctypes.byref(c_read), + ctypes.byref(overlapped)) + + print('Pipe instance read #2', success) + if success: + buff[c_read.value] = b'\0' + raise Return(buff.value.decode('utf-8', 'ignore')) + + error_code = windll.kernel32.GetLastError() + print('Pipe instance read #3', error_code) + if error_code == ERROR_IO_PENDING: + print('Pipe instance read #4') + yield From(wait_for_event(overlapped.hEvent)) + print('Pipe instance read #5') + + success = windll.kernel32.GetOverlappedResult( + self.pipe_handle, + ctypes.byref(overlapped), + ctypes.byref(c_read), + BOOL(False)) + + print('Pipe instance read #6', success) + if success: + buff[c_read.value] = b'\0' + raise Return(buff.value.decode('utf-8', 'ignore')) + + else: + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_BROKEN_PIPE: + print('Overlapped Read failed, broken pipe.') + raise _BrokenPipeError + else: + raise Exception('reading overlapped IO failed.') + + elif error_code == ERROR_BROKEN_PIPE: + print('Read failed, broken pipe.') + raise _BrokenPipeError + + def write(self, text): + """ + Write data into the pipe. + """ + overlapped = OVERLAPPED() + overlapped.hEvent = _create_event() + c_written = DWORD() + + data = text.encode('utf-8') + + success = windll.kernel32.WriteFile( + self.pipe_handle, + ctypes.create_string_buffer(data), + len(data), + ctypes.byref(c_written), + ctypes.byref(overlapped)) + + if success: + return + + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_IO_PENDING: + yield From(wait_for_event(overlapped.hEvent)) + + success = windll.kernel32.GetOverlappedResult( + self.pipe_handle, + ctypes.byref(overlapped), + ctypes.byref(c_written), + BOOL(False)) + + if not success: + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_BROKEN_PIPE: + print('Overlapped Write failed, broken pipe.') + raise _BrokenPipeError + else: + raise 'Writing overlapped IO failed.' + + elif error_code == ERROR_BROKEN_PIPE: + print('Write failed, broken pipe.') + raise _BrokenPipeError + + +class _BrokenPipeError(Exception): + pass + + +def wait_for_event(event): + """ + Wraps a win32 event into a `Future` and wait for it. + """ + f = Future() + def ready(): + get_event_loop().remove_win32_handle(event) + f.set_result(None) + get_event_loop().add_win32_handle(event, ready) + return f + + +def _create_event(): + """ + Create Win32 event. + """ + event = windll.kernel32.CreateEventA( + None, # Default security attributes. + BOOL(True), # Manual reset event. + BOOL(True), # Initial state = signaled. + None # Unnamed event object. + ) + if not event: + raise Exception('event creation failed.') + + return event + + +# TODO: delete event? From 53ab3bb6f49ab16e59c7dec4acb0fa59bfb39de8 Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Thu, 12 Jul 2018 10:50:04 +0200 Subject: [PATCH 05/17] - --- pymux/win32_client.py | 36 +++++++++-- pymux/win32_server.py | 146 +++++++++++++++++++++++------------------- win-client-test.py | 27 +++++++- 3 files changed, 134 insertions(+), 75 deletions(-) diff --git a/pymux/win32_client.py b/pymux/win32_client.py index 8390f36..4e8c34c 100644 --- a/pymux/win32_client.py +++ b/pymux/win32_client.py @@ -1,9 +1,9 @@ from ctypes.wintypes import DWORD, BOOL import ctypes #import win32 -from ctypes import windll +from ctypes import windll, byref from ptterm.backends.win32_pipes import OVERLAPPED -from prompt_toolkit.eventloop import get_event_loop, ensure_future, From, Return +from prompt_toolkit.eventloop import get_event_loop, ensure_future, From, Return, Future BUFSIZE = 4096 @@ -13,6 +13,10 @@ ERROR_IO_PENDING = 997 ERROR_BROKEN_PIPE= 109 +FILE_FLAG_OVERLAPPED = 0x40000000 + +PIPE_READMODE_MESSAGE = 0x2 +FILE_WRITE_ATTRIBUTES = 0x100 # 256 def _create_event(): """ @@ -33,17 +37,25 @@ class PipeClient(object): def __init__(self, pipe_name): self.pipe_handle = windll.kernel32.CreateFileW( pipe_name, - DWORD(GENERIC_READ | GENERIC_WRITE), + DWORD(GENERIC_READ | GENERIC_WRITE | FILE_WRITE_ATTRIBUTES), DWORD(0), # No sharing. None, # Default security attributes. DWORD(OPEN_EXISTING), # dwCreationDisposition. - 0, # dwFlagsAndAttributes. + FILE_FLAG_OVERLAPPED, # dwFlagsAndAttributes. None # hTemplateFile, ) # TODO: handle errors. print('pipe handle', self.pipe_handle) - #if self.pipe_handle != + #if self.pipe_handle != INVALID_HANDLE_VALUE: ... # TODO!!! + + dwMode = DWORD(PIPE_READMODE_MESSAGE) + windll.kernel32.SetNamedPipeHandleState( + self.pipe_handle, + byref(dwMode), + None, + None) + # def write_message(self, text): # # Send a message to the pipe server. @@ -193,3 +205,17 @@ def close(): #get_event_loop().run_until_complete(ensure_future(main_coro())) + + +def wait_for_event(event): + """ + Wraps a win32 event into a `Future` and wait for it. + """ + f = Future() + def ready(): + get_event_loop().remove_win32_handle(event) + f.set_result(None) + get_event_loop().add_win32_handle(event, ready) + return f + + diff --git a/pymux/win32_server.py b/pymux/win32_server.py index 646d78d..90cee05 100644 --- a/pymux/win32_server.py +++ b/pymux/win32_server.py @@ -24,6 +24,7 @@ PIPE_TYPE_MESSAGE = 0x00000004 PIPE_READMODE_MESSAGE = 0x00000002 PIPE_WAIT = 0x00000000 +PIPE_NOWAIT = 0x00000001 ERROR_IO_PENDING = 997 ERROR_BROKEN_PIPE= 109 @@ -155,54 +156,60 @@ def read(self): """ print('Pipe instance read #0') overlapped = OVERLAPPED() - overlapped.hEvent = _create_event() + ev = _create_event(True) # XXX: not sure about the default event value here. + overlapped.hEvent = ev + + try: + buff = ctypes.create_string_buffer(BUFSIZE + 1) + c_read = DWORD() + rc = DWORD() - buff = ctypes.create_string_buffer(BUFSIZE + 1) - c_read = DWORD() - rc = DWORD() - - print('Pipe instance read #1') - success = windll.kernel32.ReadFile( - self.pipe_handle, - buff, - DWORD(BUFSIZE), - ctypes.byref(c_read), - ctypes.byref(overlapped)) - - print('Pipe instance read #2', success) - if success: - buff[c_read.value] = b'\0' - raise Return(buff.value.decode('utf-8', 'ignore')) - - error_code = windll.kernel32.GetLastError() - print('Pipe instance read #3', error_code) - if error_code == ERROR_IO_PENDING: - print('Pipe instance read #4') - yield From(wait_for_event(overlapped.hEvent)) - print('Pipe instance read #5') - - success = windll.kernel32.GetOverlappedResult( + print('Pipe instance read #1', self) + success = windll.kernel32.ReadFile( self.pipe_handle, - ctypes.byref(overlapped), + buff, + DWORD(BUFSIZE), ctypes.byref(c_read), - BOOL(False)) + ctypes.byref(overlapped)) - print('Pipe instance read #6', success) + print('Pipe instance read #2', success) if success: buff[c_read.value] = b'\0' raise Return(buff.value.decode('utf-8', 'ignore')) - else: - error_code = windll.kernel32.GetLastError() - if error_code == ERROR_BROKEN_PIPE: - print('Overlapped Read failed, broken pipe.') - raise _BrokenPipeError + error_code = windll.kernel32.GetLastError() + print('Pipe instance read #3', error_code) + if error_code == ERROR_IO_PENDING: + print('Pipe instance read #4') + yield From(wait_for_event(ev)) + print('Pipe instance read #5') + + success = windll.kernel32.GetOverlappedResult( + self.pipe_handle, + ctypes.byref(overlapped), + ctypes.byref(c_read), + BOOL(False)) + + print('Pipe instance read #6', success) + if success: + buff[c_read.value] = b'\0' + raise Return(buff.value.decode('utf-8', 'ignore')) + else: - raise Exception('reading overlapped IO failed.') + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_BROKEN_PIPE: + print('Overlapped Read failed, broken pipe.') + raise _BrokenPipeError + else: + raise Exception('reading overlapped IO failed.') - elif error_code == ERROR_BROKEN_PIPE: - print('Read failed, broken pipe.') - raise _BrokenPipeError + elif error_code == ERROR_BROKEN_PIPE: + print('Read failed, broken pipe.') + raise _BrokenPipeError + + finally: + # Release event. + windll.kernel32.CloseHandle(overlapped.hEvent) def write(self, text): """ @@ -212,39 +219,44 @@ def write(self, text): overlapped.hEvent = _create_event() c_written = DWORD() - data = text.encode('utf-8') + try: + data = text.encode('utf-8') + + success = windll.kernel32.WriteFile( + self.pipe_handle, + ctypes.create_string_buffer(data), + len(data), + ctypes.byref(c_written), + ctypes.byref(overlapped)) - success = windll.kernel32.WriteFile( - self.pipe_handle, - ctypes.create_string_buffer(data), - len(data), - ctypes.byref(c_written), - ctypes.byref(overlapped)) + if success: + return - if success: - return + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_IO_PENDING: + yield From(wait_for_event(overlapped.hEvent)) - error_code = windll.kernel32.GetLastError() - if error_code == ERROR_IO_PENDING: - yield From(wait_for_event(overlapped.hEvent)) + success = windll.kernel32.GetOverlappedResult( + self.pipe_handle, + ctypes.byref(overlapped), + ctypes.byref(c_written), + BOOL(False)) - success = windll.kernel32.GetOverlappedResult( - self.pipe_handle, - ctypes.byref(overlapped), - ctypes.byref(c_written), - BOOL(False)) + if not success: + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_BROKEN_PIPE: + print('Overlapped Write failed, broken pipe.') + raise _BrokenPipeError + else: + raise 'Writing overlapped IO failed.' - if not success: - error_code = windll.kernel32.GetLastError() - if error_code == ERROR_BROKEN_PIPE: - print('Overlapped Write failed, broken pipe.') - raise _BrokenPipeError - else: - raise 'Writing overlapped IO failed.' + elif error_code == ERROR_BROKEN_PIPE: + print('Write failed, broken pipe.') + raise _BrokenPipeError - elif error_code == ERROR_BROKEN_PIPE: - print('Write failed, broken pipe.') - raise _BrokenPipeError + finally: + # Release event. + windll.kernel32.CloseHandle(overlapped.hEvent) class _BrokenPipeError(Exception): @@ -263,14 +275,14 @@ def ready(): return f -def _create_event(): +def _create_event(initial_state=True): """ Create Win32 event. """ event = windll.kernel32.CreateEventA( None, # Default security attributes. BOOL(True), # Manual reset event. - BOOL(True), # Initial state = signaled. + BOOL(initial_state), # Initial state = signaled. None # Unnamed event object. ) if not event: diff --git a/win-client-test.py b/win-client-test.py index 70bc6f9..f893e54 100644 --- a/win-client-test.py +++ b/win-client-test.py @@ -1,15 +1,16 @@ from ctypes.wintypes import DWORD, BOOL import ctypes #import win32 -from ctypes import windll +from ctypes import windll, byref from ptterm.backends.win32_pipes import OVERLAPPED -from prompt_toolkit.eventloop import get_event_loop, ensure_future, From, Return +from prompt_toolkit.eventloop import get_event_loop, ensure_future, From, Return, Future BUFSIZE = 4096 GENERIC_READ = 0x80000000 GENERIC_WRITE = 0x40000000 OPEN_EXISTING = 0x3 +ERROR_IO_PENDING = 997 def _create_event(): """ @@ -25,6 +26,7 @@ def _create_event(): raise Exception('event creation failed.') return event +FILE_FLAG_OVERLAPPED = 0x40000000 class PipeClient(object): def __init__(self, pipe_name): @@ -34,7 +36,7 @@ def __init__(self, pipe_name): DWORD(0), # No sharing. None, # Default security attributes. DWORD(OPEN_EXISTING), # dwCreationDisposition. - 0, # dwFlagsAndAttributes. + FILE_FLAG_OVERLAPPED, # dwFlagsAndAttributes. None # hTemplateFile, ) @@ -42,6 +44,14 @@ def __init__(self, pipe_name): print(self.pipe_handle) #if self.pipe_handle != + PIPE_READMODE_MESSAGE = 0x2 + dwMode = DWORD(PIPE_READMODE_MESSAGE) + windll.kernel32.SetNamedPipeHandleState( + self.pipe_handle, + byref(dwMode), + None, + None) + # def write_message(self, text): # # Send a message to the pipe server. # message = text.encode('utf-8') @@ -181,5 +191,16 @@ def main_coro(): result = yield From(pipe_client.read_message()) print('result', repr(result)) +def wait_for_event(event): + """ + Wraps a win32 event into a `Future` and wait for it. + """ + f = Future() + def ready(): + get_event_loop().remove_win32_handle(event) + f.set_result(None) + get_event_loop().add_win32_handle(event, ready) + return f + get_event_loop().run_until_complete(ensure_future(main_coro())) From 63ba47c70f03ce8b480ded2ee6a5df2025e71003 Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Fri, 13 Jul 2018 15:18:17 +0200 Subject: [PATCH 06/17] - --- pymux/client/windows.py | 14 ++++++---- pymux/server.py | 9 ++++-- pymux/win32_client.py | 61 ++++++++++++++++++++++++++++++----------- win-server-test.py | 2 ++ 4 files changed, 61 insertions(+), 25 deletions(-) diff --git a/pymux/client/windows.py b/pymux/client/windows.py index 7112adc..2ee3562 100644 --- a/pymux/client/windows.py +++ b/pymux/client/windows.py @@ -67,7 +67,9 @@ def _start_reader(self): while True: message = yield From(self.pipe.read_message()) # print('Received from pipe: ', repr(message)) - self._process(message) +# print('start process') + self._process(message) #XXX: uncomment!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +# print('end process') def _process(self, data_buffer): """ @@ -114,20 +116,20 @@ def _process(self, data_buffer): # cm.__exit__() def _input_ready(self): - print('Input ready') +# print('Input ready') keys = self._input.read_keys() - print('Received input', repr(keys)) +# print('Received input', repr(keys)) if keys: self._send_packet({ 'cmd': 'in', 'data': ''.join(key_press.data for key_press in keys), }) - else: - print('sending nothing, no keys received') +# else: +# print('sending nothing, no keys received') def _send_packet(self, data): " Send to server. " - print('sending packet', repr(data)) +# print('sending packet', repr(data)) data = json.dumps(data) ensure_future(self.pipe.write_message(data)) diff --git a/pymux/server.py b/pymux/server.py index afbf98d..7c8c0c4 100644 --- a/pymux/server.py +++ b/pymux/server.py @@ -4,10 +4,10 @@ import socket import tempfile -from prompt_toolkit.eventloop import get_event_loop, ensure_future, From from prompt_toolkit.application.current import set_app -from prompt_toolkit.input.vt100 import PipeInput +from prompt_toolkit.eventloop import get_event_loop, ensure_future, From from prompt_toolkit.input.vt100_parser import Vt100Parser +from prompt_toolkit.input.win32_pipe import Win32PipeInput from prompt_toolkit.layout.screen import Size from prompt_toolkit.output.vt100 import Vt100_Output from functools import partial @@ -126,6 +126,7 @@ def _send_packet(self, data): """ Send packet to client. """ + print('send packet', data) data = json.dumps(data) def send(): @@ -176,6 +177,8 @@ def _create_app(self, color_depth, term='xterm'): @future.add_done_callback def done(_): + print('APP DONE.........') + print(future.result()) self._close_connection() def _close_connection(self): @@ -266,7 +269,7 @@ def flush(self): self._buffer = [] -class _ClientInput(PipeInput): +class _ClientInput(Win32PipeInput): """ Input class that can be given to the CommandLineInterface. We only need this for turning the client into raw_mode/cooked_mode. diff --git a/pymux/win32_client.py b/pymux/win32_client.py index 4e8c34c..d94f774 100644 --- a/pymux/win32_client.py +++ b/pymux/win32_client.py @@ -12,7 +12,8 @@ OPEN_EXISTING = 0x3 ERROR_IO_PENDING = 997 -ERROR_BROKEN_PIPE= 109 +ERROR_BROKEN_PIPE = 109 +ERROR_MORE_DATA = 234 FILE_FLAG_OVERLAPPED = 0x40000000 PIPE_READMODE_MESSAGE = 0x2 @@ -46,7 +47,7 @@ def __init__(self, pipe_name): ) # TODO: handle errors. - print('pipe handle', self.pipe_handle) +# print('pipe handle', self.pipe_handle) #if self.pipe_handle != INVALID_HANDLE_VALUE: ... # TODO!!! dwMode = DWORD(PIPE_READMODE_MESSAGE) @@ -78,13 +79,13 @@ def write_message(self, text): (coroutine) Write data into the pipe. """ - print('PipeClient.write_message #0') +# print('PipeClient.write_message #0') overlapped = OVERLAPPED() overlapped.hEvent = _create_event() c_written = DWORD() data = text.encode('utf-8') - print('PipeClient.write_message #1') +# print('PipeClient.write_message #1') success = windll.kernel32.WriteFile( self.pipe_handle, @@ -93,12 +94,12 @@ def write_message(self, text): ctypes.byref(c_written), ctypes.byref(overlapped)) - print('PipeClient.write_message #2', success) +# print('PipeClient.write_message #2', success) if success: return error_code = windll.kernel32.GetLastError() - print('PipeClient.write_message #3', error_code) +# print('PipeClient.write_message #3', error_code) if error_code == ERROR_IO_PENDING: yield From(wait_for_event(overlapped.hEvent)) @@ -111,13 +112,13 @@ def write_message(self, text): if not success: error_code = windll.kernel32.GetLastError() if error_code == ERROR_BROKEN_PIPE: - print('Overlapped Write failed, broken pipe.') +# print('Overlapped Write failed, broken pipe.') raise _BrokenPipeError else: raise 'Writing overlapped IO failed.' elif error_code == ERROR_BROKEN_PIPE: - print('Write failed, broken pipe.') +# print('Write failed, broken pipe.') raise _BrokenPipeError @@ -140,17 +141,28 @@ def write_message(self, text): # # TODO: handle ERROR_MORE_DATA def read_message(self): + """ + (coroutine) + Read one single message from the pipe and return as text. + """ + data = yield From(self._read_message_bytes()) + raise Return(data.decode('utf-8', 'ignore')) + + def _read_message_bytes(self): """ (coroutine) Read data from this pipe. """ +# print('PipeClient.read_message') overlapped = OVERLAPPED() overlapped.hEvent = _create_event() +# print('PipeClient.read_message #2') buff = ctypes.create_string_buffer(BUFSIZE + 1) c_read = DWORD() rc = DWORD() +# print('PipeClient.read_message #3') success = windll.kernel32.ReadFile( self.pipe_handle, buff, @@ -158,13 +170,13 @@ def read_message(self): ctypes.byref(c_read), ctypes.byref(overlapped)) - print('reading', success) +# print('reading', success) if success: buff[c_read.value] = b'\0' - raise Return(buff.value.decode('utf-8', 'ignore')) + raise Return(buff.value) error_code = windll.kernel32.GetLastError() - print('err', error_code) +# print('err', error_code) if error_code == ERROR_IO_PENDING: yield From(wait_for_event(overlapped.hEvent)) @@ -176,21 +188,38 @@ def read_message(self): if success: buff[c_read.value] = b'\0' - print('received', buff.value) - raise Return(buff.value.decode('utf-8', 'ignore')) +# print('received', buff.value) + raise Return(buff.value) else: error_code = windll.kernel32.GetLastError() if error_code == ERROR_BROKEN_PIPE: - print('Overlapped Read failed, broken pipe.') +# print('Overlapped Read failed, broken pipe.') raise _BrokenPipeError + elif error_code == ERROR_MORE_DATA: +# print('ERRRO_MORE_DATA') + + more_data = yield From(self._read_message_bytes()) +# if more_data is None: +# more_data = '' # XXX: why does this happen???? + raise Return(buff.value + more_data) + pass # XXX + # XXX: use utf8decoder... + else: - raise 'reading overlapped IO failed.' + raise Exception( + 'reading overlapped IO failed. error_code=%r' % error_code) elif error_code == ERROR_BROKEN_PIPE: - print('Read failed, broken pipe.') +# print('Read failed, broken pipe.') raise _BrokenPipeError + elif error_code == ERROR_MORE_DATA: + more_data = yield From(self._read_message_bytes()) + raise Return(buff.value + more_data) + + else: + raise Exception('Reading pipe failed, error_code=%s' % error_code) def close(): diff --git a/win-server-test.py b/win-server-test.py index 050aeed..c0f1814 100644 --- a/win-server-test.py +++ b/win-server-test.py @@ -141,7 +141,9 @@ def _read(self): error_code = windll.kernel32.GetLastError() if error_code == ERROR_IO_PENDING: + print('wait for event') yield From(wait_for_event(overlapped.hEvent)) + print('done wait for event') success = windll.kernel32.GetOverlappedResult( self.pipe_handle, From 440b7f0fa42fef159195adc52b4aa7dc75b9765f Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Fri, 13 Jul 2018 15:30:15 +0200 Subject: [PATCH 07/17] - --- pymux/win32_client.py | 105 ++++++++---------------------------------- 1 file changed, 19 insertions(+), 86 deletions(-) diff --git a/pymux/win32_client.py b/pymux/win32_client.py index d94f774..ac03807 100644 --- a/pymux/win32_client.py +++ b/pymux/win32_client.py @@ -1,9 +1,8 @@ +from ctypes import windll, byref, create_string_buffer from ctypes.wintypes import DWORD, BOOL -import ctypes -#import win32 -from ctypes import windll, byref -from ptterm.backends.win32_pipes import OVERLAPPED from prompt_toolkit.eventloop import get_event_loop, ensure_future, From, Return, Future +from ptterm.backends.win32_pipes import OVERLAPPED +import ctypes BUFSIZE = 4096 @@ -18,6 +17,8 @@ PIPE_READMODE_MESSAGE = 0x2 FILE_WRITE_ATTRIBUTES = 0x100 # 256 +INVALID_HANDLE_VALUE = -1 + def _create_event(): """ @@ -45,10 +46,8 @@ def __init__(self, pipe_name): FILE_FLAG_OVERLAPPED, # dwFlagsAndAttributes. None # hTemplateFile, ) - - # TODO: handle errors. -# print('pipe handle', self.pipe_handle) - #if self.pipe_handle != INVALID_HANDLE_VALUE: ... # TODO!!! + if self.pipe_handle == INVALID_HANDLE_VALUE: + raise Exception('Invalid handle. Connecting to pipe %r failed.' % pipe_name) dwMode = DWORD(PIPE_READMODE_MESSAGE) windll.kernel32.SetNamedPipeHandleState( @@ -57,89 +56,47 @@ def __init__(self, pipe_name): None, None) - -# def write_message(self, text): -# # Send a message to the pipe server. -# message = text.encode('utf-8') -# rc = DWORD() -# -# fSuccess = windll.kernel32.WriteFile( -# self.pipe_handle, -# ctypes.create_string_buffer(message), -# len(message), -# ctypes.byref(rc), -# None) # Not overlapped. -# -# if not fSuccess: -# print('WriteFile failed.', win32api.GetLastError()) -# return - def write_message(self, text): """ (coroutine) Write data into the pipe. """ -# print('PipeClient.write_message #0') overlapped = OVERLAPPED() overlapped.hEvent = _create_event() c_written = DWORD() data = text.encode('utf-8') -# print('PipeClient.write_message #1') success = windll.kernel32.WriteFile( self.pipe_handle, - ctypes.create_string_buffer(data), + create_string_buffer(data), len(data), - ctypes.byref(c_written), - ctypes.byref(overlapped)) + byref(c_written), + byref(overlapped)) -# print('PipeClient.write_message #2', success) if success: return error_code = windll.kernel32.GetLastError() -# print('PipeClient.write_message #3', error_code) if error_code == ERROR_IO_PENDING: yield From(wait_for_event(overlapped.hEvent)) success = windll.kernel32.GetOverlappedResult( self.pipe_handle, - ctypes.byref(overlapped), - ctypes.byref(c_written), + byref(overlapped), + byref(c_written), BOOL(False)) if not success: error_code = windll.kernel32.GetLastError() if error_code == ERROR_BROKEN_PIPE: -# print('Overlapped Write failed, broken pipe.') raise _BrokenPipeError else: raise 'Writing overlapped IO failed.' elif error_code == ERROR_BROKEN_PIPE: -# print('Write failed, broken pipe.') raise _BrokenPipeError - -# def read_message(self): -# # Get response. -# buff = ctypes.create_string_buffer(BUFSIZE) -# c_read = DWORD() -# -# print('call readfile') -# success = windll.kernel32.ReadFile( -# self.pipe_handle, -# buff, -# DWORD(BUFSIZE), -# ctypes.byref(c_read), -# None) # Not overlapped. -# -# if success: -# buff[c_read.value] = b'\0' -# return buff.value.decode('utf-8', 'ignore') -# # TODO: handle ERROR_MORE_DATA - def read_message(self): """ (coroutine) @@ -151,67 +108,54 @@ def read_message(self): def _read_message_bytes(self): """ (coroutine) - Read data from this pipe. + Read message from this pipe. Return bytes. """ -# print('PipeClient.read_message') overlapped = OVERLAPPED() overlapped.hEvent = _create_event() -# print('PipeClient.read_message #2') - buff = ctypes.create_string_buffer(BUFSIZE + 1) + buff = create_string_buffer(BUFSIZE + 1) c_read = DWORD() rc = DWORD() -# print('PipeClient.read_message #3') success = windll.kernel32.ReadFile( self.pipe_handle, buff, DWORD(BUFSIZE), - ctypes.byref(c_read), - ctypes.byref(overlapped)) + byref(c_read), + byref(overlapped)) -# print('reading', success) if success: buff[c_read.value] = b'\0' raise Return(buff.value) error_code = windll.kernel32.GetLastError() -# print('err', error_code) + if error_code == ERROR_IO_PENDING: yield From(wait_for_event(overlapped.hEvent)) success = windll.kernel32.GetOverlappedResult( self.pipe_handle, - ctypes.byref(overlapped), - ctypes.byref(c_read), + byref(overlapped), + byref(c_read), BOOL(False)) if success: buff[c_read.value] = b'\0' -# print('received', buff.value) raise Return(buff.value) else: error_code = windll.kernel32.GetLastError() if error_code == ERROR_BROKEN_PIPE: -# print('Overlapped Read failed, broken pipe.') raise _BrokenPipeError elif error_code == ERROR_MORE_DATA: -# print('ERRRO_MORE_DATA') more_data = yield From(self._read_message_bytes()) -# if more_data is None: -# more_data = '' # XXX: why does this happen???? raise Return(buff.value + more_data) - pass # XXX - # XXX: use utf8decoder... - else: raise Exception( 'reading overlapped IO failed. error_code=%r' % error_code) elif error_code == ERROR_BROKEN_PIPE: -# print('Read failed, broken pipe.') raise _BrokenPipeError elif error_code == ERROR_MORE_DATA: @@ -221,20 +165,9 @@ def _read_message_bytes(self): else: raise Exception('Reading pipe failed, error_code=%s' % error_code) - def close(): win32.CloseHandle(self.pipe_handle) -#def main_coro(): -# pipe_name = r'\\.\pipe\pymux.sock.jonathan.9942' -# pipe_client = PipeClient(pipe_name) -# yield From(pipe_client.write_message('Hi there')) -# result = yield From(pipe_client.read_message()) -# print('result', repr(result)) - - -#get_event_loop().run_until_complete(ensure_future(main_coro())) - def wait_for_event(event): """ From 5f8f13767b11411c839a491a9c0957dcf32a79c3 Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Fri, 13 Jul 2018 16:03:14 +0200 Subject: [PATCH 08/17] - --- pymux/win32.py | 206 ++++++++++++++++++++++++++++++++++++++++++ pymux/win32_client.py | 172 ++--------------------------------- pymux/win32_server.py | 176 ++---------------------------------- 3 files changed, 224 insertions(+), 330 deletions(-) create mode 100644 pymux/win32.py diff --git a/pymux/win32.py b/pymux/win32.py new file mode 100644 index 0000000..8b24083 --- /dev/null +++ b/pymux/win32.py @@ -0,0 +1,206 @@ +""" +Common Win32 pipe operations. +""" +from ctypes import windll, byref, create_string_buffer +from ctypes.wintypes import DWORD, BOOL +from prompt_toolkit.eventloop import get_event_loop, From, Return, Future +from ptterm.backends.win32_pipes import OVERLAPPED + +__all__ = [ + 'read_message_from_pipe', + 'read_message_bytes_from_pipe', + 'write_message_to_pipe', + 'write_message_bytes_to_pipe', + 'wait_for_event', +] + +BUFSIZE = 4096 + +GENERIC_READ = 0x80000000 +GENERIC_WRITE = 0x40000000 +OPEN_EXISTING = 0x3 + +ERROR_IO_PENDING = 997 +ERROR_BROKEN_PIPE = 109 +ERROR_MORE_DATA = 234 +ERROR_NO_DATA = 232 +FILE_FLAG_OVERLAPPED = 0x40000000 + +PIPE_READMODE_MESSAGE = 0x2 +FILE_WRITE_ATTRIBUTES = 0x100 # 256 +INVALID_HANDLE_VALUE = -1 + + +def connect_to_pipe(pipe_name): + """ + Connect to a new pipe in message mode. + """ + pipe_handle = windll.kernel32.CreateFileW( + pipe_name, + DWORD(GENERIC_READ | GENERIC_WRITE | FILE_WRITE_ATTRIBUTES), + DWORD(0), # No sharing. + None, # Default security attributes. + DWORD(OPEN_EXISTING), # dwCreationDisposition. + FILE_FLAG_OVERLAPPED, # dwFlagsAndAttributes. + None # hTemplateFile, + ) + if pipe_handle == INVALID_HANDLE_VALUE: + raise Exception('Invalid handle. Connecting to pipe %r failed.' % pipe_name) + + # Turn pipe into message mode. + dwMode = DWORD(PIPE_READMODE_MESSAGE) + windll.kernel32.SetNamedPipeHandleState( + pipe_handle, + byref(dwMode), + None, + None) + + return pipe_handle + + +def create_event(): + """ + Create Win32 event. + """ + event = windll.kernel32.CreateEventA( + None, # Default security attributes. + BOOL(True), # Manual reset event. + BOOL(True), # Initial state = signaled. + None # Unnamed event object. + ) + if not event: + raise Exception('event creation failed.') + return event + + +def read_message_from_pipe(pipe_handle): + """ + (coroutine) + Read message from this pipe. Return text. + """ + data = yield From(read_message_bytes_from_pipe(pipe_handle)) + assert isinstance(data, bytes) + raise Return(data.decode('utf-8', 'ignore')) + + +def read_message_bytes_from_pipe(pipe_handle): + """ + (coroutine) + Read message from this pipe. Return bytes. + """ + overlapped = OVERLAPPED() + overlapped.hEvent = create_event() + + try: + buff = create_string_buffer(BUFSIZE + 1) + c_read = DWORD() + rc = DWORD() + + success = windll.kernel32.ReadFile( + pipe_handle, + buff, + DWORD(BUFSIZE), + byref(c_read), + byref(overlapped)) + + if success: + buff[c_read.value] = b'\0' + raise Return(buff.value) + + error_code = windll.kernel32.GetLastError() + + if error_code == ERROR_IO_PENDING: + yield From(wait_for_event(overlapped.hEvent)) + + success = windll.kernel32.GetOverlappedResult( + pipe_handle, + byref(overlapped), + byref(c_read), + BOOL(False)) + + if success: + buff[c_read.value] = b'\0' + raise Return(buff.value) + + else: + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_BROKEN_PIPE: + print('Broken pipe') + raise _BrokenPipeError + + elif error_code == ERROR_MORE_DATA: + more_data = yield From(read_message_bytes_from_pipe()) + raise Return(buff.value + more_data) + else: + raise Exception( + 'reading overlapped IO failed. error_code=%r' % error_code) + + elif error_code == ERROR_BROKEN_PIPE: + print('Broken pipe') + raise _BrokenPipeError + + elif error_code == ERROR_MORE_DATA: + more_data = yield From(read_message_bytes_from_pipe()) + raise Return(buff.value + more_data) + + else: + raise Exception('Reading pipe failed, error_code=%s' % error_code) + finally: + windll.kernel32.CloseHandle(overlapped.hEvent) + + +def write_message_to_pipe(pipe_handle, text): + data = text.encode('utf-8') + yield From(write_message_bytes_to_pipe(pipe_handle, data)) + + +def write_message_bytes_to_pipe(pipe_handle, data): + overlapped = OVERLAPPED() + overlapped.hEvent = create_event() + + try: + c_written = DWORD() + + success = windll.kernel32.WriteFile( + pipe_handle, + create_string_buffer(data), + len(data), + byref(c_written), + byref(overlapped)) + + if success: + return + + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_IO_PENDING: + yield From(wait_for_event(overlapped.hEvent)) + + success = windll.kernel32.GetOverlappedResult( + pipe_handle, + byref(overlapped), + byref(c_written), + BOOL(False)) + + if not success: + error_code = windll.kernel32.GetLastError() + if error_code == ERROR_BROKEN_PIPE: + raise _BrokenPipeError + else: + raise Exception('Writing overlapped IO failed. error_code=%r' % error_code) + + elif error_code == ERROR_BROKEN_PIPE: + raise _BrokenPipeError + finally: + windll.kernel32.CloseHandle(overlapped.hEvent) + + +def wait_for_event(event): + """ + Wraps a win32 event into a `Future` and wait for it. + """ + f = Future() + def ready(): + get_event_loop().remove_win32_handle(event) + f.set_result(None) + get_event_loop().add_win32_handle(event, ready) + return f diff --git a/pymux/win32_client.py b/pymux/win32_client.py index ac03807..1fcc6f0 100644 --- a/pymux/win32_client.py +++ b/pymux/win32_client.py @@ -1,183 +1,29 @@ -from ctypes import windll, byref, create_string_buffer -from ctypes.wintypes import DWORD, BOOL -from prompt_toolkit.eventloop import get_event_loop, ensure_future, From, Return, Future -from ptterm.backends.win32_pipes import OVERLAPPED -import ctypes +from .win32 import read_message_from_pipe, wait_for_event, write_message_to_pipe, connect_to_pipe +from prompt_toolkit.eventloop import From, Return -BUFSIZE = 4096 - -GENERIC_READ = 0x80000000 -GENERIC_WRITE = 0x40000000 -OPEN_EXISTING = 0x3 - -ERROR_IO_PENDING = 997 -ERROR_BROKEN_PIPE = 109 -ERROR_MORE_DATA = 234 -FILE_FLAG_OVERLAPPED = 0x40000000 - -PIPE_READMODE_MESSAGE = 0x2 -FILE_WRITE_ATTRIBUTES = 0x100 # 256 -INVALID_HANDLE_VALUE = -1 - - -def _create_event(): - """ - Create Win32 event. - """ - event = windll.kernel32.CreateEventA( - None, # Default security attributes. - BOOL(True), # Manual reset event. - BOOL(True), # Initial state = signaled. - None # Unnamed event object. - ) - if not event: - raise Exception('event creation failed.') - return event +__all__ = [ + 'PipeClient', +] class PipeClient(object): def __init__(self, pipe_name): - self.pipe_handle = windll.kernel32.CreateFileW( - pipe_name, - DWORD(GENERIC_READ | GENERIC_WRITE | FILE_WRITE_ATTRIBUTES), - DWORD(0), # No sharing. - None, # Default security attributes. - DWORD(OPEN_EXISTING), # dwCreationDisposition. - FILE_FLAG_OVERLAPPED, # dwFlagsAndAttributes. - None # hTemplateFile, - ) - if self.pipe_handle == INVALID_HANDLE_VALUE: - raise Exception('Invalid handle. Connecting to pipe %r failed.' % pipe_name) - - dwMode = DWORD(PIPE_READMODE_MESSAGE) - windll.kernel32.SetNamedPipeHandleState( - self.pipe_handle, - byref(dwMode), - None, - None) + self.pipe_handle = connect_to_pipe(pipe_name) def write_message(self, text): """ (coroutine) Write data into the pipe. """ - overlapped = OVERLAPPED() - overlapped.hEvent = _create_event() - c_written = DWORD() - - data = text.encode('utf-8') - - success = windll.kernel32.WriteFile( - self.pipe_handle, - create_string_buffer(data), - len(data), - byref(c_written), - byref(overlapped)) - - if success: - return - - error_code = windll.kernel32.GetLastError() - if error_code == ERROR_IO_PENDING: - yield From(wait_for_event(overlapped.hEvent)) - - success = windll.kernel32.GetOverlappedResult( - self.pipe_handle, - byref(overlapped), - byref(c_written), - BOOL(False)) - - if not success: - error_code = windll.kernel32.GetLastError() - if error_code == ERROR_BROKEN_PIPE: - raise _BrokenPipeError - else: - raise 'Writing overlapped IO failed.' - - elif error_code == ERROR_BROKEN_PIPE: - raise _BrokenPipeError + yield From(write_message_to_pipe(self.pipe_handle, text)) def read_message(self): """ (coroutine) Read one single message from the pipe and return as text. """ - data = yield From(self._read_message_bytes()) - raise Return(data.decode('utf-8', 'ignore')) - - def _read_message_bytes(self): - """ - (coroutine) - Read message from this pipe. Return bytes. - """ - overlapped = OVERLAPPED() - overlapped.hEvent = _create_event() - - buff = create_string_buffer(BUFSIZE + 1) - c_read = DWORD() - rc = DWORD() - - success = windll.kernel32.ReadFile( - self.pipe_handle, - buff, - DWORD(BUFSIZE), - byref(c_read), - byref(overlapped)) - - if success: - buff[c_read.value] = b'\0' - raise Return(buff.value) - - error_code = windll.kernel32.GetLastError() - - if error_code == ERROR_IO_PENDING: - yield From(wait_for_event(overlapped.hEvent)) - - success = windll.kernel32.GetOverlappedResult( - self.pipe_handle, - byref(overlapped), - byref(c_read), - BOOL(False)) - - if success: - buff[c_read.value] = b'\0' - raise Return(buff.value) - - else: - error_code = windll.kernel32.GetLastError() - if error_code == ERROR_BROKEN_PIPE: - raise _BrokenPipeError - elif error_code == ERROR_MORE_DATA: - - more_data = yield From(self._read_message_bytes()) - raise Return(buff.value + more_data) - else: - raise Exception( - 'reading overlapped IO failed. error_code=%r' % error_code) - - elif error_code == ERROR_BROKEN_PIPE: - raise _BrokenPipeError - - elif error_code == ERROR_MORE_DATA: - more_data = yield From(self._read_message_bytes()) - raise Return(buff.value + more_data) - - else: - raise Exception('Reading pipe failed, error_code=%s' % error_code) + message = yield From(read_message_from_pipe(self.pipe_handle)) + raise Return(message) def close(): win32.CloseHandle(self.pipe_handle) - - -def wait_for_event(event): - """ - Wraps a win32 event into a `Future` and wait for it. - """ - f = Future() - def ready(): - get_event_loop().remove_win32_handle(event) - f.set_result(None) - get_event_loop().add_win32_handle(event, ready) - return f - - diff --git a/pymux/win32_server.py b/pymux/win32_server.py index 90cee05..e7d7a56 100644 --- a/pymux/win32_server.py +++ b/pymux/win32_server.py @@ -1,22 +1,13 @@ -#import win32security -from ctypes import windll +from ctypes import windll, byref from ctypes.wintypes import BOOL, DWORD, HANDLE from prompt_toolkit.eventloop import get_event_loop, ensure_future, From, Future, Return -import ctypes -import pywintypes -import win32 -import win32api -import win32con -import win32file -import win32pipe from ptterm.backends.win32_pipes import OVERLAPPED -socket_name = r'\\.\pipe\pymux.sock.jonathan.9942' +from .win32 import wait_for_event, create_event, read_message_from_pipe, write_message_to_pipe INSTANCES = 10 BUFSIZE = 4096 - # CreateNamedPipeW flags. # See: https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-createnamedpipea PIPE_ACCESS_DUPLEX = 0x00000003 @@ -41,15 +32,11 @@ def __init__(self, pipe_instance): self.done_f = Future() def read(self): - print('Win32PipeConnection.read #0') if self.done_f.done(): raise _BrokenPipeError try: - print('Win32PipeConnection.read #1') - result = yield From(self.pipe_instance.read()) - print('Win32PipeConnection.read #2') - print('result=', type(result), repr(result)) + result = yield From(read_message_from_pipe(self.pipe_instance.pipe_handle)) raise Return(result) except _BrokenPipeError: self.done_f.set_result(None) @@ -60,7 +47,7 @@ def write(self, message): raise _BrokenPipeError try: - yield From(self.pipe_instance.write(message)) + yield From(write_message_to_pipe(self.pipe_instance.pipe_handle, message)) except _BrokenPipeError: self.done_f.set_result(None) raise @@ -100,7 +87,7 @@ def _handle_client(self): Coroutine that connects to a single client and handles that. """ while True: -# try: + try: # Wait for connection. print('wait for connection') yield From(self._connect_client()) @@ -114,13 +101,7 @@ def _handle_client(self): yield From(conn.done_f) print('connected cb done, done_f done') -# while True: -# # Wait for input. -# data = yield From(self._read()) -# -# # Wait for output. -# yield From(self._write('Received: ' + data)) -# except _BrokenPipeError: + finally: # Disconnect and reconnect. print('disconnect') windll.kernel32.DisconnectNamedPipe(self.pipe_handle) @@ -130,17 +111,17 @@ def _connect_client(self): Wait for a client to connect to this pipe. """ overlapped = OVERLAPPED() - overlapped.hEvent = _create_event() + overlapped.hEvent = create_event() while True: success = windll.kernel32.ConnectNamedPipe( self.pipe_handle, - ctypes.byref(overlapped)) + byref(overlapped)) if success: return - last_error = win32api.GetLastError() + last_error = windll.kernel32.GetLastError() if last_error == ERROR_IO_PENDING: yield From(wait_for_event(overlapped.hEvent)) @@ -150,145 +131,6 @@ def _connect_client(self): else: raise Exception('connect failed with error code' + str(last_error)) - def read(self): - """ - Read data from this pipe. - """ - print('Pipe instance read #0') - overlapped = OVERLAPPED() - ev = _create_event(True) # XXX: not sure about the default event value here. - overlapped.hEvent = ev - - try: - buff = ctypes.create_string_buffer(BUFSIZE + 1) - c_read = DWORD() - rc = DWORD() - - print('Pipe instance read #1', self) - success = windll.kernel32.ReadFile( - self.pipe_handle, - buff, - DWORD(BUFSIZE), - ctypes.byref(c_read), - ctypes.byref(overlapped)) - - print('Pipe instance read #2', success) - if success: - buff[c_read.value] = b'\0' - raise Return(buff.value.decode('utf-8', 'ignore')) - - error_code = windll.kernel32.GetLastError() - print('Pipe instance read #3', error_code) - if error_code == ERROR_IO_PENDING: - print('Pipe instance read #4') - yield From(wait_for_event(ev)) - print('Pipe instance read #5') - - success = windll.kernel32.GetOverlappedResult( - self.pipe_handle, - ctypes.byref(overlapped), - ctypes.byref(c_read), - BOOL(False)) - - print('Pipe instance read #6', success) - if success: - buff[c_read.value] = b'\0' - raise Return(buff.value.decode('utf-8', 'ignore')) - - else: - error_code = windll.kernel32.GetLastError() - if error_code == ERROR_BROKEN_PIPE: - print('Overlapped Read failed, broken pipe.') - raise _BrokenPipeError - else: - raise Exception('reading overlapped IO failed.') - - elif error_code == ERROR_BROKEN_PIPE: - print('Read failed, broken pipe.') - raise _BrokenPipeError - - finally: - # Release event. - windll.kernel32.CloseHandle(overlapped.hEvent) - - def write(self, text): - """ - Write data into the pipe. - """ - overlapped = OVERLAPPED() - overlapped.hEvent = _create_event() - c_written = DWORD() - - try: - data = text.encode('utf-8') - - success = windll.kernel32.WriteFile( - self.pipe_handle, - ctypes.create_string_buffer(data), - len(data), - ctypes.byref(c_written), - ctypes.byref(overlapped)) - - if success: - return - - error_code = windll.kernel32.GetLastError() - if error_code == ERROR_IO_PENDING: - yield From(wait_for_event(overlapped.hEvent)) - - success = windll.kernel32.GetOverlappedResult( - self.pipe_handle, - ctypes.byref(overlapped), - ctypes.byref(c_written), - BOOL(False)) - - if not success: - error_code = windll.kernel32.GetLastError() - if error_code == ERROR_BROKEN_PIPE: - print('Overlapped Write failed, broken pipe.') - raise _BrokenPipeError - else: - raise 'Writing overlapped IO failed.' - - elif error_code == ERROR_BROKEN_PIPE: - print('Write failed, broken pipe.') - raise _BrokenPipeError - - finally: - # Release event. - windll.kernel32.CloseHandle(overlapped.hEvent) - class _BrokenPipeError(Exception): pass - - -def wait_for_event(event): - """ - Wraps a win32 event into a `Future` and wait for it. - """ - f = Future() - def ready(): - get_event_loop().remove_win32_handle(event) - f.set_result(None) - get_event_loop().add_win32_handle(event, ready) - return f - - -def _create_event(initial_state=True): - """ - Create Win32 event. - """ - event = windll.kernel32.CreateEventA( - None, # Default security attributes. - BOOL(True), # Manual reset event. - BOOL(initial_state), # Initial state = signaled. - None # Unnamed event object. - ) - if not event: - raise Exception('event creation failed.') - - return event - - -# TODO: delete event? From 17110735e77b1b1e265eaa21a38c241121480c71 Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Fri, 13 Jul 2018 16:11:39 +0200 Subject: [PATCH 09/17] - --- pymux/server.py | 18 ------------------ pymux/win32.py | 4 ++-- pymux/win32_server.py | 11 +++++------ 3 files changed, 7 insertions(+), 26 deletions(-) diff --git a/pymux/server.py b/pymux/server.py index 7c8c0c4..5dafeb0 100644 --- a/pymux/server.py +++ b/pymux/server.py @@ -59,24 +59,6 @@ def _start_reading(self): import traceback; traceback.print_stack() print('got exception ', e) -# def _process_chunk(self, data): -# """ -# Data received from the client. -# (Parse it.) -# """ -# if data == b'': -# # End of file. Close connection. -# self.detach_and_close() -# else: -# # Receive and process packets. -# self._recv_buffer += data -# -# while b'\0' in self._recv_buffer: -# # Zero indicates end of packet. -# pos = self._recv_buffer.index(b'\0') -# self._process(self._recv_buffer[:pos]) -# self._recv_buffer = self._recv_buffer[pos + 1:] -# def _process(self, data): """ Process packet received from client. diff --git a/pymux/win32.py b/pymux/win32.py index 8b24083..c27273b 100644 --- a/pymux/win32.py +++ b/pymux/win32.py @@ -129,7 +129,7 @@ def read_message_bytes_from_pipe(pipe_handle): raise _BrokenPipeError elif error_code == ERROR_MORE_DATA: - more_data = yield From(read_message_bytes_from_pipe()) + more_data = yield From(read_message_bytes_from_pipe(pipe_handle)) raise Return(buff.value + more_data) else: raise Exception( @@ -140,7 +140,7 @@ def read_message_bytes_from_pipe(pipe_handle): raise _BrokenPipeError elif error_code == ERROR_MORE_DATA: - more_data = yield From(read_message_bytes_from_pipe()) + more_data = yield From(read_message_bytes_from_pipe(pipe_handle)) raise Return(buff.value + more_data) else: diff --git a/pymux/win32_server.py b/pymux/win32_server.py index e7d7a56..83d640e 100644 --- a/pymux/win32_server.py +++ b/pymux/win32_server.py @@ -4,6 +4,7 @@ from ptterm.backends.win32_pipes import OVERLAPPED from .win32 import wait_for_event, create_event, read_message_from_pipe, write_message_to_pipe +from .log import logger INSTANCES = 10 BUFSIZE = 4096 @@ -89,21 +90,19 @@ def _handle_client(self): while True: try: # Wait for connection. - print('wait for connection') + logger.info('Waiting for connection in pipe instance.') yield From(self._connect_client()) - print('connected') + logger.info('Connected in pipe instance') conn = Win32PipeConnection(self) - print('connected cb') self.pipe_connection_cb(conn) - print('connected cb done, wait for done_f') yield From(conn.done_f) - print('connected cb done, done_f done') + logger.info('Pipe instance done.') finally: # Disconnect and reconnect. - print('disconnect') + logger.info('Disconnecting pipe instance.') windll.kernel32.DisconnectNamedPipe(self.pipe_handle) def _connect_client(self): From 95426845ed685f0e997a00416e0f4a6c3f156815 Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Fri, 13 Jul 2018 16:20:34 +0200 Subject: [PATCH 10/17] - --- pymux/client/windows.py | 43 ++++++++++++----------------------------- pymux/win32.py | 1 - pymux/win32_client.py | 5 +++-- pymux/win32_server.py | 4 ++-- 4 files changed, 17 insertions(+), 36 deletions(-) diff --git a/pymux/client/windows.py b/pymux/client/windows.py index 2ee3562..81fef75 100644 --- a/pymux/client/windows.py +++ b/pymux/client/windows.py @@ -1,22 +1,20 @@ from __future__ import unicode_literals -from .base import Client -import win32file -import win32con -import win32security -import os + from ctypes import byref +from ctypes import windll from ctypes.wintypes import DWORD -from prompt_toolkit.output import ColorDepth -from prompt_toolkit.output.win32 import Win32Output +from prompt_toolkit.eventloop import ensure_future, From from prompt_toolkit.eventloop import get_event_loop -from prompt_toolkit.eventloop import Future, ensure_future, From from prompt_toolkit.input.win32 import Win32Input +from prompt_toolkit.output import ColorDepth +from prompt_toolkit.output.win32 import Win32Output from prompt_toolkit.win32_types import STD_OUTPUT_HANDLE import json +import os import sys -from functools import partial -from ctypes import windll + from ..win32_client import PipeClient +from .base import Client __all__ = [ 'WindowsClient', @@ -27,6 +25,7 @@ ENABLE_PROCESSED_INPUT = 0x0001 ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004 + class WindowsClient(Client): def __init__(self, pipe_name): self._input = Win32Input() @@ -37,8 +36,6 @@ def __init__(self, pipe_name): def attach(self, detach_other_clients=False, color_depth=ColorDepth.DEPTH_8_BIT): assert isinstance(detach_other_clients, bool) - future = Future() - self._send_size() self._send_packet({ 'cmd': 'start-gui', @@ -50,33 +47,22 @@ def attach(self, detach_other_clients=False, color_depth=ColorDepth.DEPTH_8_BIT) f = ensure_future(self._start_reader()) with self._input.attach(self._input_ready): + # Run as long as we have a connection with the server. get_event_loop().run_until_complete(f) # Run forever. - print('DONE' * 1000) - -# loop = get_event_loop() -# loop.run_in_executor(self._start_reader_thread) -# loop.add_win32_handle(self.pipe.handle, self._received) - -# with self._input.attach(self._input_ready): -# get_event_loop().run_until_complete(future) def _start_reader(self): """ - Read from Win32 pipe. + Read messages from the Win32 pipe server and handle them. """ while True: message = yield From(self.pipe.read_message()) -# print('Received from pipe: ', repr(message)) -# print('start process') - self._process(message) #XXX: uncomment!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -# print('end process') + self._process(message) def _process(self, data_buffer): """ Handle incoming packet from server. """ packet = json.loads(data_buffer) -# print('Processing packet: ', repr(packet)) if packet['cmd'] == 'out': # Call os.write manually. In Python2.6, sys.stdout.write doesn't use UTF-8. @@ -116,20 +102,15 @@ def _process(self, data_buffer): # cm.__exit__() def _input_ready(self): -# print('Input ready') keys = self._input.read_keys() -# print('Received input', repr(keys)) if keys: self._send_packet({ 'cmd': 'in', 'data': ''.join(key_press.data for key_press in keys), }) -# else: -# print('sending nothing, no keys received') def _send_packet(self, data): " Send to server. " -# print('sending packet', repr(data)) data = json.dumps(data) ensure_future(self.pipe.write_message(data)) diff --git a/pymux/win32.py b/pymux/win32.py index c27273b..7dd71fd 100644 --- a/pymux/win32.py +++ b/pymux/win32.py @@ -94,7 +94,6 @@ def read_message_bytes_from_pipe(pipe_handle): try: buff = create_string_buffer(BUFSIZE + 1) c_read = DWORD() - rc = DWORD() success = windll.kernel32.ReadFile( pipe_handle, diff --git a/pymux/win32_client.py b/pymux/win32_client.py index 1fcc6f0..d7baa2a 100644 --- a/pymux/win32_client.py +++ b/pymux/win32_client.py @@ -1,3 +1,4 @@ +from ctypes import windll from .win32 import read_message_from_pipe, wait_for_event, write_message_to_pipe, connect_to_pipe from prompt_toolkit.eventloop import From, Return @@ -25,5 +26,5 @@ def read_message(self): message = yield From(read_message_from_pipe(self.pipe_handle)) raise Return(message) - def close(): - win32.CloseHandle(self.pipe_handle) + def close(self): + windll.kernel32.CloseHandle(self.pipe_handle) diff --git a/pymux/win32_server.py b/pymux/win32_server.py index 83d640e..8fbcdb0 100644 --- a/pymux/win32_server.py +++ b/pymux/win32_server.py @@ -1,6 +1,6 @@ from ctypes import windll, byref -from ctypes.wintypes import BOOL, DWORD, HANDLE -from prompt_toolkit.eventloop import get_event_loop, ensure_future, From, Future, Return +from ctypes.wintypes import DWORD +from prompt_toolkit.eventloop import From, Future, Return from ptterm.backends.win32_pipes import OVERLAPPED from .win32 import wait_for_event, create_event, read_message_from_pipe, write_message_to_pipe From 00899155c96b4a738a049063c66bc3e53b3c4f5f Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Sun, 15 Jul 2018 15:19:11 +0200 Subject: [PATCH 11/17] (works on linux again, but slow) --- pymux/client/windows.py | 2 +- pymux/main.py | 56 +++-------- pymux/pipes/__init__.py | 23 +++++ pymux/pipes/posix.py | 159 ++++++++++++++++++++++++++++++ pymux/{ => pipes}/win32.py | 0 pymux/{ => pipes}/win32_client.py | 2 +- pymux/{ => pipes}/win32_server.py | 24 ++++- pymux/server.py | 68 ++----------- 8 files changed, 229 insertions(+), 105 deletions(-) create mode 100644 pymux/pipes/__init__.py create mode 100644 pymux/pipes/posix.py rename pymux/{ => pipes}/win32.py (100%) rename pymux/{ => pipes}/win32_client.py (88%) rename pymux/{ => pipes}/win32_server.py (88%) diff --git a/pymux/client/windows.py b/pymux/client/windows.py index 81fef75..4117cf9 100644 --- a/pymux/client/windows.py +++ b/pymux/client/windows.py @@ -13,7 +13,7 @@ import os import sys -from ..win32_client import PipeClient +from ..pipes.win32_client import PipeClient from .base import Client __all__ = [ diff --git a/pymux/main.py b/pymux/main.py index a3366f4..7442098 100644 --- a/pymux/main.py +++ b/pymux/main.py @@ -15,7 +15,6 @@ from prompt_toolkit.layout.screen import Size from prompt_toolkit.output.defaults import create_output -from .style import ui_style from .arrangement import Arrangement, Pane, Window from .commands.commands import handle_command, call_command_handler from .commands.completer import create_command_completer @@ -24,7 +23,10 @@ from .layout import LayoutManager, Justify from .log import logger from .options import ALL_OPTIONS, ALL_WINDOW_OPTIONS +from .pipes import bind_and_listen_on_socket from .rc import STARTUP_COMMANDS +from .server import ServerConnection +from .style import ui_style from .utils import get_default_shell from ptterm import Terminal @@ -559,22 +561,16 @@ def listen_on_socket(self, socket_name=None): Listen for clients on a Unix socket. Returns the socket name. """ - #from .server import bind_socket - from .server import bind_and_listen_on_socket - if self.socket is None: - self.socket_name = bind_and_listen_on_socket(socket_name, self._socket_accept) - -# # Py2 uses 0027 and Py3 uses 0o027, but both know -# # how to create the right value from the string '0027'. -# old_umask = os.umask(int('0027', 8)) -# self.socket_name, self.socket = bind_socket(socket_name) -# _ = os.umask(old_umask) -## self.socket.listen(0) -## get_event_loop().add_reader(self.socket.fileno(), self._socket_accept) -# print(self.socket) -# #print(dir(self.socket)) -# get_event_loop().add_win32_handle(self.socket.handle, self._win_socket_accept) -# + def connection_cb(pipe_connection): + # We have to create a new `context`, because this will be the scope for + # a new prompt_toolkit.Application to become active. + with context(): + connection = ServerConnection(self, pipe_connection) + + self.connections.append(connection) + + self.socket_name = bind_and_listen_on_socket(socket_name, connection_cb) + # Set session_name according to socket name. # if '.' in self.socket_name: # self.session_name = self.socket_name.rpartition('.')[-1] @@ -582,32 +578,6 @@ def listen_on_socket(self, socket_name=None): logger.info('Listening on %r.' % self.socket_name) return self.socket_name - def _socket_accept(self, pipe_connection): - from .server import ServerConnection - - with context(): - #connection = ServerConnection(self, hr, hr) - #connection = ServerConnection(self, self.socket.handle, self.socket.handle) - connection = ServerConnection(self, pipe_connection) - self.connections.append(connection) - -# def _socket_accept(self): -# """ -# Accept connection from client. -# """ -# logger.info('Client attached.') -# from .server import ServerConnection -# -# connection, client_address = self.socket.accept() -# # Note: We don't have to put this socket in non blocking mode. -# # This can cause crashes when sending big packets on OS X. -# -# # We have to create a new `context`, because this will be the scope for -# # a new prompt_toolkit.Application to become active. -# with context(): -# connection = ServerConnection(self, connection, client_address) -# self.connections.append(connection) - def run_server(self): # Ignore keyboard. (When people run "pymux server" and press Ctrl-C.) # Pymux has to be terminated by termining all the processes running in diff --git a/pymux/pipes/__init__.py b/pymux/pipes/__init__.py new file mode 100644 index 0000000..4d5c802 --- /dev/null +++ b/pymux/pipes/__init__.py @@ -0,0 +1,23 @@ +""" +Platform specific (Windows+posix) implementations for inter process +communication through pipes between the Pymux server and clients. +""" +from prompt_toolkit.utils import is_windows + +__all__ = [ + 'bind_and_listen_on_socket', +] + + +def bind_and_listen_on_socket(socket_name, accept_callback): + """ + Return socket name. + + :param accept_callback: Callback with a `ServerConnection`. + """ + if is_windows(): + from .win32server import bind_and_listen_on_win32_socket + return bind_and_listen_on_win32_socket(socket_name, accept_callback) + else: + from .posix import bind_and_listen_on_posix_socket + return bind_and_listen_on_posix_socket(socket_name, accept_callback) diff --git a/pymux/pipes/posix.py b/pymux/pipes/posix.py new file mode 100644 index 0000000..da5bfe9 --- /dev/null +++ b/pymux/pipes/posix.py @@ -0,0 +1,159 @@ +from prompt_toolkit.eventloop import From, Return, Future, get_event_loop +import getpass +import os +import six +import socket +import tempfile +from ..log import logger + +__all__ = [ + 'bind_and_listen_on_posix_socket', + 'PosixSocketConnection', +] + + +def bind_and_listen_on_posix_socket(socket_name, accept_callback): + """ + """ + assert socket_name is None or isinstance(socket_name, six.text_type) + assert callable(accept_callback) + + # Py2 uses 0027 and Py3 uses 0o027, but both know + # how to create the right value from the string '0027'. + old_umask = os.umask(int('0027', 8)) + + # Bind socket. + socket_name, socket = _bind_posix_socket(socket_name) + + _ = os.umask(old_umask) + + # Listen on socket. + socket.listen(0) + + from .posix import PosixSocketConnection + + def _accept_cb(): + connection, client_address = socket.accept() + # Note: We don't have to put this socket in non blocking mode. + # This can cause crashes when sending big packets on OS X. + + posix_connection = PosixSocketConnection(connection) + + accept_callback(posix_connection) + + get_event_loop().add_reader(socket.fileno(), _accept_cb) + + logger.info('Listening on %r.' % socket_name) + return socket_name + + +def _bind_posix_socket(socket_name=None): + """ + Find a socket to listen on and return it. + + Returns (socket_name, sock_obj) + """ + assert socket_name is None or isinstance(socket_name, six.text_type) + + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + + if socket_name: + s.bind(socket_name) + return socket_name, s + else: + i = 0 + while True: + try: + socket_name = '%s/pymux.sock.%s.%i' % ( + tempfile.gettempdir(), getpass.getuser(), i) + s.bind(socket_name) + return socket_name, s + except (OSError, socket.error): + i += 1 + + # When 100 times failed, cancel server + if i == 100: + logger.warning('100 times failed to listen on posix socket. ' + 'Please clean up old sockets.') + raise + + +class PosixSocketConnection(object): + def __init__(self, socket): + self.socket = socket + + self._recv_buffer = b'' + + def read(self): + """ + Coroutine that reads the next packet. + """ + while True: + self._recv_buffer += yield From(_read_chunk_from_socket(self.socket)) + + if b'\0' in self._recv_buffer: + # Zero indicates end of packet. + pos = self._recv_buffer.index(b'\0') + + packet = self._recv_buffer[:pos] + self._recv_buffer = self._recv_buffer[pos + 1:] + + raise Return(packet) + + + def write(self, message): + """ + Coroutine that writes the next packet. + """ + try: + self.socket.send(message.encode('utf-8') + b'\0') + except socket.error: + if not self._closed: + self.detach_and_close() + + return Future.succeed(None) + + def detach_and_close(self): # XXX + # Remove from Pymux. + self._close_connection() + + # Remove from eventloop. + get_event_loop().remove_reader(self.socket.fileno()) + self.socket.close() + + def close(self): + pass # TODO + + +def _read_chunk_from_socket(socket): + """ + (coroutine) + Turn socket reading into coroutine. + """ + fd = socket.fileno() + f = Future() + + def read_callback(): + get_event_loop().remove_reader(fd) + + # Read next chunk. + try: + data = socket.recv(1024) + except OSError as e: + # On OSX, when we try to create a new window by typing "pymux + # new-window" in a centain pane, very often we get the following + # error: "OSError: [Errno 9] Bad file descriptor." + # This doesn't seem very harmful, and we can just try again. + logger.warning('Got OSError while reading data from client: %s. ' + 'Trying again.', e) + f.set_result('') + return + + if data: + f.set_result(data) + else: + f.set_exception(EOFError) # XXX + + get_event_loop().add_reader(fd, read_callback) + + return f diff --git a/pymux/win32.py b/pymux/pipes/win32.py similarity index 100% rename from pymux/win32.py rename to pymux/pipes/win32.py diff --git a/pymux/win32_client.py b/pymux/pipes/win32_client.py similarity index 88% rename from pymux/win32_client.py rename to pymux/pipes/win32_client.py index d7baa2a..8b55696 100644 --- a/pymux/win32_client.py +++ b/pymux/pipes/win32_client.py @@ -1,5 +1,5 @@ from ctypes import windll -from .win32 import read_message_from_pipe, wait_for_event, write_message_to_pipe, connect_to_pipe +from .win32 import read_message_from_pipe, write_message_to_pipe, connect_to_pipe from prompt_toolkit.eventloop import From, Return __all__ = [ diff --git a/pymux/win32_server.py b/pymux/pipes/win32_server.py similarity index 88% rename from pymux/win32_server.py rename to pymux/pipes/win32_server.py index 8fbcdb0..5704aa4 100644 --- a/pymux/win32_server.py +++ b/pymux/pipes/win32_server.py @@ -1,11 +1,18 @@ from ctypes import windll, byref from ctypes.wintypes import DWORD -from prompt_toolkit.eventloop import From, Future, Return +from prompt_toolkit.eventloop import From, Future, Return, ensure_future from ptterm.backends.win32_pipes import OVERLAPPED from .win32 import wait_for_event, create_event, read_message_from_pipe, write_message_to_pipe from .log import logger +__all__ = [ + 'bind_and_listen_on_win32_socket', + 'Win32PipeConnection', + 'PipeInstance', +] + + INSTANCES = 10 BUFSIZE = 4096 @@ -27,6 +34,21 @@ WRITING_STATE = 2 +def bind_and_listen_on_win32_socket(socket_name, accept_callback): + """ + """ + socket_name = r'\\.\pipe\pymux.sock.jonathan.42' + + pipes = [PipeInstance(socket_name, pipe_connection_cb=accept_callback) + for i in range(INSTANCES)] + + for p in pipes: + # Start pipe. + ensure_future(p.handle_pipe()) + + return socket_name + + class Win32PipeConnection(object): def __init__(self, pipe_instance): self.pipe_instance = pipe_instance diff --git a/pymux/server.py b/pymux/server.py index 5dafeb0..182b017 100644 --- a/pymux/server.py +++ b/pymux/server.py @@ -1,19 +1,20 @@ from __future__ import unicode_literals import getpass import json +import os import socket import tempfile from prompt_toolkit.application.current import set_app from prompt_toolkit.eventloop import get_event_loop, ensure_future, From +from prompt_toolkit.eventloop.context import context from prompt_toolkit.input.vt100_parser import Vt100Parser -from prompt_toolkit.input.win32_pipe import Win32PipeInput from prompt_toolkit.layout.screen import Size from prompt_toolkit.output.vt100 import Vt100_Output +from prompt_toolkit.utils import is_windows from functools import partial from .log import logger -import win32file __all__ = ( 'ServerConnection', @@ -43,17 +44,12 @@ def feed_key(key): self._inputstream = Vt100Parser(feed_key) self._pipeinput = _ClientInput(self._send_packet) -# print('add win32 handle', pipe_connection) ensure_future(self._start_reading()) def _start_reading(self): while True: - print('start reading') try: - print(self.pipe_connection) - print(self.pipe_connection.read) data = yield From(self.pipe_connection.read()) - print('received ', repr(data), type(data)) self._process(data) except Exception as e: import traceback; traceback.print_stack() @@ -64,7 +60,6 @@ def _process(self, data): Process packet received from client. """ try: -# packet = json.loads(data.decode('utf-8')) packet = json.loads(data) except ValueError: # So far, this never happened. But it would be good to have some @@ -72,8 +67,6 @@ def _process(self, data): logger.warning('Received invalid JSON from client. Ignoring.') return - print('Received packet: ', repr(packet)) - # Handle commands. if packet['cmd'] == 'run-command': self._run_command(packet) @@ -108,7 +101,6 @@ def _send_packet(self, data): """ Send packet to client. """ - print('send packet', data) data = json.dumps(data) def send(): @@ -183,53 +175,6 @@ def detach_and_close(self): # Remove from Pymux. self._close_connection() - -# def bind_socket(socket_name=None): -# """ -# Find a socket to listen on and return it. -# -# Returns (socket_name, sock_obj) -# """ -# s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) -# -# if socket_name: -# s.bind(socket_name) -# return socket_name, s -# else: -# i = 0 -# while True: -# try: -# socket_name = '%s/pymux.sock.%s.%i' % ( -# tempfile.gettempdir(), getpass.getuser(), i) -# s.bind(socket_name) -# return socket_name, s -# except (OSError, socket.error): -# i += 1 -# -# # When 100 times failed, cancel server -# if i == 100: -# logger.warning('100 times failed to listen on posix socket. ' -# 'Please clean up old sockets.') -# raise -# - - -def bind_and_listen_on_socket(socket_name, accept_callback): - """ - """ - socket_name = r'\\.\pipe\pymux.sock.jonathan.42' - INSTANCES = 10 - from .win32_server import PipeInstance - from prompt_toolkit.eventloop import ensure_future - - pipes = [PipeInstance(socket_name, pipe_connection_cb=accept_callback) - for i in range(INSTANCES)] - - for p in pipes: - # Start pipe. - ensure_future(p.handle_pipe()) - - return socket_name class _SocketStdout(object): @@ -251,7 +196,12 @@ def flush(self): self._buffer = [] -class _ClientInput(Win32PipeInput): +if is_windows(): + from prompt_toolkit.input.win32_pipe import Win32PipeInput as PipeInput +else: + from prompt_toolkit.input.posix_pipe import PosixPipeInput as PipeInput + +class _ClientInput(PipeInput): """ Input class that can be given to the CommandLineInterface. We only need this for turning the client into raw_mode/cooked_mode. From 6e96afab5bd964c6f395facc369304b2f116616c Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Sun, 15 Jul 2018 15:21:27 +0200 Subject: [PATCH 12/17] Works on Windows again. --- pymux/pipes/__init__.py | 2 +- pymux/pipes/win32_server.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pymux/pipes/__init__.py b/pymux/pipes/__init__.py index 4d5c802..381d801 100644 --- a/pymux/pipes/__init__.py +++ b/pymux/pipes/__init__.py @@ -16,7 +16,7 @@ def bind_and_listen_on_socket(socket_name, accept_callback): :param accept_callback: Callback with a `ServerConnection`. """ if is_windows(): - from .win32server import bind_and_listen_on_win32_socket + from .win32_server import bind_and_listen_on_win32_socket return bind_and_listen_on_win32_socket(socket_name, accept_callback) else: from .posix import bind_and_listen_on_posix_socket diff --git a/pymux/pipes/win32_server.py b/pymux/pipes/win32_server.py index 5704aa4..8a7d6a5 100644 --- a/pymux/pipes/win32_server.py +++ b/pymux/pipes/win32_server.py @@ -4,7 +4,7 @@ from ptterm.backends.win32_pipes import OVERLAPPED from .win32 import wait_for_event, create_event, read_message_from_pipe, write_message_to_pipe -from .log import logger +from ..log import logger __all__ = [ 'bind_and_listen_on_win32_socket', From 1e5cddf442ddbcafd1a4559f492fe058b830f9ce Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Sun, 15 Jul 2018 15:42:21 +0200 Subject: [PATCH 13/17] - --- pymux/client/windows.py | 3 +-- pymux/pipes/__init__.py | 9 ++++++++- pymux/pipes/base.py | 40 +++++++++++++++++++++++++++++++++++++ pymux/pipes/posix.py | 36 +++++++++++++++++---------------- pymux/pipes/win32.py | 3 ++- pymux/pipes/win32_client.py | 15 ++++++++++++-- pymux/pipes/win32_server.py | 31 +++++++++++++++++++--------- 7 files changed, 105 insertions(+), 32 deletions(-) create mode 100644 pymux/pipes/base.py diff --git a/pymux/client/windows.py b/pymux/client/windows.py index 4117cf9..c22ab7d 100644 --- a/pymux/client/windows.py +++ b/pymux/client/windows.py @@ -1,7 +1,6 @@ from __future__ import unicode_literals -from ctypes import byref -from ctypes import windll +from ctypes import byref, windll from ctypes.wintypes import DWORD from prompt_toolkit.eventloop import ensure_future, From from prompt_toolkit.eventloop import get_event_loop diff --git a/pymux/pipes/__init__.py b/pymux/pipes/__init__.py index 381d801..23fd63f 100644 --- a/pymux/pipes/__init__.py +++ b/pymux/pipes/__init__.py @@ -2,10 +2,16 @@ Platform specific (Windows+posix) implementations for inter process communication through pipes between the Pymux server and clients. """ +from __future__ import unicode_literals from prompt_toolkit.utils import is_windows +from .base import PipeConnection, BrokenPipeError __all__ = [ 'bind_and_listen_on_socket', + + # Base. + 'PipeConnection', + 'BrokenPipeError', ] @@ -13,7 +19,8 @@ def bind_and_listen_on_socket(socket_name, accept_callback): """ Return socket name. - :param accept_callback: Callback with a `ServerConnection`. + :param accept_callback: Callback is called with a `PipeConnection` as + argument. """ if is_windows(): from .win32_server import bind_and_listen_on_win32_socket diff --git a/pymux/pipes/base.py b/pymux/pipes/base.py new file mode 100644 index 0000000..233ed90 --- /dev/null +++ b/pymux/pipes/base.py @@ -0,0 +1,40 @@ +from __future__ import unicode_literals +from abc import ABCMeta, abstractmethod +from six import with_metaclass, text_type + +__all__ = [ + 'PipeConnection', + 'BrokenPipeError', +] + + +class PipeConnection(with_metaclass(ABCMeta, object)): + """ + A single active Win32 pipe connection on the server side. + + - Win32PipeConnection + """ + def read(self): + """ + (coroutine) + Read a single message from the pipe. (Return as text.) + + This can can BrokenPipeError. + """ + + def write(self, message): + """ + (coroutine) + Write a single message into the pipe. + + This can can BrokenPipeError. + """ + + def close(self): + """ + Close connection. + """ + + +class BrokenPipeError(Exception): + " Raised when trying to write to or read from a broken pipe. " diff --git a/pymux/pipes/posix.py b/pymux/pipes/posix.py index da5bfe9..2f43442 100644 --- a/pymux/pipes/posix.py +++ b/pymux/pipes/posix.py @@ -1,10 +1,14 @@ -from prompt_toolkit.eventloop import From, Return, Future, get_event_loop +from __future__ import unicode_literals import getpass import os import six import socket import tempfile + +from prompt_toolkit.eventloop import From, Return, Future, get_event_loop + from ..log import logger +from .base import PipeConnection, BrokenPipeError __all__ = [ 'bind_and_listen_on_posix_socket', @@ -14,6 +18,8 @@ def bind_and_listen_on_posix_socket(socket_name, accept_callback): """ + :param accept_callback: Called with `PosixSocketConnection` when a new + connection is established. """ assert socket_name is None or isinstance(socket_name, six.text_type) assert callable(accept_callback) @@ -30,8 +36,6 @@ def bind_and_listen_on_posix_socket(socket_name, accept_callback): # Listen on socket. socket.listen(0) - from .posix import PosixSocketConnection - def _accept_cb(): connection, client_address = socket.accept() # Note: We don't have to put this socket in non blocking mode. @@ -78,15 +82,18 @@ def _bind_posix_socket(socket_name=None): raise -class PosixSocketConnection(object): +class PosixSocketConnection(PipeConnection): + """ + A single active posix pipe connection on the server side. + """ def __init__(self, socket): self.socket = socket - self._recv_buffer = b'' def read(self): - """ + r""" Coroutine that reads the next packet. + (Packets are \0 separated.) """ while True: self._recv_buffer += yield From(_read_chunk_from_socket(self.socket)) @@ -109,20 +116,15 @@ def write(self, message): self.socket.send(message.encode('utf-8') + b'\0') except socket.error: if not self._closed: - self.detach_and_close() + raise BrokenPipeError return Future.succeed(None) - def detach_and_close(self): # XXX - # Remove from Pymux. - self._close_connection() - - # Remove from eventloop. - get_event_loop().remove_reader(self.socket.fileno()) - self.socket.close() - def close(self): - pass # TODO + """ + Close connection. + """ + self.socket.close() def _read_chunk_from_socket(socket): @@ -152,7 +154,7 @@ def read_callback(): if data: f.set_result(data) else: - f.set_exception(EOFError) # XXX + f.set_exception(BrokenPipeError) get_event_loop().add_reader(fd, read_callback) diff --git a/pymux/pipes/win32.py b/pymux/pipes/win32.py index 7dd71fd..c727eca 100644 --- a/pymux/pipes/win32.py +++ b/pymux/pipes/win32.py @@ -1,6 +1,7 @@ """ Common Win32 pipe operations. """ +from __future__ import unicode_literals from ctypes import windll, byref, create_string_buffer from ctypes.wintypes import DWORD, BOOL from prompt_toolkit.eventloop import get_event_loop, From, Return, Future @@ -20,8 +21,8 @@ GENERIC_WRITE = 0x40000000 OPEN_EXISTING = 0x3 -ERROR_IO_PENDING = 997 ERROR_BROKEN_PIPE = 109 +ERROR_IO_PENDING = 997 ERROR_MORE_DATA = 234 ERROR_NO_DATA = 232 FILE_FLAG_OVERLAPPED = 0x40000000 diff --git a/pymux/pipes/win32_client.py b/pymux/pipes/win32_client.py index 8b55696..e7692be 100644 --- a/pymux/pipes/win32_client.py +++ b/pymux/pipes/win32_client.py @@ -1,6 +1,8 @@ -from ctypes import windll +from __future__ import unicode_literals from .win32 import read_message_from_pipe, write_message_to_pipe, connect_to_pipe +from ctypes import windll from prompt_toolkit.eventloop import From, Return +import six __all__ = [ 'PipeClient', @@ -8,13 +10,19 @@ class PipeClient(object): + r""" + Windows pipe client. + + :param pipe_name: Name of the pipe. E.g. \\.\pipe\pipe_name + """ def __init__(self, pipe_name): + assert isinstance(pipe_name, six.text_type) self.pipe_handle = connect_to_pipe(pipe_name) def write_message(self, text): """ (coroutine) - Write data into the pipe. + Write message into the pipe. """ yield From(write_message_to_pipe(self.pipe_handle, text)) @@ -27,4 +35,7 @@ def read_message(self): raise Return(message) def close(self): + """ + Close the connection. + """ windll.kernel32.CloseHandle(self.pipe_handle) diff --git a/pymux/pipes/win32_server.py b/pymux/pipes/win32_server.py index 8a7d6a5..92d259a 100644 --- a/pymux/pipes/win32_server.py +++ b/pymux/pipes/win32_server.py @@ -1,9 +1,11 @@ +from __future__ import unicode_literals from ctypes import windll, byref from ctypes.wintypes import DWORD from prompt_toolkit.eventloop import From, Future, Return, ensure_future from ptterm.backends.win32_pipes import OVERLAPPED from .win32 import wait_for_event, create_event, read_message_from_pipe, write_message_to_pipe +from .base import PipeConnection, BrokenPipeError from ..log import logger __all__ = [ @@ -36,7 +38,10 @@ def bind_and_listen_on_win32_socket(socket_name, accept_callback): """ + :param accept_callback: Called with `Win32PipeConnection` when a new + connection is established. """ + assert callable(accept_callback) socket_name = r'\\.\pipe\pymux.sock.jonathan.42' pipes = [PipeInstance(socket_name, pipe_connection_cb=accept_callback) @@ -49,29 +54,41 @@ def bind_and_listen_on_win32_socket(socket_name, accept_callback): return socket_name -class Win32PipeConnection(object): +class Win32PipeConnection(PipeConnection): + """ + A single active Win32 pipe connection on the server side. + """ def __init__(self, pipe_instance): + assert isinstance(pipe_instance, PipeInstance) self.pipe_instance = pipe_instance self.done_f = Future() def read(self): + """ + (coroutine) + Read a single message from the pipe. (Return as text.) + """ if self.done_f.done(): - raise _BrokenPipeError + raise BrokenPipeError try: result = yield From(read_message_from_pipe(self.pipe_instance.pipe_handle)) raise Return(result) - except _BrokenPipeError: + except BrokenPipeError: self.done_f.set_result(None) raise def write(self, message): + """ + (coroutine) + Write a single message into the pipe. + """ if self.done_f.done(): - raise _BrokenPipeError + raise BrokenPipeError try: yield From(write_message_to_pipe(self.pipe_instance.pipe_handle, message)) - except _BrokenPipeError: + except BrokenPipeError: self.done_f.set_result(None) raise @@ -151,7 +168,3 @@ def _connect_client(self): else: raise Exception('connect failed with error code' + str(last_error)) - - -class _BrokenPipeError(Exception): - pass From 88a813476f70817067acf27a8c7269ff61cea0f1 Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Sun, 15 Jul 2018 16:10:06 +0200 Subject: [PATCH 14/17] - --- pymux/pipes/posix.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pymux/pipes/posix.py b/pymux/pipes/posix.py index 2f43442..58028f4 100644 --- a/pymux/pipes/posix.py +++ b/pymux/pipes/posix.py @@ -95,17 +95,17 @@ def read(self): Coroutine that reads the next packet. (Packets are \0 separated.) """ - while True: + # Read until we have a \0 in our buffer. + while b'\0' not in self._recv_buffer: self._recv_buffer += yield From(_read_chunk_from_socket(self.socket)) - if b'\0' in self._recv_buffer: - # Zero indicates end of packet. - pos = self._recv_buffer.index(b'\0') + # Split on the first separator. + pos = self._recv_buffer.index(b'\0') - packet = self._recv_buffer[:pos] - self._recv_buffer = self._recv_buffer[pos + 1:] + packet = self._recv_buffer[:pos] + self._recv_buffer = self._recv_buffer[pos + 1:] - raise Return(packet) + raise Return(packet) def write(self, message): From 1d47dd4add3c059356b0575e27dd7b54f5fe3d74 Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Sun, 15 Jul 2018 16:20:28 +0200 Subject: [PATCH 15/17] - --- pymux/server.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pymux/server.py b/pymux/server.py index 182b017..0f22706 100644 --- a/pymux/server.py +++ b/pymux/server.py @@ -15,6 +15,7 @@ from functools import partial from .log import logger +from .pipes import BrokenPipeError __all__ = ( 'ServerConnection', @@ -51,9 +52,13 @@ def _start_reading(self): try: data = yield From(self.pipe_connection.read()) self._process(data) + except BrokenPipeError: + self.detach_and_close() + break + except Exception as e: import traceback; traceback.print_stack() - print('got exception ', e) + print('got exception ', repr(e)) def _process(self, data): """ @@ -101,13 +106,16 @@ def _send_packet(self, data): """ Send packet to client. """ + if self._closed: + return + data = json.dumps(data) def send(): try: yield From(self.pipe_connection.write(data)) - except _BrokenPipeError: - pass # TODO + except BrokenPipeError: + self.detach_and_close() ensure_future(send()) def _run_command(self, packet): From 1f5126e4aebe4ad31390419ef009beb57582a886 Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Sun, 15 Jul 2018 16:46:45 +0200 Subject: [PATCH 16/17] - --- pymux/pipes/posix.py | 4 ++++ pymux/server.py | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pymux/pipes/posix.py b/pymux/pipes/posix.py index 58028f4..26c28a2 100644 --- a/pymux/pipes/posix.py +++ b/pymux/pipes/posix.py @@ -88,6 +88,7 @@ class PosixSocketConnection(PipeConnection): """ def __init__(self, socket): self.socket = socket + self._fd = socket.fileno() self._recv_buffer = b'' def read(self): @@ -126,6 +127,9 @@ def close(self): """ self.socket.close() + # Make sure to remove the reader from the event loop. + get_event_loop().remove_reader(self._fd) + def _read_chunk_from_socket(socket): """ diff --git a/pymux/server.py b/pymux/server.py index 0f22706..29c214a 100644 --- a/pymux/server.py +++ b/pymux/server.py @@ -6,7 +6,7 @@ import tempfile from prompt_toolkit.application.current import set_app -from prompt_toolkit.eventloop import get_event_loop, ensure_future, From +from prompt_toolkit.eventloop import ensure_future, From from prompt_toolkit.eventloop.context import context from prompt_toolkit.input.vt100_parser import Vt100Parser from prompt_toolkit.layout.screen import Size @@ -59,6 +59,7 @@ def _start_reading(self): except Exception as e: import traceback; traceback.print_stack() print('got exception ', repr(e)) + break def _process(self, data): """ From 751d1bebbe0c285aaf16610d5359ee75a1e22adc Mon Sep 17 00:00:00 2001 From: Jonathan Slenders <jonathan@slenders.be> Date: Sun, 15 Jul 2018 17:03:16 +0200 Subject: [PATCH 17/17] - --- pymux/main.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pymux/main.py b/pymux/main.py index 7442098..cef6385 100644 --- a/pymux/main.py +++ b/pymux/main.py @@ -317,7 +317,7 @@ def get_client_state(self): if client_state.app == app: return client_state - raise ValueError + raise ValueError('Client state for app %r not found' % (app, )) def get_connection(self): " Return the active Connection instance. " @@ -326,7 +326,7 @@ def get_connection(self): if client_state.app == app: return connection - raise ValueError + raise ValueError('Connection for app %r not found' % (app, )) def startup(self): # Handle start-up comands. @@ -468,6 +468,8 @@ def before_exec(): def invalidate(self): " Invalidate the UI for all clients. " + logger.info('Invalidating %s applications', len(self.apps)) + for app in self.apps: app.invalidate()