aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: fe82d1c97f18b54707a0407df101b739624dd8ff (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
## noice

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).

### Table of Contents

- [Introduction](#introduction)
- [Why fork?](#why-fork)
- [Default features](#default-features)
- [Fork toppings](#fork-toppings)
- [Installation](#installation)
- [Usage](#usage)
- [Keyboard shortcuts](#keyboard-shortcuts)
- [Help](#help)
- [Change file associations](#change-file-associations)

### 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.

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)).

Have fun with it! PRs are welcome. Check out [#1](https://github.com/jarun/noice/issues/1).

### Why fork?

I chose to fork noice 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.
- 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

- Super-easy navigation
- Open files with default-associated programs
- Jump to home directory
- Filter contents in current directory
- Show/hide hidden files
- Sort entries by time modified (newest to oldest)
- Spawn a shell in current directory
- Run `top`
- Open a file with `vim` or `less`

### Fork toppings

- Behaviour and navigation
  - Optional detailed view with file type and size (default: disabled)
  - 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)
  - Sort entries by file size (largest to smallest)
- File associations
  - Environment variable `NOICE_OPENER` to override all associations and open all files with your desktop environments default file opener. Examples:

        export NOICE_OPENER=xdg-open
        export NOICE_OPENER=gnome-open
        export NOICE_OPENER=gvfs-open
  - Selective file associations (ignored if `NOICE_OPENER` is set):
    - Associate plain text files with vim (using `file` command)
    - Remove video file associations (to each his own favourite video player)
    - Associate common audio mimes with lightweight [fmedia](http://fmedia.firmdev.com/)
    - Associate PDF files with [zathura](https://pwmt.org/projects/zathura/)
    - Removed `less` as default file opener
    - Use environment variable `NOICE_FALLBACK_OPENER` to open other non-associated files
- Compilation
  - Use `-O3` for compilation, fixed warnings
  - Added compilation flag `-march=native`
  - Remove generated config.h on `make clean`

### Installation

noice 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:

    $ make
    $ sudo make install
No plans of packaging at the time.

### Usage

Start noice (default: current directory):

    $ noice [path_to_dir]
`>` indicates the currently selected entry.

### Keyboard shortcuts

| Key | Function |
| --- | --- |
| `Down`, `j`, `Ctrl-n` | next entry |
| `Up`, `k`, `Ctrl-p` | previous entry |
| `>`, `Enter`, `l` | open file or enter dir |
| `<`, `Backspace`, `h` | parent dir |
| `Page Down`, `Ctrl-d` | one page down |
| `Page Up`, `Ctrl-u` | one page up |
| `Home`, `Ctrl-a`, `^` | jump to first dir entry |
| `End`, `Ctrl-e`, `$` | jump to last dir entry |
| `~` | jump to home dir |
| `/`, `&` | filter dir contents |
| `c` | show change dir prompt |
| 'd' | toggle detail view |
| `.` | toggle hide dot files |
| `s` | toggle sort by file size |
| `t` | toggle sort by modified time |
| `!` | spawn a shell in current dir |
| `e` | edit entry in `vim` |
| `p` | open entry with `less` pager |
| `z` | run `top` |
| `Ctrl-l` | redraw window |
| `q` | quit noice |

### Help

    $ man noice

### 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.