A fancy drop-down terminal emulateur.
Project description
Terminalle
A modern, minimalist, semi-transparent, fullscreen "drop-down" terminal emulateur for freedesktop.org-compatible desktops (e.g. GNOME, KDE, Cinnamon).
It omits many features common in other terminal emulators, such as tabs, because it's meant to be used in conjunction with a terminal multiplexer such as tmux, which has a solid, mature UI. See also tmux mode for enhanced tmux features.
Based on VTE.
Dependencies
Arch
pacman -S gtk4 vte4 python-gobject python-yaml
Debian / Ubuntu
apt install gir1.2-gtk-4.0 gir1.2-vte-3.91 python3-gi python3-yaml
Fedora
dnf install gtk4 python3-gobject python3-pyyaml
Install
Terminalle is distributed via PyPI.
Modern systems prefer to manage Python packages
exclusively via the system package manager,
requiring the scary-looking --break-system-packages flag otherwise.
As long as you install the dependencies via your system package manager (see above), Terminalle will be the only Python package managed externally, and should not cause any conflicts with any system packages.
sudo uv pip install --system terminalle --break-system-packages
# Recommended: Enable auto-start.
# Starts the server automatically (window hidden) on login
# and restarts automatically on toggle if closed.
terminalle auto
Usage
Whichever process runs terminalle is the "server".
# See usage info.
terminalle --help
# Start the server (in this case, as a background job).
# The window is initially hidden by default.
# This is unnecessary if you've enabled auto-start with `terminalle auto`.
terminalle &
When toggled on, the terminal window opens on the monitor where the mouse is located. To move it to a different monitor, move the mouse, then toggle it on again. Wayland does not allow applications to position their own windows.
Use Ctrl+Shift+C and Ctrl+Shift+V to access the clipboard.
Shortcuts
If you use GNOME or KDE, Terminalle can manage keyboard shortcuts for you:
# This example enables 2 keyboard shortcuts to toggle the window,
# and 1 keyboard shortcut to shut down the server.
terminalle key --toggle '<Super>Return' --toggle '<Alt>Return' --quit <Super>Backspace'
For any other kind of dekstop environment, you'll have to set up your own shortcuts to invoke these D-Bus methods:
# Toggle window visibility.
dbus-send --session --type=method_call --dest=party.will.Terminalle \
/party/will/Terminalle party.will.Terminalle.Toggle
# Close the window and kill the server.
dbus-send --session --type=method_call --dest=party.will.Terminalle \
/party/will/Terminalle party.will.Terminalle.Quit
Uninstall
# If enabled, auto-start should be disabled prior to uninstalling.
# Also disable any keyboard shortcuts.
terminalle no-auto
terminalle no-key
sudo uv pip uninstall --system terminalle --break-system-packages
Configuration
See an example configuration. See the defaults in settings.py.
Defaults can be selectively overridden in
${XDG_CONFIG_HOME:-${HOME}/.config}/terminalle.yaml.
TMUX MODE
This is the recommended way to use Terminalle.
It enables some alternative tmux keyboard shortcuts,
which would normally be impossible to configure in .tmux.conf
since terminal emulators typically cannot handle these key combinations.
Generally replacing the tmux prefix with a simple Ctrl modifier,
it cuts the number of keystrokes in half
without requiring you to memorize new shortcuts.
If you're a tmux power-user, this will change things for you.
Turn it on by setting tmux: true in terminalle.yaml (see configuration).
The following shortcuts are enabled in tmux mode:
| tmux default | tmux mode | Command |
|---|---|---|
<Prefix> ! |
Ctrl+! |
break-pane |
<Prefix> " |
Ctrl+" |
split-window |
<Prefix> # |
Ctrl+# |
list-buffers |
<Prefix> $ |
Ctrl+$ |
command-prompt -I "#S" "rename-session -- '%%'" |
<Prefix> % |
Ctrl+% |
split-window -h |
<Prefix> & |
Ctrl+& |
confirm-before -p "kill-window #W? (y/n)" kill-window |
<Prefix> ' |
Ctrl+' |
command-prompt -T window-target -pindex "select-window -t ':%%'" |
<Prefix> ( |
Ctrl+( |
switch-client -p |
<Prefix> ) |
Ctrl+) |
switch-client -n |
<Prefix> , |
Ctrl+, |
command-prompt -I "#W" "rename-window -- '%%'" |
<Prefix> . |
Ctrl+. |
command-prompt -T target "move-window -t '%%'" |
<Prefix> : |
Ctrl+: |
command-prompt |
<Prefix> ; |
Ctrl+; |
last-pane |
<Prefix> = |
Ctrl+= |
choose-buffer -Z |
<Prefix> [ |
Ctrl+[ |
copy-mode |
<Prefix> ] |
Ctrl+] |
paste-buffer |
<Prefix> { |
Ctrl+{ |
swap-pane -U |
<Prefix> } |
Ctrl+} |
swap-pane -D |
To reap maximum benefits, add the following to your .tmux.conf,
taking care of other common tmux shortcuts that do not get mangled by typical terminal emulators:
# Generally shorten `<Prefix> <X>` to `Ctrl+<X>` for various `<X>`.
# Note that some commands (e.g. `<Prefix> c` for `new-window`) would conflict with
# established control sequences (`Ctrl+c` should send `SIGINT`) if shortened.
bind -n C-f command-prompt "find-window -Z -- '%%'"
bind -n C-n next-window
bind -n C-o select-pane -t ":.+"
bind -n C-p previous-window
bind -n C-q display-panes
bind -n C-s choose-tree -Zs
bind -n C-t clock-mode
bind -n C-x confirm-before -p "kill-pane #P? (y/n)" kill-pane
bind -n C-Space next-layout
# Resize panes using arrow keys and either `Ctrl` or `Meta`.
bind -n C-Up resize-pane -U
bind -n M-Up resize-pane -U 5
bind -n C-Down resize-pane -D
bind -n M-Down resize-pane -D 5
bind -n C-Left resize-pane -L
bind -n M-Left resize-pane -L 5
bind -n C-Right resize-pane -R
bind -n M-Right resize-pane -R 5
This all goes especially well with Vim Tmux Navigator, which provides shortened bindings for switching seemlessly between tmux panes and Vim windows.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file terminalle-2.0.1.tar.gz.
File metadata
- Download URL: terminalle-2.0.1.tar.gz
- Upload date:
- Size: 18.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2118deaec1112e7bdbfe40313dc435a2b86685f9241640f0bea49b234a7fc378
|
|
| MD5 |
8df3dea265bb05779e8863b30102aaba
|
|
| BLAKE2b-256 |
ff5ca1b91abdfbe95b09cc272c508eea5a6b18e57da4c3cf57c6407c91108baf
|
Provenance
The following attestation bundles were made for terminalle-2.0.1.tar.gz:
Publisher:
publish-release.yml on ouillie/terminalle
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
terminalle-2.0.1.tar.gz -
Subject digest:
2118deaec1112e7bdbfe40313dc435a2b86685f9241640f0bea49b234a7fc378 - Sigstore transparency entry: 653345741
- Sigstore integration time:
-
Permalink:
ouillie/terminalle@6d5e65e17b2b36e50ccbf316c7279ba728270ca3 -
Branch / Tag:
refs/tags/v2.0.1 - Owner: https://github.com/ouillie
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-release.yml@6d5e65e17b2b36e50ccbf316c7279ba728270ca3 -
Trigger Event:
release
-
Statement type:
File details
Details for the file terminalle-2.0.1-py3-none-any.whl.
File metadata
- Download URL: terminalle-2.0.1-py3-none-any.whl
- Upload date:
- Size: 16.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
390a8ecb8d8c01b1060fad63959643fd8fad37fd3fb498c7c44290cd4c0af6d0
|
|
| MD5 |
d5b47d85136deaebe491c6c608eee1c1
|
|
| BLAKE2b-256 |
720caedae902f3108c12761aceba5bed1c32c33e00848eb3ea90a6dfc330997c
|
Provenance
The following attestation bundles were made for terminalle-2.0.1-py3-none-any.whl:
Publisher:
publish-release.yml on ouillie/terminalle
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
terminalle-2.0.1-py3-none-any.whl -
Subject digest:
390a8ecb8d8c01b1060fad63959643fd8fad37fd3fb498c7c44290cd4c0af6d0 - Sigstore transparency entry: 653345747
- Sigstore integration time:
-
Permalink:
ouillie/terminalle@6d5e65e17b2b36e50ccbf316c7279ba728270ca3 -
Branch / Tag:
refs/tags/v2.0.1 - Owner: https://github.com/ouillie
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-release.yml@6d5e65e17b2b36e50ccbf316c7279ba728270ca3 -
Trigger Event:
release
-
Statement type: