Rename project to nnn (Noice is Not Noice)

This commit is contained in:
Arun Prakash Jana 2017-03-30 23:55:30 +05:30
parent c42790aa18
commit 8775a52779
No known key found for this signature in database
GPG key ID: A75979F35C080412
4 changed files with 61 additions and 55 deletions

View file

@ -8,10 +8,10 @@ MANPREFIX = $(PREFIX)/man
CFLAGS = -O3 -march=native CFLAGS = -O3 -march=native
LDLIBS = -lcurses LDLIBS = -lcurses
DISTFILES = noice.c strlcat.c strlcpy.c util.h config.def.h\ DISTFILES = nnn.c strlcat.c strlcpy.c util.h config.def.h\
noice.1 Makefile README LICENSE nnn.1 Makefile README.md LICENSE
OBJ = noice.o strlcat.o strlcpy.o OBJ = nnn.o strlcat.o strlcpy.o
BIN = noice BIN = nnn
all: $(BIN) all: $(BIN)
@ -19,7 +19,7 @@ $(BIN): $(OBJ)
$(CC) $(CFLAGS) -o $@ $(OBJ) $(LDFLAGS) $(LDLIBS) $(CC) $(CFLAGS) -o $@ $(OBJ) $(LDFLAGS) $(LDLIBS)
strip $(BIN) strip $(BIN)
noice.o: util.h config.h nnn.o: util.h config.h
strlcat.o: util.h strlcat.o: util.h
strlcpy.o: util.h strlcpy.o: util.h
@ -37,11 +37,11 @@ uninstall:
rm -f $(DESTDIR)$(MANPREFIX)/man1/$(BIN).1 rm -f $(DESTDIR)$(MANPREFIX)/man1/$(BIN).1
dist: dist:
mkdir -p noice-$(VERSION) mkdir -p nnn-$(VERSION)
cp $(DISTFILES) noice-$(VERSION) cp $(DISTFILES) nnn-$(VERSION)
tar -cf noice-$(VERSION).tar noice-$(VERSION) tar -cf nnn-$(VERSION).tar nnn-$(VERSION)
gzip noice-$(VERSION).tar gzip nnn-$(VERSION).tar
rm -rf noice-$(VERSION) rm -rf nnn-$(VERSION)
clean: clean:
rm -f config.h $(BIN) $(OBJ) noice-$(VERSION).tar.gz rm -f config.h $(BIN) $(OBJ) nnn-$(VERSION).tar.gz

View file

