{"id":33129894,"url":"https://github.com/Kharacternyk/viter","last_synced_at":"2025-11-20T02:01:20.814Z","repository":{"id":111400395,"uuid":"243555955","full_name":"Kharacternyk/viter","owner":"Kharacternyk","description":"A Vim-ish terminal emulator written and extendable in Python.","archived":false,"fork":false,"pushed_at":"2020-10-23T12:38:10.000Z","size":242,"stargazers_count":71,"open_issues_count":0,"forks_count":1,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-04-23T20:10:59.938Z","etag":null,"topics":["gtk3","python","terminal","vim","vte"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kharacternyk.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-02-27T15:58:05.000Z","updated_at":"2024-03-26T17:16:39.000Z","dependencies_parsed_at":"2023-05-18T15:37:49.420Z","dependency_job_id":null,"html_url":"https://github.com/Kharacternyk/viter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Kharacternyk/viter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kharacternyk%2Fviter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kharacternyk%2Fviter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kharacternyk%2Fviter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kharacternyk%2Fviter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kharacternyk","download_url":"https://codeload.github.com/Kharacternyk/viter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kharacternyk%2Fviter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285359022,"owners_count":27158216,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-20T02:00:05.334Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gtk3","python","terminal","vim","vte"],"created_at":"2025-11-15T09:00:29.615Z","updated_at":"2025-11-20T02:01:20.808Z","avatar_url":"https://github.com/Kharacternyk.png","language":"Python","funding_links":[],"categories":["Packages"],"sub_categories":["Terminals"],"readme":".. image:: screenshot.png\n\nViter is a terminal emulator written and expandable in Python.\nIt features Vim-like modes, key bindings, and status line and can act like a pager.\n\n.. contents:: Navigation:\n   :backlinks: none\n\n============\nInstallation\n============\n\n~~~\nAUR\n~~~\n\nInstall the ``viter-git`` `AUR package`_.\n\n~~~~~~~~~~~~~~~~~~~\nManual installation\n~~~~~~~~~~~~~~~~~~~\n\nViter requires VTE and PyGObject. They are packaged as ``python-gobject`` and ``vte3`` on\nArch. Look for similarly named packages if you use another GNU/Linux distribution.\n\n=====\nUsage\n=====\n\nRun ``viter`` to launch the default shell in Viter. Run ``viter program [args]`` to launch\n``program`` in Viter with ``[args]`` (may be empty). Substitute ``viter`` for\n``/path/to/this/repo/viter.py`` if you didn't use AUR to install Viter.\n\nViter starts up in **NORMAL** mode where it behaves just like any other terminal emulator.\nPress ``Ctrl+Shift+Space`` to switch to **DETACHED** mode and access most of the features\n(see `Key bindings`_ and `Command interpreter`_). Press ``Escape`` to return to **NORMAL**\nmode.\n\n===========\nKey bindings\n===========\n\n* Switching modes:\n\n  * ``Escape``: switch to **NORMAL** mode\n  * ``Ctrl+Shift+Space``: switch to **DETACHED** mode\n\n* Navigating the scrollback\n\n  * ``j``: one line down\n  * ``k``: one line up\n  * ``J``: half page down\n  * ``K``: half page up\n  * ``g``: to the beginning\n  * ``G``: to the end\n\n* Zooming\n\n  * ``+``/``=``: make the font 25% larger\n  * ``-``: make the font 25% smaller\n\n* Search\n\n  * ``/`` *pattern* ``Enter``: set the search pattern to *pattern*\n  * ``n``: to the next occurrence of the search pattern\n  * ``N``: to the previous occurrence of the search pattern\n\n* Clipboard\n\n  * ``c``: copy selected text\n  * ``y`` *characters* ``Enter``:\n    yank the first line that starts with *characters* (not counting whitespace)\n  * ``v`` *characters* ``\",`` *count* ``Enter``:\n    yank the block of *count* lines, where the first line starts with *characters*\n    (not counting whitespace)\n  * ``V``: yank the whole window\n  * ``Y``: yank the message in the bar\n  * ``p``: paste\n  * ``Ctrl+Shift+C``/``Ctrl+Shift+V``: copy/paste in **NORMAL** mode\n\n* Command line\n\n  * ``:`` *command* ``Enter``:\n    execute *command* in the Python environment that executes the code of Viter\n  * ``e`` *expression* ``Enter``: evaluate *expression* and print the result in the bar\n\n===================\nCommand interpreter\n===================\n\nA status bar at the bottom of the window is shown when the user is in **DETACHED** mode.\nIt displays data in the format of\n``\u003cZoom\u003e [TopLineNum-BottomLineNum] (TotalLines) |TerminalHeightxTerminalWidth|`` while\nbeing unfocused.\n\nAfter the user typed some text into it and pressed ``Enter``, the entered text is\nexecuted by Viter using ``exec`` (a Python built-in).\n\nUse the ``win`` global variable to interact with the window. Some key bindings insert a\ncall to one of the methods of ``win``, for example:\n\n* ``/`` inserts ``win.search(\"\")`` and places the cursor between \"\".\n* ``y`` inserts ``win.yank_line(\"\")`` and places the cursor between \"\".\n* ``e`` inserts ``win.echo()`` and places the cursor between ().\n\n``win`` is an instance of the ``Window`` class that inherits ``Gtk.Window``.\nCalls to the inherited methods are also valid, for example:\n\n* ``win.set_title(\"Terminal\")`` to set the title of the window to *Terminal*.\n* ``win.close()`` to close the window.\n* ``win.fullscreen()`` to make the window fullscreen.\n\n``win`` has the ``term`` field of type ``Vte.Terminal``. See the Gtk documentation on\n``Gtk.Window`` `[1]`_ and ``Vte.Terminal`` `[2]`_ for the full list of the methods and\nfields. See the source of Viter to see the methods that are provided additionally to that\nof ``Gtk.Window``.\n\n==========\nPager mode\n==========\n\nIf Viter is invoked as ``viter-pager``, Viter acts like a pager.  It starts up directly\ninto **DETACHED** mode. If there is no arguments, ``stdin`` is read, otherwise the\narguments are interpreted as file names.\n\nHere are some examples of preprocessing the input:\n\n* ``pygmentize | viter-pager`` — syntax highlighting.\n* ``ul | viter-pager`` — converting overstriking to properly underlined text.\n\nIf you want to use Viter as your ``$MANPAGER``, make sure to cook the input via ``ul``.\nThe pages will lose formating (underlining, bold text) otherwise.\n\n=============\nConfiguration\n=============\n\nViter looks for the configuration file in the following order:\n\n* ``$VITER_CONFIG``\n* ``$XDG_CONFIG_HOME/viter/viterrc.py``\n* ``$HOME/.config/viter/viterrc.py``\n\nThe first file that exists is read and then passed to ``exec`` just before Viter enters\nthe main loop. The file must be a valid Python script.\n\nSee an example of the configuration file here_.\n\n.. LINKS\n.. _AUR package: https://aur.archlinux.org/packages/viter-git/\n.. _[1]: https://lazka.github.io/pgi-docs/Gtk-3.0/classes/Window.html\n.. _[2]: https://lazka.github.io/pgi-docs/Vte-2.91/classes/Terminal.html\n.. _here: https://github.com/Kharacternyk/dotfiles/blob/master/.config/viter/viterrc.py\n.. _Kharacternyk: https://github.com/Kharacternyk\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKharacternyk%2Fviter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKharacternyk%2Fviter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKharacternyk%2Fviter/lists"}