# ArinDash ArinDash is a customizable terminal dashboard (TUI) written in Go, powered by [`termdash`](https://github.com/mum4k/termdash). It allows you to monitor various services, network devices, and system information in a single terminal view. ## Features - **Clock, Date & Calendar**: Real-time time, date, and calendar display. - **Weather**: Current weather information via OpenWeatherMap. - **Pi-hole Integration**: Monitor your Pi-hole statistics, including query counts and blocked percentages. - **Docker Monitoring**: View the status of your Docker containers. - **HTTP Prober**: Check the availability and status codes of your favorite websites. - **Network Device Monitoring**: Track which devices are online in your local network. - **Wi-Fi QR Code**: Display a QR code for easy Wi-Fi connection sharing. - **NINA Warnings**: Stay informed about emergency warnings in Germany via the NINA-Service. - **News**: Get the latest news headlines from various sources via News API. - **Every Day Mood**: Track your daily mood with an interactive calendar. - **Zukitchi**: A cute animated terminal pet/sprite to keep you company. - **Interactive TUI**: Built with `termdash` for a responsive and visually appealing terminal interface. ## Prerequisites - **Go**: Version 1.25.5 or later. - **Docker**: If you want to use the Docker monitoring widget. - **Nerd Fonts**: Recommended for displaying icons correctly in the terminal. You can find icons at the [Nerd Fonts Cheat Sheet](https://www.nerdfonts.com/cheat-sheet). ## Installation 1. Clone the repository: ```bash git clone https://github.com/yourusername/ArinDash.git cd ArinDash ``` 2. Install dependencies: ```bash go mod download ``` ## Configuration ArinDash uses a `config.toml` file for its settings. A template is provided as `config_template.toml`. 1. Copy the template: ```bash cp config_template.toml config.toml ``` 2. Edit `config.toml` with your specific details: - **Pi-hole**: Set your host and API password. - **Wi-Fi**: Configure your SSID and password for the QR code widget. - **Weather**: Provide your OpenWeatherMap API key and Location ID. You can find your Location ID in the `city.list.json.gz` from [OpenWeatherMap bulk data](http://bulk.openweathermap.org/sample/). - **NINA Warnings**: Set your `gebietsCode` for the area you want to monitor. - **News**: Provide your News API key and preferred sources. 3. Customize widgets: - **Websites**: Copy `websites_template.json` to `websites.json` and update it with the URLs and icons you want to monitor. - **Network Devices**: Copy `devices_template.json` to `devices.json` and configure it with the MAC addresses and names of the devices you want to track. ## Usage To run ArinDash, execute: ```bash go run main.go ``` ### Controls - **Esc / Ctrl+C**: Exit the application. - **News Widget**: - **Left / Right Arrow Keys**: Navigate through news articles. - **Every Day Mood Widget**: - **Arrow Keys**: Navigate through the calendar days and months. - **1, 2, 3**: Assign a mood. - **Backspace**: Clear the mood for the selected day. ## Project Structure - `main.go`: Entry point and layout definition. - `widgets/`: Contains individual widget implementations (Clock, Docker, Pi-hole, etc.). - `apis/`: API clients for interacting with external services (Docker, Pi-hole, etc.). - `config/`: Configuration loading logic. - `util/`: Helper functions and utilities. ## License This project is licensed under the MIT License – see the [LICENSE](LICENSE) file for details.