Go to file
Daniel Micay 86e2bc88e8 style fixes 2015-06-22 12:36:24 -04:00
man Added Q as a key to return to insert mode. 2015-05-24 16:37:02 -05:00
util@62faf9e46b cleanup 2013-01-04 23:49:38 -05:00
.gitignore Add a .gitignore 2012-06-08 15:07:11 -04:00
.gitmodules add util repo as submodule 2012-10-05 10:57:49 -04:00
.ycm_extra_conf.py Specify proper vte version in .ycm_extra_conf.py 2015-02-11 14:24:21 +01:00
Makefile drop warning triggered by glib/gtk macros 2015-06-22 12:18:46 -04:00
README.rst vte-ng fork replaces the VTE patch 2015-06-21 13:59:17 -04:00
TODO.rst add improving the hint uniqueness check to TODO 2013-02-20 03:45:45 -05:00
config tweak sample configuration 2015-04-22 19:22:58 -04:00
termite.cc style fixes 2015-06-22 12:36:24 -04:00
termite.desktop Application category is deprecated for .desktop 2013-01-01 16:21:27 -05:00
termite.terminfo Make ncurses recognize UTF8 support 2013-05-16 03:33:15 -04:00
url_regex.hh url_regex.hh: make path component optional 2012-10-07 11:45:37 -04:00

README.rst

A keyboard-centric VTE-based terminal, aimed at use within a window manager
with tiling and/or tabbing support.

Termite looks for the configuration file in the following order:
``$XDG_CONFIG_HOME/termite/config``, ``~/.config/termite/config``,
``$XDG_CONFIG_DIRS/termite/config``, ``/etc/xdg/termite/config``.

Termite's exit status is 1 on a failure, including a termination of the child
process from an uncaught signal. Otherwise the exit status is that of the child
process.

DEPENDENCIES
============

The `vte-ng <https://github.com/thestinger/vte-ng>`_ project is required until
VTE exposes the necessary functions for keyboard text selection and URL hints
(if ever). A simple patch `has been submitted upstream
<https://bugzilla.gnome.org/show_bug.cgi?id=679658#c10>`_ but they're unwilling
to expose functionality that's not required by GNOME Terminal even if there's
no extra maintenance (it already exists internally) and no additional backwards
compatibility hazards.

BUILDING
========
::

    git clone --recursive https://github.com/thestinger/termite.git
    cd termite && make

KEYBINDINGS
===========

INSERT MODE
-----------

+----------------------+---------------------------------------------+
| ``ctrl-shift-x``     | activate url hints mode                     |
+----------------------+---------------------------------------------+
| ``ctrl-shift-r``     | reload configuration file                   |
+----------------------+---------------------------------------------+
| ``ctrl-shift-c``     | copy to CLIPBOARD                           |
+----------------------+---------------------------------------------+
| ``ctrl-shift-v``     | paste from CLIPBOARD                        |
+----------------------+---------------------------------------------+
| ``ctrl-shift-u``     | unicode input (standard GTK binding)        |
+----------------------+---------------------------------------------+
| ``ctrl-tab``         | start scrollback completion                 |
+----------------------+---------------------------------------------+
| ``ctrl-shift-space`` | start selection mode                        |
+----------------------+---------------------------------------------+
| ``ctrl-shift-t``     | open terminal in the current directory [1]_ |
+----------------------+---------------------------------------------+
| ``ctrl-shift-up``    | scroll up a line                            |
+----------------------+---------------------------------------------+
| ``ctrl-shift-down``  | scroll down a line                          |
+----------------------+---------------------------------------------+
| ``shift-pageup``     | scroll up a page                            |
+----------------------+---------------------------------------------+
| ``shift-pagedown``   | scroll down a page                          |
+----------------------+---------------------------------------------+

.. [1] The directory can be set by a process running in the terminal. For
       example, with zsh:

       .. code:: sh

            if [[ $TERM == xterm-termite ]]; then
              . /etc/profile.d/vte.sh
              __vte_osc7
            fi
       ::

       For example, with bash:

       .. code:: sh

            if [[ $TERM == xterm-termite ]]; then
              . /etc/profile.d/vte.sh
              __vte_prompt_command
            fi

