Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mkropat/jumpapp
A run-or-raise application switcher for any X11 desktop
https://github.com/mkropat/jumpapp
application-switching run-or-raise
Last synced: 15 days ago
JSON representation
A run-or-raise application switcher for any X11 desktop
- Host: GitHub
- URL: https://github.com/mkropat/jumpapp
- Owner: mkropat
- License: mit
- Created: 2014-03-28T00:08:35.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2024-10-16T21:09:55.000Z (28 days ago)
- Last Synced: 2024-10-18T20:48:04.262Z (26 days ago)
- Topics: application-switching, run-or-raise
- Language: Shell
- Homepage:
- Size: 98.6 KB
- Stars: 640
- Watchers: 17
- Forks: 45
- Open Issues: 25
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# jumpapp
*A run-or-raise application switcher for any X11 desktop*
[![Build Status](https://travis-ci.org/mkropat/jumpapp.svg?branch=master)](https://travis-ci.org/mkropat/jumpapp)
The idea is simple — bind a key for any given application that will:
- launch the application, if it's not already running, or
- focus the application's most recently opened window, if it is running.Pressing the key again will cycle to the application's next window, if there's more than one.
In short, **jumpapp** is probably the fastest way for a keyboard-junkie to switch between applications in a modern desktop environment. Once [installed](#installation), all you have to do is configure the key bindings you want to use:
![Settings Example](http://i.imgur.com/dAj8NDZ.png "On Ubuntu it's under All Settings → Keyboard → Shortcuts")
## Synopsis
Usage: jumpapp [OPTION]... COMMAND [ARG]...
Jump to (focus) the existing window for an application, if it's running.
Otherwise, launch COMMAND (with optional ARGs) to start the application.Options:
-r -- cycle through windows in reverse order
-f -- force COMMAND to launch if process found but no windows found
-m -- if a single window is already open and in focus - minimize it
-n -- do not fork into background when launching COMMAND
-N -- don't launch if no window is found
-p -- always launch COMMAND when ARGs passed
(see Argument Passthrough in man page)
-L -- list matching windows for COMMAND and quit
-t NAME -- process window has to have NAME as the window title
-c NAME -- find window using NAME as WM_CLASS (instead of COMMAND)
-i NAME -- find process using NAME as the command name (instead of COMMAND)
-w -- only find the applications in the current workspace
-R -- bring the application to the current workspace when raising
(the default behaviour is to switch to the workspace that the
application is currently on)
-C -- center cursor when raising application## Installation
### Ubuntu, Debian and Friends
sudo apt-get install build-essential debhelper git pandoc shunit2
git clone https://github.com/mkropat/jumpapp.git
cd jumpapp
make deb
sudo dpkg -i jumpapp*all.deb
# if there were missing dependencies
sudo apt-get install -f### Fedora and Friends
git clone https://github.com/mkropat/jumpapp.git
cd jumpapp
make rpm
sudo yum localinstall jumpapp*.noarch.rpm### Arch linux and Friends
`yay` is used here but any [AUR
helper](https://wiki.archlinux.org/title/AUR_helpers) is fine.yay -S jumpapp
### From Source
git clone https://github.com/mkropat/jumpapp.git
cd jumpapp
make && sudo make install## Argument Passthrough (`-p` option)
Many applications keep track of what windows they have open so that if you run
the command again, it will interact with the existing application window
instead of launching a new instance of the application.Take Firefox, for example. If you already have a Firefox window open and you
run `firefox https://github.com/`, Firefox won't start a new instance. What it
does is open a new tab in the existing window and browse to the URL you passed.[Especially in the case of Desktop Entry files](#jumpappify-desktop-entry1), we
want to preserve this behavior. With `jumpapp -p COMMAND [ARGs]...`, when you
include one or more ARGs, COMMAND is always executed in order to pass the ARGs
to the running application. But if no ARGs are included, **jumpapp** will
behave normally.## A Wrapper Around wmctrl(1)
All the heavy lifting is done by Tomáš Stýblo's powerful
[**wmctrl**](http://tripie.sweb.cz/utils/wmctrl/). You must have it installed to
use **jumpapp**.**jumpapp** was built for the GNOME desktop environment. There's a good chance
though that it'll work on [any window manager supported by
**wmctrl**](http://tripie.sweb.cz/utils/wmctrl/#about).## XBindKeys
If your desktop environment doesn't offer a way to bind keys to commands — or if it's too limited — take a look at [XBindKeys](http://www.nongnu.org/xbindkeys/xbindkeys.html).
Example `.xbindkeysrc`:
"jumpapp chromium"
control + alt + c"jumpapp -r chromium"
shift + control + alt + c"jumpapp firefox"
control + alt + f"jumpapp -r firefox"
shift + control + alt + f"jumpapp gnome-terminal"
control + alt + t"jumpapp -r gnome-terminal"
shift + control + alt + t## jumpappify-desktop-entry(1)
**jumpapp** ships with a helper utility:
Usage: jumpappify-desktop-entry SOMEFILE.desktop
Given a desktop entry file (*.desktop), output a new desktop entry file that
wraps the application's `Exec` in a call to jumpapp(1).EXAMPLES
jumpappify-desktop-entry /usr/share/applications/chromium-browser.desktop \
> ~/.local/share/applications/chromium-browser.desktopOr convert multiple in one go:
for entry in /usr/share/applications/{firefox,gnome-terminal}.desktop; do
target=~/".local/share/applications/$(basename "$entry")"
jumpappify-desktop-entry "$entry" >"$target"
done## Continue On Your Path To Keyboard Nirvana
- [Blazing-Fast Application Switching in Linux](https://vickychijwani.me/blazing-fast-application-switching-in-linux/) — a blog post that talks about the advantages of this style of application switching
- [Saka Key](https://key.saka.io/docs/about/introduction) / [Tridactyl](https://github.com/tridactyl/tridactyl) — navigate the web with your keyboard
- [Vim](https://www.vim.org/) / [Neovim](https://neovim.io/) — the granddaddy of keyboard driven programs## Uninstall jumpapp
### Ubuntu, Debian and Friends
sudo apt remove jumpapp