
Roamer: A Plain-Text File Manager - tetraodonpuffer
https://github.com/abaldwin88/roamer
======
nieve
It's really nice to see that the author includes detailed instructions for
installing without root. It's pretty much how you'd expect it, but a lot of
software these days assumes you'll give some random library root access or
worse pipe curl to bash:

[https://github.com/abaldwin88/roamer/blob/master/doc/faq.md](https://github.com/abaldwin88/roamer/blob/master/doc/faq.md)

~~~
azag0
As a python package developer, I'd assume that being able to install with pip
in user space or in a virtual environment is a standard technique. Why
duplicate the dozens of tutorials on the internet?

~~~
jwilk
Not every potential user of roamer is a Python package developer.

~~~
richardwhiuk
But every potential user of roamer does need to have pip installed, and know
something about it...

~~~
jachee
Seems like a reasonable use-case for a brief tutorial.

------
jxy
If your EDITOR is already emacs, just use 'wdired'.

[https://www.gnu.org/software/emacs/manual/html_node/emacs/Wd...](https://www.gnu.org/software/emacs/manual/html_node/emacs/Wdired.html)

~~~
pvdebbe
wdired was a revelation on what an editor can do with capable and imaginative
developers on it.

~~~
agumonkey
Emacs mostest problem : too many features unless you spend 5 years in it

I liked that roamer has a similar idea, the name/hash lines seems very
straightforward. Also a bit of acme in it where text as a bit of meaning.

Maybe it will give wdired ideas too.

~~~
halfspin
Yes, like 'M-x calc' which gives you a very decent RPN calculator.

~~~
agumonkey
oh calc is way more than that. it's a cute CAS. And a nice RPN calc. (which I
think is simple-calc-mode actually)

Emacs also has bindat, a nice DSL to create bytes structures (for network
packets or FFI)

And that's just the vanilla distribution.. Anyway lisp.

------
pmoriarty
For things like renaming files, I use a similar utility called "qmv", from
renameutils.[1] It is super useful, and one of my most-used commands in the
terminal.

For many other file-related operations in my terminal I use Midnight
Commander.[2]

I've tried emacs' dired-mode, but I didn't see it being particularly useful
compared to Midnight Commander without a ton of time spent on configuring it
to work the way I like. I might do that sometime, but until then, Midnight
Commander already has so many useful features without any of the time
commitment or pain of virtually rewriting much of the same functionality in
emacs.

[1] - [http://www.nongnu.org/renameutils/](http://www.nongnu.org/renameutils/)

[2] - [https://www.midnight-commander.org](https://www.midnight-commander.org)

~~~
mikegerwitz
A lot of the pain with renaming files can be mitigated using brace expansion
in e.g. Bash:

    
    
      $ mv path/to/{orig,dest}.foo
      # expands into
      $ mv path/to/orig.foo path/to/dest.foo

~~~
pmoriarty
Your tip is appreciated, but that pales in comparison to what you could do
with vim or emacs and a tool like qmv when renaming files.

You could, for instance, rename by regular expressions, easily do block
selections and substitutions, use complex macros, etc. The sky is really the
limit.

Then there are unlimited undo features of modern editors, and even branching
undo histories where you can get back to a state that would be unreachable
with linear undos.

Finally, tools like qmv do sanity checking on your renaming plan, so that if
you (for example) wind up renaming two files to the same name, it'll warn you
and safely let you rename the original files and try again.

As a result of the power and safety these tools provide, I no longer rename
directly using my shell's renaming features (like the ones you describe)
except for the absolute simplest and foolproof situations. For anything more
complex, I use qmv.

~~~
mikegerwitz
I appreciate the clarification. My comfort with shell (which is one of my
primary languages for countless tasks) makes it a more viable option for me
and blinds me to the issues many people have. That's definitely not the case
for many people.

I can certainly recognize the power of what you are describing. Perhaps I'll
give it a try in the future.

Out of curiosity: what do you find are your most compelling use cases for the
tool(s)?

~~~
robenkleene
Hey Mike, I'm not the original poster, but I'm a good candidate to answer
since I'm reasonably comfortable with the shell and I've been looking for a
tool like Roamer/qmv specifically because of shortcomings in shell renaming
(or my knowledge thereof). My most common case for this is renaming a batch of
files to a different naming scheme. For example I was recently renaming 15 or
so files that were named like "08/30/2017 John Smith
478939da-b172-4952-b428-d77c4f4f6674.doc" and I wanted them all to be named
like "john-smith.doc". I did end up renaming them with the shell but through
doing something like `for i in *; do { mv $i \\`echo $i | tr '[A-Z]' '[a-z]' |
tr ' ' '-'\\` } done` (I don't have the final script anymore). Which is slower
to write and less elegant than the Roamer/qmv approach. But I'm very curious
if there's a better approach to this problem on the shell.

~~~
kaushalmodi
Emacs (w)dired can do that in a snap.

~~~
robenkleene
Yup, agree 100%! Using `wdired` was my introduction to "editor-based file-
system editing". Maintaining an emacs setup for this feature is overkill
though.

------
malkia
I'm hourly user of Midnight Commander on linux, bash.exe, cygwin, mingw,
whenever it comes.

And staunch FAR Commander supporter for Windows. I sometimes call mc from FAR
and back and forth (okay, very rarely :))

Long time ago there was PC Tools, and a program called.. yes "File Manager"
for DOS - both were single-column, yet very powerful - browsing megabytes of
text files effortless on 286 :)

back then, there was a tool that allowed direct directory manipulation -
renaming, copying, but nothing like the tool demonstrated. Thank you!

~~~
CharlesDodgson
Not to be a negative nelly, more just curiosity, but why would you use a
different file manager in windows?

~~~
malkia
Because you have the command-line + browser at the same time. You can quickly
copy, view, move files. Change quickly to folders remembered in history. Go in
archives, copy, view from there to outside. Sort by various things. Execute
directly files.

For example, if I need to run one exe, not in my PATH over some file, I have
them both in left and right window. I go to the left, type "Ctrl+F" \- e.g.
get me the full name (in this case executable), then go to the other window,
type "Ctrl+F" again - get me the file to become first argument on the
executable and run.

Ctrl+O (in midnight commander too), switches to almost fullscreen command-line
- so in a way it's always better than just a command-line.

Search in Files, compare dirs, and many other features (there are tons of
plugins).

Also checking SMB shares, FTP, System Processes (though I prefer SysInternals
ProcExp.exe there)

I use the Windows Explorer (the file manager) only for very few things -
certain context menu items, some forms of preview. It's always there by typing
"explorer ." from the current folder.

------
jmcphers
If you're into plain-text file managers, and vim, you might like Ranger[0].
Like Roamer, it's written in Python.

[0] [http://ranger.nongnu.org/](http://ranger.nongnu.org/)

~~~
deltaprotocol
Ranger includes the fantastic `:bulkrename` which allows you to safely edit
the marked files with _your editor of choice_.

------
cyphar
I really like Ranger[1] as a TUI file manager. It's quite full featured
(supporting previews of most things -- even images with libcaca) and has a
vim-like interface. It also has `:bulkrename` to allow you to rename a set of
files with whatever $EDITOR you want.

[1]: [http://ranger.nongnu.org/](http://ranger.nongnu.org/)

------
ga2arch
this one has a ton of features
[https://github.com/FedeDP/ncursesFM](https://github.com/FedeDP/ncursesFM)
well written and commented C code.

full list of features: [https://github.com/FedeDP/ncursesFM/wiki/Getting-
Started](https://github.com/FedeDP/ncursesFM/wiki/Getting-Started)

just to name a few advanced ones:

* Search support: it will search your string in current directory tree. It can search your string inside archives too.

* Basic print support through libcups.

* Extract/compress files/folders through libarchive.

* Powermanagement inhibition while processing a job (eg: while pasting a file) to avoid data loss.

* Internal udisks2 monitor, to poll for new devices. It can automount new connected devices too. Device monitor will list only mountable devices, eg: dvd reader will not be listed until a cd/dvd is inserted.

* Drives/usb sticks/ISO files (un)mount through udisks2.

* Distro package files installation through packagekit.

~~~
s_ngularity
That file manager might be excellent, but did you look at the link? This FM
uses your text editor to manage files, which is totally different from a
ncurses interface.

------
polm23
vidir is another one of these. Despite the name it works with any EDITOR.

[https://github.com/trapd00r/vidir](https://github.com/trapd00r/vidir)

Seems like the main difference compared to Roamer is that it just uses
numbered lines instead of hashes.

~~~
lolikoisuru
vidir is included in moreutils which is packaged for pretty much every distro
out there.

[http://joeyh.name/code/moreutils/](http://joeyh.name/code/moreutils/)

~~~
jwilk
[https://github.com/trapd00r/vidir](https://github.com/trapd00r/vidir) looks
like a fork of moreutils' vidir.

------
yakult
Quite a dangerous tool.

What happens if I copypaste some random text into the file and press save, by
mistake? Are there mechanisms to limit the damage?

Also, when I remove a hash and save, the file is gone permanently, even if I
paste it elsewhere, right?

~~~
userbinator
No more "dangerous" than any other file manager, because that's what it was
designed to do.

------
janci
Does it work with Sublime Text? Its multi-cursor abilities would be useful
here.

~~~
JosephRedfern
I don't see why it wouldn't -- you might need to use the '-w' flag to make
Sublime block until the file is closed (i.e. "export EDITOR='subl -w'")

------
dnr
I wrote my own one of these too (in 30 lines of shell):

[http://dnr.im/tech/articles/mvdir/](http://dnr.im/tech/articles/mvdir/)

(for renaming and deleting only)

------
stevewillows
I love stuff like this. I'm a fairly basic linux user -- mainly basic server
stuff. Since I moved to OSX a few years back (from Windows) for my main
system, I've been trying to go CLI with as much as possible. Fortunately, brew
has almost everything I've wanted to far.

Renaming a lot of files is something I do on a regular basis, so this is
another piece I can ditch the trackpad for.

------
erickj
Emacs Dired mode is my go to here

------
varunramesh
This is similar to hg histedit, where the "ui" is simply a text editor.

------
xaduha
vifm works for me.

~~~
jgord
thx for the tip. just tried it .. very vim, very nice.

------
shmerl
Midnight Commander is pretty good.

------
antihero
Anyone else having issues with EDITOR=code ? It seems to open the files blank.

~~~
irth
maybe it's because the code binary is exiting right after it starts the
editor, and roamer deletes the file

try EDITOR="code -w". It'll open a new instance, in the foreground

~~~
antihero
Well that sort of worked, however it seems to wait for the whole VS Code
process to end which obviously is a pain if you have a bunch of stuff open,
which is a shame.

------
evacchi
reminds me of Oscar's Renamer
[http://www.mediachance.com/free/renamer.htm](http://www.mediachance.com/free/renamer.htm)

------
gjjrfcbugxbhf
Better or worse than ranger?

