kivimango / twin-commander Goto Github PK
View Code? Open in Web Editor NEWYet another text mode twin-panel file manager
License: Apache License 2.0
Yet another text mode twin-panel file manager
License: Apache License 2.0
twin commander should handle the following archives:
Contents of archive files should be listed as a regular folder on the file system.
twin commander should be able to support creating archives from file(s) or folder(s), and updating already existing archives.
There is an article about rust compression libraries here:
https://blog.logrocket.com/rust-compression-libraries/
lib.rs has a list of compression libraries:
https://lib.rs/compression
The candidates must meet some requirements:
Listing huge dirs with thousands of files are slow to read, and does not render: i think the ui is refreshed before the file list could be drawn into the ui.
Listing should be done on a separate bakcground/worker thread, or go async using tokio.
I would flavor the worker thread solution, to keep the small footprint of the app, and not bloat the binary with tokio stuff.
After all of the minimal features implemented and there is no major known bug(s), the first release of twin commander should happen as version 0.1.0 or 0.1.1.
Implement localization by using the following crates:
It would be good to have a list of previously visited paths on the filesystem that a user can navigate back and forth.
Just like in Total Commander.The widget would be placed in right edge of the header of the tables.
The application should store and load configuration settings which changes its behavior during runtime.
The config file shall be a plain text file located in ~/.config/twc
or just in the ~/.config/
folder with an extension of .toml.
The application would parse this file at startup and build up its components based on those variables.
There is a tutorial video on youtube called How to add Configuration to your Rust project and there is another Implementing Config Files for your Rust CLI tool | Rustlang Lets Code!.
One could use the dirs crate to handling the user's config folder.
Probably one more dependency will be needed, the serde crate to serizalize/deserialize the configuration-related structs, but the ideal way would be roll our own solution to keep the amount of dependencies as few as possible.
twin commander should provide a way to users to select from a list of premade themes and/or make their own theme(s) and help to distribute them to customize the aesthetics of the application as they please.
A Theme is a collection of key/pair values that make up the style of the user interface.
A theme file should be a plain text file located in ~/.local/share/twc/themes/
with an extension of .ron or .toml.
One file must be contain only one theme.
The name of the file will be the name of the theme.The names must follow the snake_case
convention.
The current applied theme should be saved in the configuration file in ~/.config/twc.toml
.
The application shall load the name of the theme from the config file, then load the given theme, and apply it to the user interface.
Take into consideration of the following methods:
The application must provide a user interface for listing locally installed themes, browsing available themes, and installing them.
It would be good to make a separate application only for creating and editing themes for the users.
Could be text mode too or a webpage (github pages?)
The application should support remote protocols probably through plugins, like:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.