Giter VIP home page Giter VIP logo

twin-commander's People

Contributors

kivimango avatar rzerres avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

rzerres sahwar

twin-commander's Issues

Archive support

twin commander should handle the following archives:

  • iso
  • gz
  • rar
  • tar
  • zip
  • 7zip

View archive content

Contents of archive files should be listed as a regular folder on the file system.

CRUD

twin commander should be able to support creating archives from file(s) or folder(s), and updating already existing archives.

Possible dependency candidates

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:

  • should be a pure rust library (or there is none yet, maybe a wrapper over some C lib)
  • minimal use of unsafe, or None at all (twin commander has 0% unsafe as of right now)
  • should be documentation with examples
  • tests (unit or integration, best is both)
  • a green CI badge in the README
  • feature complete or support features as many as it can

Candidates:

zip

  • zip
  • vfs-zip (2 years old, seems unmaintaned)
  • rc-zip (3 years old, unmaintaned)

gz

rar

  • rar
  • xcompress (good candidate, supports multiple formats, not popular)

Listing huge dirs

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.

MVP

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.

History widget

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.

Configuration

The application should store and load configuration settings which changes its behavior during runtime.

Overview

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.

Theming

Themes

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.

Overview

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.

Loading themes

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.

Distributing themes

Take into consideration of the following methods:

  • github packages
  • create a separate repository only for the themes, e.g.: twin-commander-themes
  • github pages
  • a separate, free static website for storing and downloading themes

The application must provide a user interface for listing locally installed themes, browsing available themes, and installing them.

Theme editor

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?)

Remote protocols

The application should support remote protocols probably through plugins, like:

  • (s)FTP
  • SSH

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.