dmenu based launcher
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
external
plugins
.gitignore
CMakeLists.txt
LICENSE
Makefile
README
README.dmenu
defaults.h
dlauncher
dlauncher.c
dot_dlauncher_example
draw.c
draw.h
exec.c
exec.h
hist.h
plugin-interface
plugin.c
plugin.h

README

# Intro

DLauncher is a modified dmenu that provide flexible launcher
functions, including but not limited to:

 - Dynamic content
 - Plugin (native and external)
 - Summary
 - History
 - Persistent daemon (wake up by signal)

# Plugins

 - cmd: open executable in $PATH
 - ssh: open ssh terminal to host alias
 - dir: open terminal in a given directory
 - shell: run input in a shell
 - calc(external): send input to bc
 - zsh(external): complete line using zsh engine (check dot_dlauncher_example to see how to activate this)

FYI: zsh plugin may not work on FreeBSD due to a bug on ``zpty''

# TODO

 - more plugins

Feel free to hack it.

# Keybindings

Most of keybindings are the same as in dmenu, excepting some new:

 Mod1 + Tab: switch between available plugins
 Mod1 + a: same as Up
 Mod1 + d: same as Down
 Mod1 + w, Mod1 + Up: prev history
 Mod1 + s, Mod1 + Down: next history
 Mod1 + r: same as Return. This allows one-hand operating
 
It's easy to change them in the source code.

# Build & Install

DLauncher uses CMake to compile the project.
Makefile provides shortcuts for compiling/installing.

# Usage

dot_dlauncher_example is a sample dlauncher configuration file (~/.dlauncher)

dlauncher start - start the dlauncher deamon
dlauncher exit  - kill the dlauncher deamon
dlauncher open  - activate the dlauncher ui

## Extra options for dlauncher.bin besides of dmenu options

   -args [config-file]

   provide extra arguments in the file, one argument per line. Spaces
   on left will be trimed. Empty lines and lines start with `#' will
   be skipped.

   -pl "[name]:[entry][:options]"

   specify extra plugin with name [name]. Depends on the type, the
   entry are interpreted in different ways. For example, for exec
   plugins:

   -pl "[name]:[command line]:TYPE=EXEC[:other options]"

   For plugins using unix sockets:

   -pl "[name]:[socket path]:TYPE=UNIXSOCK[:other options]"

   other options supported are:

     PRIORITY=[priority]      - the plugin priority
     RETRY_CMD=[command line] - command line to be executed when plugin connection failed
     RETRY_DELAY=[seconds]    - do not retry for number of seconds since last retry
     ASYNC=[any non-empty string] - async mode(experimental)

# External Plugin Protocol

There is no documents yet. One can refer to the ``plugin.c'' to figure
out the protocol ;P

Also, check out external/calc.zsh to see how a minimized external
plugin is written.