jarun/nnn

ToDo list

Closed this issue ยท 46 comments

jarun commented

Rolled from #472.

For next release

  • unlimited bookmarks and plugin keys
  • config NNN_OPTS to specify binary options to nnn
  • config NNN_MCLICK to emulate configurable key
  • toggle selection on right click
  • ignore hard links when calculating disk usage
  • dim (hard/sym) link names (symlinks have @)
  • more special keys at empty filter prompt in nav-as-you-type
  • key > to export file list
  • option -F to show fortune in help and settings screen
  • option -T to specify sort order (obsoletes -v)
  • option to clear sort order
  • key T to change time type (access/change/mod)
  • .nmv - internal fully-functional batch renamer plugin
  • make var O_NOBATCH to disable native batch renamer
  • nuke & imgview - open all images in directory sxiv
  • nuke - open log files in vi
  • plugin x2sel - system clipboard to selection copier
  • plugin fzy to cd using z database
  • create new context on TAB without prompt
  • move to next entry on current file delete
  • on single file copy/move, select the copied/moved file
  • readline history file usage disabled; use option -f to enable
  • use s in status bar to indicate selection in progress
  • make var O_NOMOUSE to disable mouse support
  • do not store NNN_TRASH and -Q in config/session
  • add sample .desktop file for XDG compatible DEs
  • fix PCRE case-insensitive regex search
  • fix static package generation
  • fix broken abort message when started in du-mode
  • fix filter lost on context switch in non nav-as-you-type mode
  • fix broken readline prompt

Proposed features and tasks (up for grabs)

  • support long press to open files (@0xACE)
  • support pre-defined filters like bookmarks
  • update the nnn.vim plugin to show a persistent bar (mcchrish/nnn.vim#46)
  • a video exploring nnn plugins

Anything else which would add value (please discuss in this thread).

Please consider configuration of colors like dircolors. Blue on black is really bad ;-)

jarun commented

@mkrusemark you can change the default color easily: https://github.com/jarun/nnn/wiki#context-color

It's not only about the context but directory and file names. A functionality like dircolors would be highly appreciated.

jarun commented

nnn is a minimal file manager by design: https://github.com/jarun/nnn/wiki#design-factors

It supports 8-bit colors. If you are looking for a way to find files by extension use filters or sort by extension.

More that 8-bit colors will not be supported in nnn. There are plenty of good file managers which already do that. Pick one of those.

8-bit is sufficient. I just would like to change the color of file names and directories to ones that fit to my black background. The full feature set of dircolors is not necessary.

I think a black screen is standard but the dark blue color of file and directory names is almost impossible to read.

jarun commented

I just would like to change the color of file names and directories to ones that fit to my black background

file names

That has nothing to do with nnn! You'll have to set the text color in you terminal emulator for files (nnn doesn't specify any color for that).

directories

This can be set with NNN_COLORS. The color of the dir is the color of the dirs in that context.

@jarun It would be nice if an option or environment for listing files according to modification time is available. I like to list the files and directories in modification time order and each time I open nnn I have to press "t" twice to make it active. That becomes annoying after a while. Is there a way to make it automatic?

jarun commented

@byulen

That becomes annoying after a while.

That's applicable for all the sort orders. Shall we have program options for all of them?

Considering that somebody else might want the files sorted other way, it would be nice to have that option for all sort orders.

0xACE commented

Shall we have program options for all of them?

I'd wager yes, a option to change sorting order would be nice.

Btw another question, sometimes i hit tt to sort by time, but what is the intended way to restore sorting to alphabetical order? I find it difficult to know which tX combination i should hit to go back to alphabetical...

jarun commented

I'd wager yes, a option to change sorting order would be nice.

We are talking of multiple options for each sorting order. I don't think we can have so many options.

Btw another question, sometimes i hit tt to sort by time, but what is the intended way to restore sorting to alphabetical order?

Press tt again. The key t (the first one) says very clearly sort toggles.

jarun commented

@byulen we can't have so many redundant options and we can't give preference to time sort over others. Please use the sort toggle key as it's designed to be used.

@jarun Thanks for answering. There are only 8 sort options that I see from the wiki "T,A,S,E,V,R,du,au". I don't understand what do you mean by many. Furthermore, I think that having a sort option is more important for a file manager than say having colored contexts options which is kind of decoration (not that colored context is not useful though). With all my respect, minimal should not mean lack of options. I very much like the current form of nnn and will continue to use it, thanks for this nice file manager. I just wanted to contribute by stating a missing part that I think is important.

jarun commented

@byulen @0xACE @maximbaz

I think I have a better way to do it. What if we provide an option which will make nnn ask the sort order at the start?

jarun commented

Or, even better, an option that will take the value of the input we provide on t.

0xACE commented

? From what i can tell we are using getopt(), and it supports having commandline flags utilizing arguments.

