summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorqkzk <qkzk@users.noreply.github.com>2023-03-25 15:53:46 +0100
committerGitHub <noreply@github.com>2023-03-25 15:53:46 +0100
commit64d88ee791ee544aea618dd1795c5cf90cd51b68 (patch)
tree6792f620f02ad878f1ba6f25dd681c70903182ac
parent6361846412ac39e906ae5700960da94e219f824c (diff)
parentb1afb80b43133c25a89d4be5fb74230024d150f3 (diff)
Merge pull request #76 from qkzk/v0.1.20-devv0.1.20
V0.1.20 dev
-rw-r--r--Cargo.lock376
-rw-r--r--Cargo.toml5
-rw-r--r--config_files/fm/tuis.yaml2
-rw-r--r--development.md33
-rw-r--r--readme.md73
-rw-r--r--src/action_map.rs10
-rw-r--r--src/bulkrename.rs46
-rw-r--r--src/cli_info.rs74
-rw-r--r--src/completion.rs14
-rw-r--r--src/compress.rs17
-rw-r--r--src/config.rs12
-rw-r--r--src/constant_strings_paths.rs2
-rw-r--r--src/copy_move.rs9
-rw-r--r--src/cryptsetup.rs349
-rw-r--r--src/decompress.rs22
-rw-r--r--src/event_dispatch.rs10
-rw-r--r--src/event_exec.rs720
-rw-r--r--src/fileinfo.rs98
-rw-r--r--src/fm_error.rs190
-rw-r--r--src/git.rs14
-rw-r--r--src/help.rs39
-rw-r--r--src/iso.rs173
-rw-r--r--src/keybindings.rs25
-rw-r--r--src/lib.rs6
-rw-r--r--src/log.rs6
-rw-r--r--src/main.rs22
-rw-r--r--src/marks.rs25
-rw-r--r--src/mocp.rs26
-rw-r--r--src/mode.rs18
-rw-r--r--src/mount_help.rs27
-rw-r--r--src/nvim.rs25
-rw-r--r--src/opener.rs105
-rw-r--r--src/password.rs125
-rw-r--r--src/preview.rs270
-rw-r--r--src/shell_menu.rs19
-rw-r--r--src/skim.rs47
-rw-r--r--src/status.rs123
-rw-r--r--src/tab.rs53
-rw-r--r--src/term_manager.rs126
-rw-r--r--src/trash.rs83
-rw-r--r--src/tree.rs22
-rw-r--r--src/utils.rs17
42 files changed, 2214 insertions, 1244 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 0dfff71..298b494 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -81,6 +81,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
[[package]]
+name = "async-trait"
+version = "0.1.66"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b84f9ebcc6c1f5b8cb160f6990096a5c127f423fcb6e1ccc46c370cbdfb75dfc"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
name = "atty"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -164,6 +175,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
[[package]]
+name = "bytes"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
+dependencies = [
+ "byteorder",
+ "iovec",
+]
+
+[[package]]
+name = "bytes"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+
+[[package]]
name = "bzip2"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -817,7 +844,7 @@ dependencies = [
[[package]]
name = "fm-tui"
-version = "0.1.19"
+version = "0.1.20"
dependencies = [
"anyhow",
"chrono",
@@ -826,13 +853,15 @@ dependencies = [
"copypasta",
"flate2",
"fs_extra",
+ "futures 0.3.27",
"gag",
"indicatif",
"log",
"log4rs",
+ "nvim-rs",
"pathdiff",
"pdf-extract",
- "rand",
+ "rand 0.8.5",
"regex",
"rust-lzma",
"sanitize-filename",
@@ -845,6 +874,7 @@ dependencies = [
"syntect",
"sysinfo",
"tar",
+ "tokio",
"tuikit",
"ueberzug",
"url-escape",
@@ -865,6 +895,103 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
[[package]]
+name = "futures"
+version = "0.1.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678"
+
+[[package]]
+name = "futures"
+version = "0.3.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2"
+
+[[package]]
+name = "futures-task"
+version = "0.3.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
+
+[[package]]
+name = "futures-util"
+version = "0.3.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
+dependencies = [
+ "futures 0.1.31",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+ "tokio-io",
+]
+
+[[package]]
name = "fuzzy-matcher"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -905,6 +1032,17 @@ dependencies = [
[[package]]
name = "getrandom"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.9.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
@@ -1038,6 +1176,15 @@ dependencies = [
]
[[package]]
+name = "iovec"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
+dependencies = [
+ "libc",
+]
+
+[[package]]
name = "is-terminal"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1270,6 +1417,18 @@ dependencies = [
]
[[package]]
+name = "mio"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9"
+dependencies = [
+ "libc",
+ "log",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
name = "nix"
version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1349,6 +1508,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
[[package]]
+name = "nvim-rs"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "970500bd39aa62735edf3080e75edd2b297fec806c8c4a0940180fa13a6d3f7a"
+dependencies = [
+ "async-trait",
+ "futures 0.3.27",
+ "log",
+ "parity-tokio-ipc",
+ "rmp",
+ "rmpv",
+ "tokio",
+ "tokio-util",
+]
+
+[[package]]
name = "objc"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1427,6 +1602,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
[[package]]
+name = "parity-tokio-ipc"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6"
+dependencies = [
+ "futures 0.3.27",
+ "libc",
+ "log",
+ "rand 0.7.3",
+ "tokio",
+ "winapi",
+]
+
+[[package]]
name = "parking_lot"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1456,11 +1645,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700"
dependencies = [
"base64ct",
- "rand_core",
+ "rand_core 0.6.4",
"subtle",
]
[[package]]
+name = "paste"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79"
+
+[[package]]
name = "pathdiff"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1501,6 +1696,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
[[package]]
+name = "pin-project-lite"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
name = "pkg-config"
version = "0.3.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1609,13 +1816,36 @@ dependencies = [
[[package]]
name = "rand"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+dependencies = [
+ "getrandom 0.1.16",
+ "libc",
+ "rand_chacha 0.2.2",
+ "rand_core 0.5.1",
+ "rand_hc",
+]
+
+[[package]]
+name = "rand"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
- "rand_chacha",
- "rand_core",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.5.1",
]
[[package]]
@@ -1625,7 +1855,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
- "rand_core",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+dependencies = [
+ "getrandom 0.1.16",
]
[[package]]
@@ -1634,7 +1873,16 @@ version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
- "getrandom",
+ "getrandom 0.2.8",
+]
+
+[[package]]
+name = "rand_hc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+dependencies = [
+ "rand_core 0.5.1",
]
[[package]]
@@ -1674,7 +1922,7 @@ version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
dependencies = [
- "getrandom",
+ "getrandom 0.2.8",
"redox_syscall",
"thiserror",
]
@@ -1706,6 +1954,27 @@ dependencies = [
]
[[package]]
+name = "rmp"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44519172358fd6d58656c86ab8e7fbc9e1490c3e8f14d35ed78ca0dd07403c9f"
+dependencies = [
+ "byteorder",
+ "num-traits",
+ "paste",
+]
+
+[[package]]
+name = "rmpv"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de8813b3a2f95c5138fe5925bfb8784175d88d6bff059ba8ce090aa891319754"
+dependencies = [
+ "num-traits",
+ "rmp",
+]
+
+[[package]]
name = "rust-lzma"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1926,6 +2195,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
[[package]]
+name = "signal-hook-registry"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
name = "skim-qkzk"
version = "0.9.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1955,6 +2233,15 @@ dependencies = [
]
[[package]]
+name = "slab"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
name = "smallvec"
version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1989,6 +2276,16 @@ dependencies = [
]
[[package]]
+name = "socket2"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
name = "standback"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2343,6 +2640,63 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
+name = "tokio"
+version = "1.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64"
+dependencies = [
+ "autocfg",
+ "bytes 1.4.0",
+ "libc",
+ "memchr",
+ "mio",
+ "num_cpus",
+ "parking_lot",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2",
+ "tokio-macros",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "tokio-io"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674"
+dependencies = [
+ "bytes 0.4.12",
+ "futures 0.1.31",
+ "log",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "1.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.6.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507"
+dependencies = [
+ "bytes 1.4.0",
+ "futures-core",
+ "futures-io",
+ "futures-sink",
+ "log",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
name = "tuikit"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2516,6 +2870,12 @@ dependencies = [
[[package]]
name = "wasi"
+version = "0.9.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+
+[[package]]
+name = "wasi"
version = "0.10.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
diff --git a/Cargo.toml b/Cargo.toml
index 209a13e..c47c557 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "fm-tui"
-version = "0.1.19"
+version = "0.1.20"
authors = ["Quentin Konieczko <qu3nt1n@gmail.com>"]
edition = "2021"
license-file = "LICENSE.txt"
@@ -36,10 +36,12 @@ content_inspector = "0.2.4"
copypasta = "0.8.1"
flate2 = "1.0"
fs_extra = "1.2.0"
+futures = "0.3"
gag = "1.0.0"
indicatif = { version = "0.17.1", features= ["in_memory"] }
log = { version = "0.4.0", features = ["std"] }
log4rs = {version = "1.2.0", features = ["rolling_file_appender", "compound_policy", "size_trigger", "fixed_window_roller"] }
+nvim-rs = { version = "0.3", features = ["use_tokio"] }
pathdiff = "0.2.1"
pdf-extract = "0.6.4"
rand = "0.8.5"
@@ -59,4 +61,5 @@ tuikit = "0.5.0"
url-escape = "0.1.1"
users = "0.11.0"
zip = "0.6.4"
+tokio = "1"
ueberzug = "0.1.0"
diff --git a/config_files/fm/tuis.yaml b/config_files/fm/tuis.yaml
index b880ecc..c393a9d 100644
--- a/config_files/fm/tuis.yaml
+++ b/config_files/fm/tuis.yaml
@@ -8,3 +8,5 @@ btop:
cwd: false
glances:
cwd: false
+mocp:
+ cwd: true
diff --git a/development.md b/development.md
index 911de17..282e20d 100644
--- a/development.md
+++ b/development.md
@@ -430,6 +430,29 @@ New view: Tree ! Toggle with 't', fold with 'z'. Navigate normally.
- [x] colors in menus. Use a repeated gradient of lime colors in menus
+### Version 0.1.20
+
+- [x] display version in help
+- [x] replace FmResult & FmError by anyhow
+- [x] update the readme
+- [x] replace nvim-send by internal implemention
+- [x] mount an iso file by opening it
+ - [x] recognize iso files
+ - [x] mkdir /run/media/$USER/fm_iso
+ - [x] sudo mount -o loop /path/filename.iso /run/media/$USER/fm_iso
+- [x] preview the content of a iso file. Require the application isoinfo
+- [x] fuzzy finder for keybindings with alt+h. The found keybinding will be run immediatly
+- [x] rename: use current name instead of empty string
+- [x] don't fail at first error in config.yaml. Allow parsing continuation.
+- [x] common trait between cryptdevice and iso_file
+- [x] Preview more filetypes - inspired by ranger
+ - [x] preview SVG like [ranger](https://github.com/ranger/ranger/pull/2537/files) does
+ - [x] preview font with fontimage like [ranger](https://github.com/ranger/ranger/blob/46660c277c2ceb7c7c41ffce794d68f8f559030f/ranger/data/scope.sh#L207-L225)
+ - [x] preview doc with pandoc or odt2txt [ranger](https://github.com/ranger/ranger/blob/46660c277c2ceb7c7c41ffce794d68f8f559030f/ranger/data/scope.sh#L84-L93)
+ - [x] preview notebooks
+- [x] mocp go to song: `mocp -Q %file` with alt+enter (lack of a better keybinding)
+- [x] display openers in help
+
## TODO
- [ ] remote control
@@ -455,20 +478,22 @@ New view: Tree ! Toggle with 't', fold with 'z'. Navigate normally.
- [ ] read events from stdin ? can't be done from tuikit. Would require another thread ?
- [ ] pushbullet ?
-- [ ] Version 0.1.20
-
+ - [ ] update the animation
- [ ] exec multiple flagged files
- [ ] shell menu
- [ ] allow non tui like wttr, diff, bat, tail -n etc.
- [ ] more options like "use flagged files" for diff
- - [ ] replace FmResult & FmError by anyhow since I'm already using it...
- [ ] build option to force reset of config file, warn the user at first start
- - [ ] update readme & animation
- [ ] optionable "plugin" started from config file. Would require every option to be `Option<Plugin>` and may cause problems with the borrow checker.
- [ ] edit folder like a buffer [oil like](https://github.com/stevearc/oil.nvim)
- [ ] allow pipe in execution
+ - [ ] refactor cryptdevice and iso_file
+ - [ ] mode to handle those mounts. ATM it's all over the place...
+ - [ ] allow mounting some other devices
+ - [ ] list non mounted devices, list all mount points
+ - [ ] act on them
- [ ] sub window / menu for completion / selection.
diff --git a/readme.md b/readme.md
index 8790bdc..788341d 100644
--- a/readme.md
+++ b/readme.md
@@ -51,17 +51,20 @@ If you added the [recommanded function](#cd-on-quit) to your bashrc/zshrc, simpl
## Features
+Some features depends on external programs to keep fm from being really bloated.
+
- Navigate with the arrows or the mouse (left select, right open, wheel)
- Open a file with o, enter or right click
- Execute a file with a custom command with e
- Copy / move / symlinks / delete with c, p, s, x
- Create files, directory, rename with n, d, r
- Open a new shell in this directory with s
+- Start a configured TUI application with S
- Flag a bunch of file, change panel with TAB and move/copy them !
- Many ways to jump somewhere :
- g: type the full address (with completion enabled),
- - G: a predefined shortcut (default root folders, home and mount points),
+ - G: a predefined shortcut (default root folders, home and mount points, gitroot, config folder),
- j: by jumping to a flagged file,
- ': by creating your own marks and jumping to them
@@ -69,16 +72,24 @@ If you added the [recommanded function](#cd-on-quit) to your bashrc/zshrc, simpl
- Preview most of files (text, highlighted code, binary, pdf, exif details, video/audio details, archives) with P
- Display a tree view of directory by previewing it
- Decompress an archive by opening it (o, enter, right click)
+- Compress flagged files with C. Pick the desired algorithm from a menu.
- Copy a filename/filepath to clipboard with Ctrl+n, Ctrl+p
-- Rename a bunch of file with B. Flag files, B, edit the names and save the file. The renaming is done.
+- Rename or create a bunch of file with B. Flag files, B, edit the names and save the file. The renaming is done.
+ You can create nested files with `a/b/c` which will create every intermediate folder if needed.
- Use the integrated fuzzy finder (forked version of skim, an fzf clone) with Ctrl+f to navigate quickly
+- The same fuzzy finder can find specific lines in files with Ctrl+s
- Filter the view (by extension, name, directory only, all files) with F
- Find files with / (with completion), flag files matching a regex with w
- Detect removable disks automatically and jump to them in a few keystrokes (G, up, enter)
- Drag and drop files (requires dragon-drop installed) with Alt+D
- Trash a file with X, open the trash with Alt+o. x to remove permanently, enter to restore. Wipe the trash with Alt+x.
-- Toggle the tree view with t. Fold folders with z. Unfold every folder with Z, fold every folder with Alt+z.
+- Toggle the tree view with t. Fold selected folder with z. Unfold every folder with Z, fold every folder with Alt+z.
- Open and mount encrypted devices. Open the menu with Shift+e, mount with m, unmount with u.
+- diff the first two files / folders with D.
+- Enter preview mode with Alt+P. Every file is previewed in the second pane.
+- Contol MOCP with Ctrl+arrows. Ctrl+Left, Ctrl+Right: previous or next song. Ctrl+Down: Toggle pause. Ctrl+Up: add current folder to playlist
+- Set the selected image as wallpaper with W.
+- _Experimental_ enter "command mode" with ':'. Type the name of a command and it will be executed.
Most of those features are inspired by ranger and alternatives (Midnight commander), the look and feel by dired.
@@ -92,8 +103,6 @@ It should always work, even outside of neovim.
It's also possible to pass the RPC server address with `fm -s address`.
-This feature requires `nvim-send` to be installed (`cargo install nvim-send`)
-
## cd on quit