Thanks for advice! I've fixed the crash bug and ssh_config parsing issue you mentioned. I didn't test much on -l mode, so there may be bugs hidden.
For `dir' plugin, the current way to enter a directory is to append '/' at the end of the directory name. For example, input `dir_` you will get completion of `dir_*`, and input `dir_/' you will get completion of `dir_/*' For the layout problem in -l mode, I changed the area of options to be aligned with the menu edge. I guess this is anyhow better than the previous layout. About the monolithic design, I would prefer it because currently the plugin interface may still be subject to change and it takes less pain to change them in a monolithic code base. Its possible to create `receiver' plugins that talk with external executables and let dlauncher multiplex the result. The `zsh' plugin works in this way. Cheers, Xinhao On Sun, May 11, 2014 at 3:50 AM, Ciprian Dorin Craciun <ciprian.crac...@gmail.com> wrote: > On Sun, May 11, 2014 at 4:29 AM, Xinhao Yuan <xinhaoy...@gmail.com> wrote: >> I would like to announce dlauncher, a dmenu based launcher I wrote to >> replace synapse(https://launchpad.net/synapse-project) which is no >> longer in development. dlauncher reuses the minimalist dmenu UI and >> supports plugins that provide dynamic content. > > I've just quickly tried it and it seems quite nice. I especially > like the fact that it runs as a daemon, thus it could be snappier (via > caching of options) than launching it every time. > > I also like the fact that it adds the plugins feature, thus > switching from one to another changes the context of the available > options; plus the fact that the selected plugin changes based on the > available options (i.e. if only SSH hosts remain, SSH plugin is > automatically selected). > > Regarding the available plugins see my comments below. > > However there are a few things I don't like (although some of my > positions are counter to the "suckless" philosophy): > > * it is monolithic in regards to the addition of plugins; keeping > with the KISS / UNIX principles I would have expected that each plugin > is implemented as a separate executable that provides the available > options, thus dlauncher acts as a multiplexer; (however such an > approach I propose would have some overhead...) > > * displaying too many plugins changes the available width for the > options, thus moving the place where the eye must look for the options > (at least in `-l` mode); (personally I find it disturbing, and some > time ago I've written a patch to dmenu which displays the caption > on-top (instead on the left) when using the `-l` (lines) mode;) > > > Some bugs I've found: > > * typing an option that doesn't exist (such as `does-not-exist`), > while in another context than `cmd`, crashes the daemon; (maybe a > good solution for stability would be to fork `dlauncher` on the user > signal, and ignore other signals until the child terminates, to > achieve a kind of locking;) > > >> highlighted plugin: >> >> * history - conveniently recalls your command history > > Maybe a nice enhancement would be to look also inside the user's > chosen shell history. (Or maybe this would become a separate plugin?) > > >> * ssh - takes hostname and open ssh session in a terminal emulator > > There is a small problem in parsing the `Host` lines from SSH > configuration: it is allowed to list multiple aliases on the same > `Host` line; however stop the parsing after the first one. > > Moreover SSH also allows specifying wildcards (`*`) in hostnames > (within the `Host` lines), to specify defaults for a category of > hosts; thus these shouldn't appear in the auto-completion as they are > not valid hostnames. > > > The `dir` plugin, should (somehow) allow the option to open the > directory in `dlauncher` and allow me to choose a sub-directory (and > so on). There could also be a `file` plugin (maybe mixed with `dir`) > which uses some tool to open it based on MIME type / extension. > > > Good work, > Ciprian. > > > P.S.: I'm looking forward to see a fork of `dmenu`, similar to > `dlauncher`, but one which exposes a look-and-feel of a Cisco-like > console: select a category, press enter, select some sub-category / > sub-command, press enter, and so on... (It is on my to-do list for > some years...) >