iAdded a man page - iomenu - interactive terminal-based selection menu Err bitreich.org 70 hgit clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu URL:git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu bitreich.org 70 1Log /scm/iomenu/log.gph bitreich.org 70 1Files /scm/iomenu/files.gph bitreich.org 70 1Refs /scm/iomenu/refs.gph bitreich.org 70 1Tags /scm/iomenu/tag bitreich.org 70 1README /scm/iomenu/file/README.gph bitreich.org 70 1LICENSE /scm/iomenu/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 04f14a2a3fbe38525721285139ebf8af4350876f /scm/iomenu/commit/04f14a2a3fbe38525721285139ebf8af4350876f.gph bitreich.org 70 1parent 2c6e76a07ce8fd008e28001c8ab4afcb6acd2b6e /scm/iomenu/commit/2c6e76a07ce8fd008e28001c8ab4afcb6acd2b6e.gph bitreich.org 70 hAuthor: Josuah Demangeon⠠⠵ URL:mailto:mail@josuah.net bitreich.org 70 iDate: Sun, 19 Mar 2017 22:29:08 +0100 Err bitreich.org 70 i Err bitreich.org 70 iAdded a man page Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M Makefile | 2 +- Err bitreich.org 70 i M README | 108 ++++++++++++++----------------- Err bitreich.org 70 i A iomenu.1 | 128 +++++++++++++++++++++++++++++++ Err bitreich.org 70 i M iomenu.c | 10 ++-------- Err bitreich.org 70 i Err bitreich.org 70 i4 files changed, 180 insertions(+), 68 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/Makefile b/Makefile /scm/iomenu/file/Makefile.gph bitreich.org 70 i@@ -8,5 +8,5 @@ clean: Err bitreich.org 70 i Err bitreich.org 70 i install: iomenu Err bitreich.org 70 i mkdir -p $(PREFIX)/bin $(PREFIX)/man/man1 Err bitreich.org 70 i- # cp *.1 $(PREFIX)/man/man1/ Err bitreich.org 70 i+ cp *.1 $(PREFIX)/man/man1/ Err bitreich.org 70 i cp iomenu $(PREFIX)/bin/ Err bitreich.org 70 1diff --git a/README b/README /scm/iomenu/file/README.gph bitreich.org 70 i@@ -1,90 +1,80 @@ Err bitreich.org 70 i-iomenu - Filter lines from stdin with an interactive menu Err bitreich.org 70 i+IOMENU(1) General Commands Manual IOMENU(1) Err bitreich.org 70 i Err bitreich.org 70 i- . _ __ _ __ Err bitreich.org 70 i- | (_) ||| (/_ | | |_| Err bitreich.org 70 i+NAME Err bitreich.org 70 i+ iomenu – interactive selection menu Err bitreich.org 70 i Err bitreich.org 70 i-________________________________________________________________________________ Err bitreich.org 70 i+SYNOPSIS Err bitreich.org 70 i+ iomenu [-l lines] Err bitreich.org 70 i Err bitreich.org 70 i- iomenu is a terminal tool to interactively select lines from stdin, and Err bitreich.org 70 i- print them out to the standard output. Err bitreich.org 70 i+DESCRIPTION Err bitreich.org 70 i+ iomenu is an interactive filtering and selection tool for the terminal. Err bitreich.org 70 i Err bitreich.org 70 i- You can use scripts made for dmenu [1], as iomenu mostly the same way. Err bitreich.org 70 i+ It reads lines from standard input, and prompt for a selection. The Err bitreich.org 70 i+ selected line(s) is(are) printed to standard output. Err bitreich.org 70 i Err bitreich.org 70 i- Thanks to the authors of dmenu [1], sandy [2], vis-menu[3], pep[4], ... Err bitreich.org 70 i- that taught me C by writing some. Err bitreich.org 70 i+ -l lines If lines is 0 or if -l is not set, the items are Err bitreich.org 70 i+ displayed in an horizontal list. Otherwise, in a Err bitreich.org 70 i+ vertical list of at most lines lines. Err bitreich.org 70 i Err bitreich.org 70 i+ Selection control Err bitreich.org 70 i+ An active selection is highlighted, and can be controlled with Err bitreich.org 70 i+ keybindings. Err bitreich.org 70 i Err bitreich.org 70 i-Getting started Err bitreich.org 70 i-________________________________________________________________________________ Err bitreich.org 70 i+ ^P, ^N Move selection to the previous/next item. Err bitreich.org 70 i Err bitreich.org 70 i- You can install iomenu by running: Err bitreich.org 70 i- Err bitreich.org 70 i- """ Err bitreich.org 70 i- make install Err bitreich.org 70 i- """ Err bitreich.org 70 i- Err bitreich.org 70 i- You can optionnaly set a "PREFIX" variable to set the path to Err bitreich.org 70 i- install to: Err bitreich.org 70 i- Err bitreich.org 70 i- """ Err bitreich.org 70 i- make PREFIX="$HOME/bin" install Err bitreich.org 70 i- """ Err bitreich.org 70 i+ ^M, ^J, Enter Print the selection to the standard output, and exit 0. Err bitreich.org 70 i Err bitreich.org 70 i- All you need to build it is a C compiler: It is plain C89 source Err bitreich.org 70 i- code without external dependencies. Err bitreich.org 70 i+ ^Y Print the selection to the standard output but continue Err bitreich.org 70 i+ running. Err bitreich.org 70 i Err bitreich.org 70 i- All usage details are written in the man page, "iomenu.1". Err bitreich.org 70 i+ Input handling Err bitreich.org 70 i+ As printable keys are entered, the selection is filtered to match every Err bitreich.org 70 i+ word from the input. Err bitreich.org 70 i Err bitreich.org 70 i+ ^H, Bakcspace Remove last character from current input. Err bitreich.org 70 i Err bitreich.org 70 i-Examples Err bitreich.org 70 i-________________________________________________________________________________ Err bitreich.org 70 i+ ^W Remove last word from current input. Err bitreich.org 70 i Err bitreich.org 70 i+ ^U Remove the whole input string. Err bitreich.org 70 i Err bitreich.org 70 i-Open a bookmark from a list in a text file Err bitreich.org 70 i+ ^I, Tab Fill the input with current selection. Err bitreich.org 70 i Err bitreich.org 70 i- """ Err bitreich.org 70 i- iomenu < bookmarks-urls.txt | xargs firefox Err bitreich.org 70 i- """ Err bitreich.org 70 i+EXIT STATUS Err bitreich.org 70 i+ The iomenu utility exits 0 on success, and >0 if an error occurs. Err bitreich.org 70 i Err bitreich.org 70 i+EXAMPLES Err bitreich.org 70 i+ Open a bookmark from a list in a text file: Err bitreich.org 70 i Err bitreich.org 70 i-Go to a subdirectory Err bitreich.org 70 i+ iomenu < bookmarks-urls.txt | xargs firefox Err bitreich.org 70 i Err bitreich.org 70 i- """ Err bitreich.org 70 i- cd "$(find . -type d | iomenu)" Err bitreich.org 70 i- """ Err bitreich.org 70 i+ Go to a subdirectory: Err bitreich.org 70 i Err bitreich.org 70 i+ cd "$(find . -type d | iomenu)" Err bitreich.org 70 i Err bitreich.org 70 i-Edit a file located in ~ Err bitreich.org 70 i+ Edit a file located in HOME: Err bitreich.org 70 i Err bitreich.org 70 i- """ Err bitreich.org 70 i- $EDITOR "$(find -type f | iomenu)" Err bitreich.org 70 i- """ Err bitreich.org 70 i+ EDITOR "$(find "$HOME" -type f | iomenu -l 255)" Err bitreich.org 70 i Err bitreich.org 70 i+ Play an audio file: Err bitreich.org 70 i Err bitreich.org 70 i-Play an audio file Err bitreich.org 70 i+ mplayer "$(find ~/Music | iomenu)" Err bitreich.org 70 i Err bitreich.org 70 i- """ Err bitreich.org 70 i- mplayer "$(find ~/Music | iomenu)" Err bitreich.org 70 i- """ Err bitreich.org 70 i+ Select a background job to attach to: Err bitreich.org 70 i Err bitreich.org 70 i+ fg "%$(jobs | iomenu | cut -c 2)" Err bitreich.org 70 i Err bitreich.org 70 i-Select a background job to attach to Err bitreich.org 70 i+ Filter "ps" output and print a process ID Err bitreich.org 70 i Err bitreich.org 70 i- """ Err bitreich.org 70 i- fg "%$(jobs | iomenu | cut -c 2)" Err bitreich.org 70 i- """ Err bitreich.org 70 i+ ps ax | tail -n +2 | iomenu -l 255 | sed -r 's/ *([0-9]*).*/1/' Err bitreich.org 70 i Err bitreich.org 70 i+SEE ALSO Err bitreich.org 70 i+ dmenu(1), slmenu(1), vis-menu(1) Err bitreich.org 70 i Err bitreich.org 70 i-Filter "ps" output and print a process ID Err bitreich.org 70 i+BUGS Err bitreich.org 70 i+ iomenu currently only support ASCII characters. Err bitreich.org 70 i Err bitreich.org 70 i- """ Err bitreich.org 70 i- { printf '#'; ps ax; } | iomenu -s '#' | sed -r 's/ *([0-9]*).*/\1/' Err bitreich.org 70 i- """ Err bitreich.org 70 i+AUTORS Err bitreich.org 70 i+ iomenu was written from scratch by Josuah Demangeon Err bitreich.org 70 i+ with the help of dmenu(1) and vis-menu(1) as models. Err bitreich.org 70 i Err bitreich.org 70 i- Err bitreich.org 70 i-________________________________________________________________________________ Err bitreich.org 70 i- Err bitreich.org 70 i-1 http://git.suckless.org/dmenu/tree/dmenu.c Err bitreich.org 70 i-2 http://git.suckless.org/sandy/tree/sandy.c Err bitreich.org 70 i-3 http://github.com/martanne/vis/blob/master/vis-menu.c Err bitreich.org 70 i-4 http://github.com/charles-l/pep/blob/master/pep.c Err bitreich.org 70 i+Linux 4.9.11-1-ARCH March 19, 2017 Linux 4.9.11-1-ARCH Err bitreich.org 70 1diff --git a/iomenu.1 b/iomenu.1 /scm/iomenu/file/iomenu.1.gph bitreich.org 70 i@@ -0,0 +1,128 @@ Err bitreich.org 70 i+.Dd mar 19, 2017 Err bitreich.org 70 i+.Dt IOMENU 1 Err bitreich.org 70 i+.Os Err bitreich.org 70 i+. Err bitreich.org 70 i+.Sh NAME Err bitreich.org 70 i+. Err bitreich.org 70 i+.Nm iomenu Err bitreich.org 70 i+.Nd interactive selection menu Err bitreich.org 70 i+. Err bitreich.org 70 i+.Sh SYNOPSIS Err bitreich.org 70 i+. Err bitreich.org 70 i+.Nm Err bitreich.org 70 i+.Op Fl l Ar lines Err bitreich.org 70 i+. Err bitreich.org 70 i+.Sh DESCRIPTION Err bitreich.org 70 i+. Err bitreich.org 70 i+.Nm Err bitreich.org 70 i+is an interactive filtering and selection tool for the terminal. Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+It reads lines from standard input, and prompt for a selection. Err bitreich.org 70 i+The selected line(s) is(are) printed to standard output. Err bitreich.org 70 i+.Bl -tag -width XXXXXXXXXXXXXXXX Err bitreich.org 70 i+. Err bitreich.org 70 i+.It Fl l Ar lines Err bitreich.org 70 i+If Err bitreich.org 70 i+.Ar lines Err bitreich.org 70 i+is 0 or if Err bitreich.org 70 i+.Fl l Err bitreich.org 70 i+is not set, Err bitreich.org 70 i+the items are displayed in an horizontal list. Err bitreich.org 70 i+Otherwise, in a vertical list of at most Err bitreich.org 70 i+.Ar lines Err bitreich.org 70 i+lines. Err bitreich.org 70 i+.El Err bitreich.org 70 i+. Err bitreich.org 70 i+.Ss Selection control Err bitreich.org 70 i+. Err bitreich.org 70 i+An active selection is highlighted, and can be controlled with keybindings. Err bitreich.org 70 i+.Bl -tag -width XXXXXXXXXXXXXXX Err bitreich.org 70 i+. Err bitreich.org 70 i+.It Ic ^P Ns , Ic ^N Err bitreich.org 70 i+Move selection to the previous/next item. Err bitreich.org 70 i+. Err bitreich.org 70 i+.It Ic ^M Ns , Ic ^J Ns , Ic Enter Err bitreich.org 70 i+Print the selection to the standard output, and exit 0. Err bitreich.org 70 i+. Err bitreich.org 70 i+.It Ic ^Y Err bitreich.org 70 i+Print the selection to the standard output but Err bitreich.org 70 i+.Sy continue running . Err bitreich.org 70 i+.El Err bitreich.org 70 i+. Err bitreich.org 70 i+.Ss Input handling Err bitreich.org 70 i+. Err bitreich.org 70 i+As printable keys are entered, the selection is filtered to match every Err bitreich.org 70 i+word from the input. Err bitreich.org 70 i+.Bl -tag -width XXXXXXXXXXXXXXX Err bitreich.org 70 i+. Err bitreich.org 70 i+.It Ic ^H Ns , Ic Bakcspace Err bitreich.org 70 i+Remove last character from current input. Err bitreich.org 70 i+. Err bitreich.org 70 i+.It Ic ^W Err bitreich.org 70 i+Remove last word from current input. Err bitreich.org 70 i+. Err bitreich.org 70 i+.It Ic ^U Err bitreich.org 70 i+Remove the whole input string. Err bitreich.org 70 i+. Err bitreich.org 70 i+.It Ic ^I Ns , Ic Tab Err bitreich.org 70 i+Fill the input with current selection. Err bitreich.org 70 i+.El Err bitreich.org 70 i+. Err bitreich.org 70 i+.Sh EXIT STATUS Err bitreich.org 70 i+. Err bitreich.org 70 i+.Ex -std Err bitreich.org 70 i+. Err bitreich.org 70 i+.Sh EXAMPLES Err bitreich.org 70 i+. Err bitreich.org 70 i+Open a bookmark from a list in a text file: Err bitreich.org 70 i+.Bd -literal -offset XX Err bitreich.org 70 i+iomenu < bookmarks-urls.txt | xargs firefox Err bitreich.org 70 i+.Ed Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+Go to a subdirectory: Err bitreich.org 70 i+.Bd -literal -offset XX Err bitreich.org 70 i+cd "$(find . -type d | iomenu)" Err bitreich.org 70 i+.Ed Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+Edit a file located in Err bitreich.org 70 i+.Ev HOME : Err bitreich.org 70 i+.Bd -literal -offset XX Err bitreich.org 70 i+EDITOR "$(find "$HOME" -type f | iomenu -l 255)" Err bitreich.org 70 i+.Ed Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+Play an audio file: Err bitreich.org 70 i+.Bd -literal -offset XX Err bitreich.org 70 i+mplayer "$(find ~/Music | iomenu)" Err bitreich.org 70 i+.Ed Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+Select a background job to attach to: Err bitreich.org 70 i+.Bd -literal -offset XX Err bitreich.org 70 i+fg "%$(jobs | iomenu | cut -c 2)" Err bitreich.org 70 i+.Ed Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+Filter "ps" output and print a process ID Err bitreich.org 70 i+.Bd -literal -offset XX Err bitreich.org 70 i+ps ax | tail -n +2 | iomenu -l 255 | sed -r 's/ *([0-9]*).*/\1/' Err bitreich.org 70 i+.Ed Err bitreich.org 70 i+. Err bitreich.org 70 i+.Sh SEE ALSO Err bitreich.org 70 i+. Err bitreich.org 70 i+.Xr dmenu 1 , Err bitreich.org 70 i+.Xr slmenu 1 , Err bitreich.org 70 i+.Xr vis-menu 1 Err bitreich.org 70 i+. Err bitreich.org 70 i+.Sh BUGS Err bitreich.org 70 i+. Err bitreich.org 70 i+.Nm Err bitreich.org 70 i+currently only support ASCII characters. Err bitreich.org 70 i+. Err bitreich.org 70 i+.Sh AUTORS Err bitreich.org 70 i+. Err bitreich.org 70 i+.Nm Err bitreich.org 70 i+was written from scratch by Err bitreich.org 70 i+.An Josuah Demangeon Aq Mt mail@josuah.net Err bitreich.org 70 i+with the help of Err bitreich.org 70 i+.Xr dmenu 1 Err bitreich.org 70 i+and Err bitreich.org 70 i+.Xr vis-menu 1 Err bitreich.org 70 i+as models. Err bitreich.org 70 1diff --git a/iomenu.c b/iomenu.c /scm/iomenu/file/iomenu.c.gph bitreich.org 70 i@@ -26,7 +26,6 @@ static char input[BUFSIZ], formatted[BUFSIZ * 8]; Err bitreich.org 70 i static int current = 0, offset = 0, prev = 0, next = 0; Err bitreich.org 70 i static int linec = 0, matchc = 0; Err bitreich.org 70 i static char **linev = NULL, **matchv = NULL; Err bitreich.org 70 i-static char *opt_p = ""; Err bitreich.org 70 i static int opt_l = 0; Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i@@ -243,7 +242,7 @@ print_screen(void) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i format(input, opt_l || matchc == 0 ? ws.ws_col : OFFSET - 3); Err bitreich.org 70 i- fprintf(stderr, "\r%s %s", opt_p, formatted); Err bitreich.org 70 i+ fprintf(stderr, "\r %s", formatted); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i@@ -409,7 +408,7 @@ input_get(void) Err bitreich.org 70 i static void Err bitreich.org 70 i usage(void) Err bitreich.org 70 i { Err bitreich.org 70 i- fputs("usage: iomenu [-l lines] [-p prompt]\n", stderr); Err bitreich.org 70 i+ fputs("usage: iomenu [-l lines]\n", stderr); Err bitreich.org 70 i Err bitreich.org 70 i exit(EXIT_FAILURE); Err bitreich.org 70 i } Err bitreich.org 70 i@@ -429,11 +428,6 @@ main(int argc, char *argv[]) Err bitreich.org 70 i if (++i >= argc || sscanf(argv[i], "%d", &opt_l) <= 0) Err bitreich.org 70 i usage(); Err bitreich.org 70 i break; Err bitreich.org 70 i- case 'p': Err bitreich.org 70 i- if (++i >= argc) Err bitreich.org 70 i- usage(); Err bitreich.org 70 i- opt_p = argv[i]; Err bitreich.org 70 i- break; Err bitreich.org 70 i default: Err bitreich.org 70 i usage(); Err bitreich.org 70 i } Err bitreich.org 70 .