5.6 KiB
ℹ️ This project is available on our self-hosted server and on CodeBerg and GitHub as mirrors. For the latest updates and comprehensive version of our project, please visit our primary repository at: https://code.apps.glenux.net/glenux/mfm.
Minimalist Fuse Manager (MFM)
MFM is a Crystal-lang CLI designed to streamline the management of various FUSE filesystems, such as sshfs, gocryptfs, httpdirfs, and more. Through its user-friendly interface, users can effortlessly mount and unmount filesystems, get real-time filesystem status, and handle errors proficiently.
Prerequisites & Dependencies
Before using MFM, make sure the following tools are installed on your system:
- gocryptfs: https://github.com/rfjakob/gocryptfs
- sshfs: https://github.com/libfuse/sshfs
- httpdirfs: https://github.com/fangfufu/httpdirfs
- fzf: https://github.com/junegunn/fzf
- libpcre3
- libevent-2.1
For Debian/Ubuntu you can use the following command:
$ sudo apt-get update && sudo apt-get install libpcre3 libevent-2.1-7 fzf gocryptfs httpdirfs sshfs
Building from source
To build from source, you'll also need:
- crystal-lang: https://crystal-lang.org/
For Debian/Ubuntu you can use the following command:
$ sudo apt-get update && sudo apt-get install libpcre3-dev libevent-2.1-dev
Installation
1. From Source
- Clone or download the source code.
- Navigate to the source directory.
- Run
shards install
to fetch dependencies. - Compile using
shards build
. - The compiled binary will be in the
bin
directory.
2. Binary Download
Alternatively, download a pre-compiled binary version of MFM.
Usage
Command Line Options
Global
Usage: mfm [options]
Global options
-c, --config FILE Set configuration file
-v, --verbose Set more verbosity
-o, --open Automatically open directory after mount
--version Show version
-h, --help Show this help
Commands (not implemented yet):
config Manage configuration file
mapping Manage filesystems
Config management
Usage: mfm filesystem [options]
Global options
-c, --config FILE Set configuration file
-v, --verbose Set more verbosity
-o, --open Automatically open directory after mount
--version Show version
-h, --help Show this help
Commands (not implemented yet):
init Create init file
Filesystem management
Usage: mfm mapping [options]
Global options
-c, --config FILE Set configuration file
-v, --verbose Set more verbosity
-o, --open Automatically open directory after mount
--version Show version
-h, --help Show this help
Commands (not implemented yet):
list List fuse mappings
create Create new fuse mapping
edit Edit fuse mapping
delete Create new fuse mapping
Demo
Configuration
MFM uses a YAML configuration file, typically found at ~/.config/mfm.yml
, to
detail the filesystem names, types, and respective configurations.
YAML File Format
---
version: "1"
global:
mountpoint: "{{env.HOME}}/mnt"
filesystems:
- type: "gocryptfs"
name: "Work - SSH Keys"
encrypted_path: "/home/user/.ssh/keyring.work.vault"
- type: "sshfs"
name: "Personal - Media Server"
remote_user: "{{env.USER}}"
remote_host: "mediaserver.local"
remote_path: "/mnt/largedisk/music"
remote_port: 22
- type: httpdirfs
name: "Debian Repository"
url: "http://ftp.debian.org/debian/"
# Add more filesystems as needed
Contribution Guidelines
Contributing to MFM:
- Fork the Repository: Start by forking MFM's repository.
- Create a Feature Branch: Develop each feature or fix in its own branch.
- Commit Changes: Provide clear and informative commit messages.
- Run Tests: Ensure that all features are operational.
- Push to Your Fork: Push your changes to your fork on GitHub.
- Submit a Pull Request: Begin a pull request to the main repository and explain your changes.
- Review: Await feedback from the maintainers and respond as necessary.
By contributing, you agree to our code of conduct and license terms.
Authors and Contributors
- Glenn Y. Rolland - Initial Work
Inspired By
- Qasim: A user-friendly FUSE manager. https://code.apps.glenux.net/glenux/qasim
- Sirikali: A Qt/C++ GUI front-end for various FUSE filesystems like cryfs, gocryptfs, securefs, ecryptfs, and encfs. https://mhogomchungu.github.io/sirikali/
License
GNU GPL-3