@ -1,13 +1,13 @@
## noice ## nnn
A fork of the [noice](http://git.2f30.org/noice/) file browser to make it more friendly towards major distros (which `suck more` by some standards). Noice is Not Noice, a noicer fork...
### Table of Contents ### Table of Contents
- [Introduction](#introduction) - [Introduction](#introduction)
- [Why fork?](#why-fork) - [Why fork?](#why-fork)
- [Default features](#default-features) - [Original features](#original-features)
- [Fork toppings](#fork-toppings) - [nnn toppings](#nnn-toppings)
- [Installation](#installation) - [Installation](#installation)
- [Usage](#usage) - [Usage](#usage)
- [Keyboard shortcuts](#keyboard-shortcuts) - [Keyboard shortcuts](#keyboard-shortcuts)
@ -18,19 +18,19 @@ A fork of the [noice](http://git.2f30.org/noice/) file browser to make it more f
### Introduction ### Introduction
noice is a blazing-fast terminal file browser with easy keyboard shortcuts for navigation, opening files and running tasks. noice is developed with terminal based systems in mind. However, the incredible user-friendliness and speed make it a perfect utility on modern distros. Navigate to `/usr/bin` from your regular file browser and noice to feel the difference. nnn is a fork of [noice](http://git.2f30.org/noice/), a blazing-fast terminal file browser with easy keyboard shortcuts for navigation, opening files and running tasks. It is developed with terminal based systems in mind. However, the incredible user-friendliness and speed make it a perfect utility on modern distros.
The only issue with noice is hard-coded file association. There is no config file (better performance and simpler to maintain) and you have to modify the source to change associations (see [how to change file associations](#change-file-associations)). This fork solves the problem by adding the flexibility of using the default desktop opener at runtime. There are several other improvements too (see [fork-toppings](#fork-toppings)). The only issue with noice is hard-coded file associations. There is no config file (better performance and simpler to maintain) and one has to modify the source to change associations (see [how to change file associations](#change-file-associations)). nnn solves the problem by adding the flexibility of using the default desktop opener at runtime. There are several other improvements too (see [fork-toppings](#fork-toppings)).
Have fun with it! PRs are welcome. Check out [#1](https://github.com/jarun/noice/issues/1). Have fun with it! PRs are welcome. Check out [#1](https://github.com/jarun/nnn/issues/1).
### Why fork? ### Why fork?
I chose to fork noice because: I chose to fork because:
- one can argue my approach deviates from the goal of the original project - keep the utility `suckless`. In my opinion evolution is the taste of time. - one can argue my approach deviates from the goal of the original project - keep the utility `suckless`. In my opinion evolution is the taste of time.
- I would like to have a bit of control on what features are added in the name of desktop integration. A feature-bloat is the last thing in my mind. - I would like to have a bit of control on what features are added in the name of desktop integration. A feature-bloat is the last thing in my mind.
### Default features ### Original features
- Super-easy navigation - Super-easy navigation
- Open files with default-associated programs - Open files with default-associated programs
@ -42,7 +42,7 @@ I chose to fork noice because:
- Run `top` - Run `top`
- Open a file with `vim` or `less` - Open a file with `vim` or `less`
### Fork toppings ### nnn toppings
- Behaviour and navigation - Behaviour and navigation
- Detail view (default: disabled) with: - Detail view (default: disabled) with:
@ -55,20 +55,20 @@ I chose to fork noice because:
- Case-insensitive alphabetic content listing instead of upper case first - Case-insensitive alphabetic content listing instead of upper case first
- Roll over at the first and last entries of a directory (with Up/Down keys) - Roll over at the first and last entries of a directory (with Up/Down keys)
- Sort entries by file size (largest to smallest) - Sort entries by file size (largest to smallest)
- Shortcut to invoke file name copier (set using environment variable `NOICE_COPIER`) - Shortcut to invoke file name copier (set using environment variable `NNN_COPIER`)
- File associations - File associations
- Environment variable `NOICE_OPENER` to override all associations and open all files with your desktop environment's default file opener. Examples: - Environment variable `NNN_OPENER` to override all associations and open all files with your desktop environment's default file opener. Examples:
export NOICE_OPENER=xdg-open export NNN_OPENER=xdg-open
export NOICE_OPENER=gnome-open export NNN_OPENER=gnome-open
export NOICE_OPENER=gvfs-open export NNN_OPENER=gvfs-open
- Selective file associations (ignored if `NOICE_OPENER` is set): - Selective file associations (ignored if `NNN_OPENER` is set):
- Associate plain text files with vim (using `file` command) - Associate plain text files with vim (using `file` command)
- Remove video file associations (to each his own favourite video player) - Remove video file associations (to each his own favourite video player)
- Associate common audio mimes with lightweight [fmedia](http://fmedia.firmdev.com/) - Associate common audio mimes with lightweight [fmedia](http://fmedia.firmdev.com/)
- Associate PDF files with [zathura](https://pwmt.org/projects/zathura/) - Associate PDF files with [zathura](https://pwmt.org/projects/zathura/)
- Removed `less` as default file opener - Removed `less` as default file opener
- Use environment variable `NOICE_FALLBACK_OPENER` to open other non-associated files - Use environment variable `NNN_FALLBACK_OPENER` to open other non-associated files
- Compilation - Compilation
- Use `-O3` for compilation, fixed warnings - Use `-O3` for compilation, fixed warnings
- Added compilation flag `-march=native` - Added compilation flag `-march=native`
@ -77,9 +77,9 @@ I chose to fork noice because:
### Installation ### Installation
noice needs a curses implementation and standard libc. nnn needs a curses implementation and standard libc.
Download the [latest master](https://github.com/jarun/noice/archive/master.zip) or clone this repository. Compile and install: Download the [latest master](https://github.com/jarun/nnn/archive/master.zip) or clone this repository. Compile and install:
$ make $ make
$ sudo make install $ sudo make install
@ -87,9 +87,9 @@ No plans of packaging at the time.
### Usage ### Usage
Start noice (default: current directory): Start nnn (default: current directory):
$ noice [path_to_dir] $ nnn [path_to_dir]
`>` indicates the currently selected entry. `>` indicates the currently selected entry.
### Keyboard shortcuts ### Keyboard shortcuts
@ -117,7 +117,7 @@ Start noice (default: current directory):
| `z` | run `top` | | `z` | run `top` |
| `Ctrl-k` | invoke file name copier | | `Ctrl-k` | invoke file name copier |
| `Ctrl-l` | redraw window | | `Ctrl-l` | redraw window |
| `q` | quit noice | | `q` | quit |
### File type abbreviations ### File type abbreviations
@ -135,11 +135,11 @@ The following abbreviations are used in the detail view:
### Help ### Help
$ man noice $ man nnn
### Copy current file path to clipboard ### Copy current file path to clipboard
noice can pipe the absolute path of the current file to a copier script. For example, you can use `xsel` on Linux or `pbcopy` on OS X. nnn can pipe the absolute path of the current file to a copier script. For example, you can use `xsel` on Linux or `pbcopy` on OS X.
Sample Linux copier script: Sample Linux copier script:
@ -147,12 +147,12 @@ Sample Linux copier script:
echo -n $1 | xsel --clipboard --input echo -n $1 | xsel --clipboard --input
export `NOICE_OPENER`: export `NNN_OPENER`:
export NOICE_COPIER="/home/vaio/copier.sh" export NNN_COPIER="/home/vaio/copier.sh"
Start noice and use `Ctrl-k` to copy the absolute path (from `/`) of the file under the cursor to clipboard. Start nnn and use `Ctrl-k` to copy the absolute path (from `/`) of the file under the cursor to clipboard.
### Change file associations ### Change file associations
If you want to set custom applications for certain mime types, or change the ones set already (e.g. vim, fmedia, zathura), modify the `assocs` structure in [config.def.h](https://github.com/jarun/noice/blob/master/config.def.h) (it's easy). Then re-compile and install. If you want to set custom applications for certain mime types, or change the ones set already (e.g. vim, fmedia, zathura), modify the `assocs` structure in [config.def.h](https://github.com/jarun/nnn/blob/master/config.def.h) (it's easy). Then re-compile and install.

View file

@ -1,11 +1,11 @@
.Dd August 21, 2016 .Dd August 21, 2016
.Dt NOICE 1 .Dt NNN 1
.Os .Os
.Sh NAME .Sh NAME
.Nm noice .Nm nnn
.Nd small file browser .Nd small file browser
.Sh SYNOPSIS .Sh SYNOPSIS
.Nm noice .Nm nnn
.Op Ar dir .Op Ar dir
.Sh DESCRIPTION .Sh DESCRIPTION
.Nm .Nm
@ -105,24 +105,30 @@ files.
The SHELL, EDITOR and PAGER environment variables take precedence The SHELL, EDITOR and PAGER environment variables take precedence
when dealing with the !, e and p commands respectively. when dealing with the !, e and p commands respectively.
.Pp .Pp
\fBNOICE_OPENER:\fR set to your desktop environment's default \fBNNN_OPENER:\fR set to your desktop environment's default
mime opener to override all custom mime associations. mime opener to override all custom mime associations.
.br .br
Examples: xdg-open, gnome-open, gvfs-open. Examples: xdg-open, gnome-open, gvfs-open.
.Pp .Pp
\fBNOICE_FALLBACK_OPENER:\fR set to your desktop environment's default \fBNNN_FALLBACK_OPENER:\fR set to your desktop environment's default
mime opener to use as a fallback when no association is set for a file mime opener to use as a fallback when no association is set for a file
type. Custom associations are listed in the EXAMPLES section below. type. Custom associations are listed in the EXAMPLES section below.
.Pp
\fBNNN_COPIER:\fR set to a clipboard copier script. For example, on Linux:
.Bd -literal
#!/bin/sh
echo -n $1 | xsel --clipboard --input
.Sh EXAMPLES .Sh EXAMPLES
The following example shows one possible configuration for The following example shows one possible configuration for
file associations which is also the default if environment file associations which is also the default if environment
variable NOICE_OPENER is not set: variable NNN_OPENER is not set:
.Bd -literal .Bd -literal
struct assoc assocs[] = { struct assoc assocs[] = {
{ "\\.(c|cpp|h|txt|log)$", "vim" }, { "\\.(c|cpp|h|txt|log)$", "vim" },
{ "\\.pdf$", "zathura" }, { "\\.pdf$", "zathura" },
{ "\\.sh$", "sh" }, { "\\.sh$", "sh" },
}; };
Plain text files are opened with vim. Plain text files are opened with vim.
.br .br
Any other file types are opened with the 'xdg-open' command. Any other file types are opened with the 'xdg-open' command.
@ -135,4 +141,4 @@ If you are using urxvt you might have to set backspacekey to DEC.
.Pp .Pp
** The current non-mainstream version is a modified one patched by Arun Prakash Jana <engineerarun@gmail.com>. ** The current non-mainstream version is a modified one patched by Arun Prakash Jana <engineerarun@gmail.com>.
.br .br
More details: https://github.com/jarun/noice More details: https://github.com/jarun/nnn

View file

@ -897,7 +897,7 @@ nochange:
spawn(copier, abspath, NULL); spawn(copier, abspath, NULL);
printmsg(abspath); printmsg(abspath);
} else if (!copier) } else if (!copier)
printmsg("NOICE_COPIER is not set"); printmsg("NNN_COPIER is not set");
goto nochange; goto nochange;
case SEL_RUN: case SEL_RUN:
run = xgetenv(env, run); run = xgetenv(env, run);
@ -960,13 +960,13 @@ main(int argc, char *argv[])
} }
/* Get the default desktop mime opener, if set */ /* Get the default desktop mime opener, if set */
opener = getenv("NOICE_OPENER"); opener = getenv("NNN_OPENER");
/* Get the fallback desktop mime opener, if set */ /* Get the fallback desktop mime opener, if set */
fallback_opener = getenv("NOICE_FALLBACK_OPENER"); fallback_opener = getenv("NNN_FALLBACK_OPENER");
/* Get the default copier, if set */ /* Get the default copier, if set */
copier = getenv("NOICE_COPIER"); copier = getenv("NNN_COPIER");
signal(SIGINT, SIG_IGN); signal(SIGINT, SIG_IGN);