SELECTION MODE
--------------

+-----------------------------------+-----------------------------------------------------------+
| ``q`` or ``escape`` or ``ctrl-[`` | enter insert mode                                         |
+-----------------------------------+-----------------------------------------------------------+
| ``x``                             | activate url hints mode                                   |
+-----------------------------------+-----------------------------------------------------------+
| ``v``                             | visual mode                                               |
+-----------------------------------+-----------------------------------------------------------+
| ``V``                             | visual line mode                                          |
+-----------------------------------+-----------------------------------------------------------+
| ``ctrl-v``                        | visual block mode                                         |
+-----------------------------------+-----------------------------------------------------------+
| ``hjkl`` or arrow keys            | move cursor left/down/up/right                            |
+-----------------------------------+-----------------------------------------------------------+
| ``w`` or ``shift-right``          | forward word                                              |
+-----------------------------------+-----------------------------------------------------------+
| ``b`` or ``shift-left``           | backward word                                             |
+-----------------------------------+-----------------------------------------------------------+
| ``W`` or ``ctrl-right``           | forward WORD (non-whitespace)                             |
+-----------------------------------+-----------------------------------------------------------+
| ``B`` or ``ctrl-left``            | backward WORD (non-whitespace)                            |
+-----------------------------------+-----------------------------------------------------------+
| ``0``                             | move cursor to the first column in the row                |
+-----------------------------------+-----------------------------------------------------------+
| ``^``                             | beginning-of-line (first non-blank character)             |
+-----------------------------------+-----------------------------------------------------------+
| ``$``                             | end-of-line                                               |
+-----------------------------------+-----------------------------------------------------------+
| ``g``                             | jump to start of first row                                |
+-----------------------------------+-----------------------------------------------------------+
| ``G``                             | jump to start of last row                                 |
+-----------------------------------+-----------------------------------------------------------+
| ``ctrl-u``                        | move cursor a half screen up                              |
+-----------------------------------+-----------------------------------------------------------+
| ``ctrl-d``                        | move cursor a half screen down                            |
+-----------------------------------+-----------------------------------------------------------+
| ``ctrl-b``                        | move cursor a full screen up (back)                       |
+-----------------------------------+-----------------------------------------------------------+
| ``ctrl-f``                        | move cursor a full screen down (forward)                  |
+-----------------------------------+-----------------------------------------------------------+
| ``y``                             | copy to CLIPBOARD                                         |
+-----------------------------------+-----------------------------------------------------------+
| ``/``                             | forward search                                            |
+-----------------------------------+-----------------------------------------------------------+
| ``?``                             | reverse search                                            |
+-----------------------------------+-----------------------------------------------------------+
| ``u``                             | forward url search                                        |
+-----------------------------------+-----------------------------------------------------------+
| ``U``                             | reverse url search                                        |
+-----------------------------------+-----------------------------------------------------------+
| ``o``                             | open the current selection as a url                       |
+-----------------------------------+-----------------------------------------------------------+
| ``Return``                        | open the current selection as a url and enter insert mode |
+-----------------------------------+-----------------------------------------------------------+
| ``n``                             | next search match                                         |
+-----------------------------------+-----------------------------------------------------------+
| ``N``                             | previous search match                                     |
+-----------------------------------+-----------------------------------------------------------+
| ``+``                             | increase font size                                        |
+-----------------------------------+-----------------------------------------------------------+
| ``-``                             | decrease font size                                        |
+-----------------------------------+-----------------------------------------------------------+

During scrollback search, the current selection is changed to the search match
and copied to the PRIMARY clipboard buffer.

With the text input widget focused, up/down (or tab/shift-tab) cycle through
completions, escape closes the widget and enter accepts the input.

In hints mode, the input will be accepted as soon as termite considers it a
unique match.

PADDING
=======

Internal padding can be added by using CSS to style the VTE widget. Adding the
follow snippet to ``$XDG_CONFIG_HOME/gtk-3.0/gtk.css`` (or
``~/.config/gtk-3.0/gtk.css``) will add uniform 2px padding around the edges:

.. code:: css

    VteTerminal {
        padding: 2px;
    }

This can also be used to add varying amounts of padding to each side via
standard usage of the CSS padding property.