Built in Rust, making heavy use of ratatui & Bollard
- [Download & install](#download--install) - [Run](#run) - [Build step](#build-step) - [Tests](#tests) ## Download & install ### Cargo Published on crates.io, so if you have cargo installed, simply run ```shell cargo install oxker ``` ### Docker Published on ghcr.io and Docker Hub, with images built for `linux/amd64`, `linux/arm64`, and `linux/arm/v6` **via ghcr.io** ```shell docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=always ghcr.io/mrjackwills/oxker ``` **via Docker Hub** ```shell docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=always mrjackwills/oxker ``` ### Nix Using nix flakes, oxker can be ran directly with ```shell nix run nixpkgs#oxker ``` Without flakes, you can build a shell that contains oxker using ```shell nix-shell -p oxker ``` ### AUR oxker can be installed from the [AUR](https://aur.archlinux.org/packages/oxker) with using an [AUR helper](https://wiki.archlinux.org/title/AUR_helpers): ```shell paru -S oxker ``` ### Homebrew oxker can be installed on macOS using [Homebrew](https://formulae.brew.sh/formula/oxker): ```shell brew install oxker ``` ### Pre-Built See the pre-built binaries or, download & install (x86_64 one liner) ```shell wget https://www.github.com/mrjackwills/oxker/releases/latest/download/oxker_linux_x86_64.tar.gz && tar xzvf oxker_linux_x86_64.tar.gz oxker && install -Dm 755 oxker -t "${HOME}/.local/bin" && rm oxker_linux_x86_64.tar.gz oxker ``` or, for automatic platform selection, download, and installation (to `$HOME/.local/bin`) *One should always verify script content before running in a shell* ```shell curl https://raw.githubusercontent.com/mrjackwills/oxker/main/install.sh | bash ``` ## Run ```shell oxker ``` In application controls, these, amongst many other settings, can be customized with the [config file](#Config-File) | button| result| |--|--| | ```( tab )``` or ```( shift+tab )``` | Change panel, clicking on a panel also changes the selected panel.| | ```( ↑ ↓ )``` or ```( j k )``` or ```( PgUp PgDown )``` or ```( Home End )```| Scroll line in selected panel - mouse wheel will also scroll.| | ```( ← → )``` | When logs panel selected, scroll horizontally across the text of the logs.| | ```( ctrl )``` | Increase scroll speed, used in conjuction scroll keys.| | ```( enter )```| Run selected docker command.| | ```( 1-9 )``` | Sort containers by heading, clicking on headings also sorts the selected column. | | ```( 0 )``` | Stop sorting.| | ```( F1 )``` or ```( / )``` | Enter filter mode. | | ```( - ) ``` or ```(=)``` | Reduce or increase the height of the logs panel.| | ```( \ )``` | Toggle the visibility of the logs panel.| | ```( e )``` | Exec into the selected container - not available on Windows.| | ```( f )``` | Force clear the screen & redraw the gui.| | ```( h )``` | Toggle help menu.| | ```( m )``` | Toggle mouse capture - if disabled, text on screen can be selected.| | ```( q )``` | Quit.| | ```( s )``` | Save logs to `$HOME/[container_name]_[timestamp].log`, or the directory set by `--save-dir`.| | ```( esc )``` | Close dialog.| Available command line arguments | argument|result| |--|--| |```-d [number > 0]```| Set the minimum update interval for docker information in milliseconds. Defaults to 1000 (1 second).| |```-r```| Show raw logs. By default, removes ANSI formatting (conflicts with `-c`).| |```-c```| Attempt to color the logs (conflicts with `-r`).| |```-t```| Remove timestamps from each log entry.| |```-s```| If running via Docker, will display the oxker container.| |```-g```| No TUI, essentially a debugging mode with limited functionality, for now.| |```--config-file [string]```| Location of a `config.toml`/`config.json`/`config.jsonc`. By default will check the users local config directory.| |```--host [string]```| Connect to Docker with a custom hostname. Defaults to `/var/run/docker.sock`. Will use `$DOCKER_HOST` environment variable if set.| |```--no-stderr```| Do not include stderr output in logs.| |```--save-dir [string]```| Save exported logs into a custom directory. Defaults to `$HOME`.| |```--timezone [string]```| Display the Docker logs timestamps in a given [timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). Defaults to `Etc/UTC`.| |```--use-cli```| Use the Docker application when exec-ing into a container, instead of the Docker API.| ### Config File A config file enables the user to persist settings, create a custom keymap, set the color scheme used by the application, and more.