My suggestion would be that we introduce a command line argument which sets default sort order.
example: -s t would sort by time. (it doesn't have to be -s im just using it as an example).

Or did I misunderstand the question?

Press tt again. The key t (the first one) says very clearly sort toggles.

Yeah the problem for me is there are times when i forget if i used ta or td. not a big deal, i was just wondering if we had tn to sort by none or something

jarun commented

Or did I misunderstand the question?

Your understanding is correct.

I am planning to use -T and remove -v. I will leave -S as many people would be using nnn as a du tool already.

jarun commented

This is implemented at commit 85379a7.

jarun commented

@0xACE and @maximbaz we need to test the new batch renamer plugin before making the next release. My tests went well but I need more independent results.

It works for me ๐Ÿ‘

I'm still not sure how I feel about plugins though, you want to test them before releases, but they aren't distributed as part of the release, and users will install random version of plugin and expect that it will work? You will be getting bug reports like "I downloaded batch renamer plugin on date X, it doesnt work with version Y of nnn". What if right after releasing 3.1 you make a breaking change in master and correspondingly update batch renamer plugin, so that plugin in master only works with nnn from master, but not from the last release?

I propose we update Makefile and put all plugins in /usr/share/nnn/plugins during make install, and then you can say that plugins are guaranteed to work with your specific version of nnn only if they are symlinked from /usr/share/nnn/plugins and not downloaded from Github on a random day.

Maybe batch renamer plugin shouldn't pollute stdout? After I exit nnn I don't really want to see these lines:

$ ./nnn
'./LICENSE' -> './LICENS'
'./Makefile' -> './Makefile2'
jarun commented

users will install random version of plugin and expect that it will work?

Plugins are not shipped. They are indicative. In-plugin docs are a must read. Maybe we need to document these clearly. So far we did not have any nnn-integration related or nnn version specific issue because nnn is almost decoupled from plugins. What we pass from nnn when we invoke a plugin is well-documented and it's not going to change.

Maybe batch renamer plugin shouldn't pollute stdout?

@KlzXS can we have conditional logging?

this is not really the place to ask but i didnt want to create a whole new issue for this question. what is the best way to invert a selection with nnn? When encoding my media i tack "-new" onto the file name and would like to be able to select those files with nnn and then invert that selection to be left with just the files that dont have "-new" in the filename. Could this be built into nnn or is there another easy way to achieve this?

thanks.

jarun commented

@rwtallant13 it's on master: t followed by r.

that just reverses the sort order right?

What I'm trying to do is something like - select all files that contain '-new' but then invert that selection so i have all files that don't contain '-new' selected, which I can then delete.

jarun commented

If you mean you want to edit a selection manually:

Select the files, then press E. Then edit those in your editor. To sort in vim: https://vim.fandom.com/wiki/Sort_lines

nnn doesn't list only selected files because they can be from different directories.

Otherwise you can also use the list mode in nnn where you find the files ending with -new and feed them to nnn.

I think I was going about it wrong. What about filtering for files in your dir that do not contain a certain string? so if i wanted to see all files that don't have the string '-new', how would i do this? i tried using regex ^(?!new) but this didn't work for me.

Again, thanks, I'm sure I am missing something obvious here.

KlzXS commented

@KlzXS can we have conditional logging?

See #497.

Again, thanks, I'm sure I am missing something obvious here.

nnn -g ๐Ÿ™‚

jarun commented

nnn -g

I tested it. The GNU regex doesn't work with the exclusion pattern. The PCRE one works.

I use with "cp mv progress", but how can I copy dir and set "Yes for all" for overwrite?

0xACE commented

I use with "cp mv progress", but how can I copy dir and set "Yes for all" for overwrite?

I'm busy right now so responses from me may be spotty.

I don't think we have this implemented in origin/master. You should be able to do it in a plugin though. Feel free to share it with us. (There may even be such a plugin, but I don't tinker much with the supplied plugins)

May I suggest integration with Googles OSS-fuzz project for continuous fuzz-testing? I can take care of the integration process and fuzzers and would need to commit the fuzzers and a seed corpus to nnn's repository.

jarun commented

integration with Googles OSS-fuzz project

@KlzXS @maximbaz @0xACE opinion?

Note: we already have clang-tidy check in place in CI.

0xACE commented

Sure if you think it's worth implementing it. But I remain neutral, either someone implements it or not...

jarun commented

I am just afraid of security paranoids. They won't contribute a single line of code and expect you to meet their demands.

I had an experience at a very early stage of this project at issue #29. None of them contributed any code. One was polite enough to respond to my request, but the other one just left with a question. I would like to avoid this type.

jarun commented

And they have an advantage. We have a public project. So their self-stylized opinion has enough potential to show your project in bad light even if you choose to ignore. As if it's your duty to handle issues pointed out by the universe using up your free time.

@jarun Fair enough, completely understandable. If you change your mind, feel free to ping me.

0xACE commented

Yeah I get it, currently I can't even find the time/energy to fix the problem I promised 1 month ago, so piling extras onto a project I deal with on my free time is not very appealing to me at this time.

I found this plugin from watching Luke Smith's video.

In that video he did things like:

  • p to view file in $PAGER
  • y to list selection

Have those features been removed? They seem quite useful, especially being able to list the current selection...

jarun commented

@nwaywood that video is years old. On later you have open in editor, but no open in pager. List edit selection is E. Please look up the help with ?.

Yes I am aware of open in editor, I personally would still prefer a $PAGER option as well since a pager is quicker to open than an editor and thus better for a quick preview of a file.

Same logic applies to list selection, viewing the selection list in a $PAGER is quicker than viewing it in $EDITOR.

Perhaps $PAGER support could be a compile out feature for those that don't want it?

jarun commented

@nwaywood see https://github.com/jarun/nnn/tree/master/plugins#some-useful-key-command-examples

specially the p key. This is what you need to use. We can't add compile out features of every small thing.

Ah yes that's exactly what I'm after! Thanks. Not ideal it needing to be two key presses instead of one but I understand why you wanted to remove the functionality from the core package.

jarun commented

@nwaywood previews are available in master.