https://github.com/dandels/dmodman
TUI downloader & update checker for Nexusmods.com
https://github.com/dandels/dmodman
nexusmods ratatui rust tui
Last synced: 3 months ago
JSON representation
TUI downloader & update checker for Nexusmods.com
- Host: GitHub
- URL: https://github.com/dandels/dmodman
- Owner: dandels
- License: mit
- Created: 2019-09-24T12:45:38.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2024-08-07T21:24:38.000Z (about 1 year ago)
- Last Synced: 2024-08-08T00:31:35.845Z (about 1 year ago)
- Topics: nexusmods, ratatui, rust, tui
- Language: Rust
- Homepage:
- Size: 1.3 MB
- Stars: 41
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-modding - dmodman - Linux TUI mod downloader & update checker for Nexus Mods. (Mod Managers)
README
# dmodman
dmodman is a Linux-native TUI mod manager for [Nexus Mods](https://www.nexusmods.com/), written in Rust.
It functions as a handler for the nxm:// protocol, removing the need for manual downloads.## Notable features
- Downloads, extracts, and checks updates for mods.
- Nexus Mods SSO-integration.
- Fully multithreaded.
- Download state is remembered across program restarts
* Expired downloads can be resumed by re-initiating the download from Nexus.
- API request cache to reduce traffic and speed up the program.
- Hash verification of completed downloads.
- Basic hjkl-navigation.## Usage
* The first time dmodman is launched, an API key is generated for the user through Nexus's single sign-on.
* API keys are stored in `$XDG_CONFIG_HOME/dmodman/apikey` and can be viewed in your [Nexus profile](https://www.nexusmods.com/users/myaccount?tab=api).
* The config is checked for in `$XDG_CONFIG_HOME` (~/.config/dmodman/config.toml). See the example [config.toml](/config.toml).
* Only one instance of dmodman can run at the same time.
* Mods are always downloaded to the current profile in order to support games with different editions, such as Skyrim.
* It's recommended to change the profile when modding a different game.
* Using the update checker:
* Outdated files are marked with "!".
* If a mod has some other new file, files are marked "?". (Can also be an update with broken metadata).
* Update status is reset when a new file from that mod is downloaded.
* Updates can be ignored until the next time a file in the mod is updated.
* Tries to use cached data before sending an API request.
* Could use more tests/testing and a code review
* `dmodman nxm://...` sends the url to the currently running instance. Useful for testing.## Dependencies
* `libarchive 3.2.0` or higher to extract archives
* `xdg-utils` to `xdg-open` mod pages in the browser.## Building
* dmodman works with the latest stable Rust toolchain.
* `git clone https://github.com/dandels/dmodman/`
* `cd dmodman`
* `cargo build --release` or `cargo run --release`## Installation
The following steps are required for nxm scheme handling to work.
1. Add dmodman to your PATH. If developing, you can symlink to the build directory.
2. Copy the included dmodman.desktop file to `~/.local/share/applications/` (or /usr/share/applications/).## TODO & Contributing
There is an incomplete and somewhat up to date list of things that need doing in [CONTRIBUTING.md](/CONTRIBUTING.md)## Logo
NexusMods requires users to have application-specific API keys. Having a logo was a prerequisite for being featured on
the NexusMods API page & getting dmodman-specific API keys via SSO. Therefore, here is a screenshot of an xterm with
font size 96, using the openly licensed [Space Mono](https://fonts.google.com/specimen/Space+Mono/) font:
