Quake Terminal: A drop-down interface for GNOME Shell that launches your preferred terminal emulator in Quake mode, inspired by classic Quake games.
demo.mp4
Tip
The terminal used in this demo is Alacritty with window decorations disabled for a seamless look.
The GNOME Shell Extension - Quake Terminal enhances your desktop by providing a drop-down interface, inspired by classic Quake games, that can instantly launch your preferred terminal emulator over any workspace.
Key features include:
- Quick Activation: Instantly summon your preferred terminal emulator in Quake mode using a single keyboard shortcut or a customizable key combination for fast, efficient access.
- Workspace Integration: The terminal remains hidden in overview mode and during Alt+Tab switching, ensuring it never obstructs your workflow when not in use.
- Multi-Display Support: Choose which display the Quake Terminal appears on, offering flexibility for multi-monitor setups.
- Custom Arguments: Launch your terminal emulator with custom arguments when opened by Quake Terminal, allowing tailored configurations.
- Aesthetic Animations: Smooth sizing and animation timing for a polished user experience.
Note: This extension does not provide a terminal emulator. It works with the terminal application already installed on your system.
You can easily install the extension from the GNOME Extensions website:
If you prefer manual installation, follow these steps:
- Clone this repository to your system:
git clone https://github.com/diegodario88/quake-terminal.git- Run the provided installation script:
make install- Fork this repo on Github
- Clone your new repo
- Browse to the root of the project and run the provided installation script:
npm installmake install- Make your changes to the code
- Start a nested GNOME Shell session to test your changes
dbus-run-session -- gnome-shell --nested --waylandThis project uses semantic-release for automated versioning and releases. The release process is triggered automatically when commits are pushed to the main branch.
Use conventional commits format for your commit messages:
feat:- A new feature (triggers a minor release)fix:- A bug fix (triggers a patch release)docs:- Documentation changesstyle:- Code style changes (formatting, etc.)refactor:- Code refactoringtest:- Adding or updating testschore:- Build process or auxiliary tool changes
Example:
feat: add support for custom terminal arguments
fix
9720
: resolve animation timing issue
docs: update installation instructions
When you push to main with proper conventional commit messages:
- Version Calculation: semantic-release analyzes commit messages and determines the next version
- Version Updates: Updates both
package.jsonandsrc/metadata.jsonwith the new version - Changelog: Generates/updates
CHANGELOG.mdwith release notes - Git Tag: Creates a git tag for the release
- GitHub Release: Creates a GitHub release with generated notes
Both package.json version and metadata.json version-name will be updated to match, while metadata.json version (GNOME extension version) will be incremented automatically.
- Watch extensions logs
journalctl -f -o cat /usr/bin/gnome-shell- Watch preferences window logs
journalctl -f -o cat /usr/bin/gjs- Watch GSettings updates:
dconf watch /org/gnome/shell/extensions/quake-terminal/GNOME Shell Extensions documentation and tutorial: https://gjs.guide/extensions/
If you want to help me with this, consider buying me a coffee. :)
Made with ❤️ by Diego Dario