{ "info": { "author": "Ariel Ladegaard", "author_email": "arl13@aber.ac.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Environment :: X11 Applications", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3 :: Only", "Topic :: Desktop Environment :: Window Managers", "Topic :: Terminals :: Terminal Emulators/X Terminals" ], "description": "# Kitti3 - Kitty drop-down service for i3wm\nKitti3 turns [Kitty](https://sw.kovidgoyal.net/kitty/) into a drop-down, Quake-style \nfloating terminal for the [i3 window manager](https://i3wm.org/).\n\n#### Features\n- i3 native, *flicker-free* visibility toggling \n- Multi-monitor support with adaptive resizing to active monitor resolution\n- Position the terminal along any screen edge\n- Great responsiveness by leveraging i3's IPC API\n- Support for multiple instances\n- Kitty argument forwarding (e.g. `--session`)\n\n[TODO: image of kitti3]\n\nDisclaimer: no screen redraws are wasted on actually animating dropping the terminal down \ninto view; it just appears and disappears on demand.\n\n## Installation and setup\nKitti3 is a Python 3 package that [lives on PYPI](TODO). \n1. To install it, either:\n - use pip:\n ```commandline\n $ pip install kitti3 --user\n ```\n - or copy [main.py](https://github.com/LandingEllipse/Kitti3/blob/master/src/kitti3/main.py)\n to somewhere on your $PATH, rename it to `kitti3` and make it executable. (*Note:*\n in this case it's your responsibility to satisfy the Python [dependencies](#dependencies)) \n\n2. Ensure that Kitti3 is reachable (e.g. `$ which kitti3`); i3 won't necessarily complain later \non if it isn't!\n\n3. Add the following to your `~/.config/i3/config`:\n ```commandline\n exec --no-startup-id kitti3\n bindsym $mod+n nop kitti3\n ```\n where `$mod+n` refers to your keyboard shortcut of choice. Take a look at the \n [configuration](#configuration) below for a list of the parameters that Kitti3 accepts.\n\n4. Restart i3wm\n\n5. Trigger the shortcut to verify that the terminal appears (slight flicker / tiling \nnoise is normal on the first toggle when Kitty is spawned and floated by Kitti3)\n\n\n## Configuration\nKitti3 doesn't make use of a dedicated configuration file, but the default behaviour can \nbe changed via commandline arguments:\n```commanline\n$ kitti3 -h\nusage: kitti3 [-h] [-v] [-n NAME] [-p {top,bottom,left,right}]\n [-s SHAPE SHAPE]\n\nKitti3: i3 drop-down wrapper for Kitty. Arguments following '--' are\nforwarded to the Kitty instance\n\noptional arguments:\n -h, --help show this help message and exit\n -v, --version show kitti3's version number and exit\n -n NAME, --name NAME name/tag connecting a Kitti3 bindsym with a Kitty\n instance. Forwarded to Kitty on spawn and scanned for\n on i3 binding events\n -p {top,bottom,left,right}, --position {top,bottom,left,right}\n Along which edge of the screen to align the Kitty\n window\n -s SHAPE SHAPE, --shape SHAPE SHAPE\n shape of the terminal window minor and major\n dimensions as a fraction [0, 1] of the screen (note:\n i3bar is automatically excluded)\n```\n\n### Multiple instances\nKitti3 uses an *instance name* internally to associate a keyboard shortcut with a Kitty\ninstance. The default name is simply \"kitti3\". If you want to run multiple instances of \nKitti3 you will need to provide subsequent instances with distinct names to prevent \ncrosstalk. For example (`~/.config/i3/config`):\n```commandline\nexec --no-startup-id kitti3 -n bubblegum\nbindsym $mod+n nop bubblegum\n```\nNotice how because Kitti3 piggybacks on i3's keyboard shortcut handling, the instance \nname needs to be reflected in the `bindsym` declaration as well (even though the bindsym\nis technically a no-operation, an IPC event is still triggered and Kitti3 is able to\nparse and associate the nop comment (*bubblegum* in this case). \n\n### Example\nThe following i3 configuration snippet provides a Kitty terminal aligned to the left \nside of the screen, filling the entire available height (major dimension) but limited to\n30% of the width. It is assigned the custom name \"caterwaul\", and the argument \n`--session ~/.kitty_session` is forwarded to Kitty when it is spawned.\n```commandline\nexec --no-startup-id kitti3 -n caterwaul -p left -s 1.0 0.3 -- --session ~/.kitty_session\nbindsym $mod+n nop caterwaul\n```\n\n## Dependencies\n- [Kitty](https://sw.kovidgoyal.net/kitty/) (duh)\n- i3 (tested with 4.17 but if you're stuck in the past it's probably fine on 3.xx)\n- Python >= 3.6 (because f-strings; fork and substitute if you need compatibility)\n- [i3ipc-python](https://github.com/altdesktop/i3ipc-python) (pip will pull in >=2.0)\n\n## Alternatives\n### The natives\nIf you're not too fussed about which terminal you're using then there are several \nalternatives out there that do drop-down out of the box, like \n[guake](http://guake-project.org/) and [tilda](https://github.com/lanoxx/tilda). However, \nif you find yourself wanting to experiment with fonts that support programming ligatures \n(like the excellent [FiraCode](https://github.com/tonsky/FiraCode)), your options \nquickly dwindle as terminals based on the VTE library (like the two above) still don't \nplay well with ligatures.\n\n### The other bolt-ons\nBut you're here because you want to use Kitty, so forget about the natives for a second\nand instead ask yourself why you shouldn't just be using one of the other \"drop-downifiers\".\nTwo notable mentions in this space are [tdrop](https://github.com/noctuid/tdrop) and \n[i3-quickterm](https://github.com/lbonn/i3-quickterm). tdrop is a swiss army knife\nthat could probably turn a potato into a drop-down if you worked hard enough, but while\nfeature rich it can be prohibitively slow and cause substantial flicker artifacts in i3\nduring visibility toggling. \n\nKitti3 was actually inspired by the approach taken by i3-quickterm, which issues \nshow/hide commands to i3 via IPC. It also supports other terminals than just Kitty, \nhowever its single-shot, mark-based design leads to some speed penalties and unwanted \nbehaviour when spawning terminals. If you're open to using other terminals than Kitty \n(and have somehow made it this far into the readme), you should try it out. It was \ni3-quickterm's inability to display terminals as slide-ins (as opposed to drop-down or \npop-up) that prompted the creation of Kitti3.\n\nKitti3 runs as a daemon and listens to events through i3's IPC API, using information\nabout the active workspace to dynamically direct i3 in how to best resize and position \nKitty when visibility is toggled. This leads to excellent responsiveness and no flicker \nartifacts, as well as a seamless experience in multi-monitor, multi-resolution setups.\n\n### i3wm config\n*\"But I don't have a hundred external monitors on my desk!\"* you cry out. Well, if you're\nrunning a single-monitor setup, or you're simply content with having the terminal \ndisplayed on your main monitor only, then you don't actually need Kitti3 or any of the \nother bolt-ons. i3 is happy to take care of container floating and positioning if you're \nhappy to work with absolute pixel values. This is where you start (add to \n`~/.config/i3/config`):\n```commandline\nexec --no-startup-id kitty --name dropdown \nfor_window [instance=\"dropdown\"] floating enable, border none, move absolute \\\nposition 0px 0px, resize set 1920px 384px, move scratchpad\nbindsym $mod+n [instance=\"dropdown\"] scratchpad show\n```\nand the [i3 user's guide](https://i3wm.org/docs/userguide.html) will lead you the rest \nof the way.\n\n## Development\nFound a bug? Have a feature request? Create an issue on GitHub!\n\nWant to get your hands dirty and contribute? Great! Clone the repository and dig in.\n\nThe project adopts a `setuptools` based structure and can be installed in \ndevelopment mode using pip (from the project root directory):\n\n $ pip install -e .\n\nThis exposes the `kitti3` entry point script, which starts the Kitty service.\n\n## License\nKitti3 is released under a BSD 3-clause license; see [LICENSE](https://github.com/LandingEllipse/Kitti3/blob/master/LICENSE) for the details.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/LandingEllipse/kitti3", "keywords": "drop down terminal kitty i3 i3wm quake guake", "license": "BSD 3-Clause", "maintainer": "", "maintainer_email": "", "name": "kitti3", "package_url": "https://pypi.org/project/kitti3/", "platform": "", "project_url": "https://pypi.org/project/kitti3/", "project_urls": { "Homepage": "https://github.com/LandingEllipse/kitti3" }, "release_url": "https://pypi.org/project/kitti3/0.2.4/", "requires_dist": [ "i3ipc (>=2.0.0)" ], "requires_python": ">=3.6", "summary": "Kitti3 - Kitty drop down terminal service for i3wm", "version": "0.2.4" }, "last_serial": 5858021, "releases": { "0.2.4": [ { "comment_text": "", "digests": { "md5": "7a9838059ec4805ddc3d7c90ced14da1", "sha256": "083fa58352561dcd05365b2a0943bb1549b45884ce479298188d5ad33ef97b50" }, "downloads": -1, "filename": "kitti3-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "7a9838059ec4805ddc3d7c90ced14da1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8970, "upload_time": "2019-09-19T18:17:37", "url": "https://files.pythonhosted.org/packages/23/10/dace61cd2f8f640063de8d6adf01b693cf3d830cb976af5fdcae156ff0a2/kitti3-0.2.4-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7a9838059ec4805ddc3d7c90ced14da1", "sha256": "083fa58352561dcd05365b2a0943bb1549b45884ce479298188d5ad33ef97b50" }, "downloads": -1, "filename": "kitti3-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "7a9838059ec4805ddc3d7c90ced14da1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8970, "upload_time": "2019-09-19T18:17:37", "url": "https://files.pythonhosted.org/packages/23/10/dace61cd2f8f640063de8d6adf01b693cf3d830cb976af5fdcae156ff0a2/kitti3-0.2.4-py3-none-any.whl" } ] }