{"id":29321953,"url":"https://github.com/codingfries/minimal_fin","last_synced_at":"2026-05-17T18:02:51.447Z","repository":{"id":301970827,"uuid":"1010756094","full_name":"CodingFries/minimal_fin","owner":"CodingFries","description":"Minimal Desktop Client for Jellyfin","archived":false,"fork":false,"pushed_at":"2025-06-29T21:15:50.000Z","size":157,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-07T13:11:19.622Z","etag":null,"topics":["client","flutter","jellyfin","minimal"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CodingFries.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-29T18:30:39.000Z","updated_at":"2025-06-29T21:15:53.000Z","dependencies_parsed_at":"2025-06-29T22:24:34.789Z","dependency_job_id":"1a731a1b-6b2f-40b0-b120-1394d448b5af","html_url":"https://github.com/CodingFries/minimal_fin","commit_stats":null,"previous_names":["codingfries/minimal_fin"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/CodingFries/minimal_fin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodingFries%2Fminimal_fin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodingFries%2Fminimal_fin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodingFries%2Fminimal_fin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodingFries%2Fminimal_fin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CodingFries","download_url":"https://codeload.github.com/CodingFries/minimal_fin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodingFries%2Fminimal_fin/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265554759,"owners_count":23787278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client","flutter","jellyfin","minimal"],"created_at":"2025-07-07T13:03:34.438Z","updated_at":"2026-05-17T18:02:51.384Z","avatar_url":"https://github.com/CodingFries.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Minimal Fin\n\nA lightweight, minimal desktop client for Jellyfin media servers built with Flutter. This application provides a clean,\nframeless window that displays your Jellyfin server's web interface with enhanced desktop integration.\n\n## Features\n\n- **Minimal Design**: Clean, frameless window interface that focuses on your media content\n- **Desktop Integration**: Native window controls (minimize, maximize, close) with hover effects\n- **WebView2 Integration**: Uses Microsoft WebView2 for optimal web content rendering on Windows\n- **Persistent Settings**: Remembers your server configuration between sessions\n\n## Perfect for OLED Users\n\nThis application is specifically designed with OLED display users in mind:\n\n- **Seamless Ultrawide Experience**: The frameless design eliminates window borders, creating a clean viewing experience\n  perfect for ultrawide OLED monitors\n- **Side-by-Side Productivity**: Work alongside your media consumption without caring about burn-in concerns, as the\n  minimal interface does not leave persistent window borders\n- **Immersive Media Viewing**: The minimal interface disappears into the background, letting your OLED display showcase\n  content without interference\n\n## Requirements\n\n- Windows 10/11 (WebView2 Runtime required)\n- Flutter 3.0 or higher\n- A running Jellyfin server\n\n## Installation\n\n### Prerequisites\n\n1. Ensure you have WebView2 Runtime installed on your system. Most modern Windows installations include this by default.\n2. Have a Jellyfin server running and accessible on your network.\n\n### Building from Source\n\n1. Clone the repository:\n   ```bash\n   git clone \u003crepository-url\u003e\n   cd minimal_fin\n   ```\n\n2. Install Flutter dependencies:\n   ```bash\n   flutter pub get\n   ```\n\n3. Build the application:\n   ```bash\n   flutter build windows\n   ```\n\n4. Run the application:\n   ```bash\n   flutter run -d windows\n   ```\n\n## Usage\n\n### First Launch\n\n1. Launch the application\n2. You'll be automatically redirected to the settings page\n3. Enter your Jellyfin server URL (e.g., `http://192.168.1.100:8096` or `https://jellyfin.example.com`)\n4. Click \"Save and Connect\"\n5. The application will load your Jellyfin web interface\n\n### Navigation\n\n- **Settings**: Hover over the top of the window and click the settings icon to change your server URL\n- **Window Controls**: Use the minimize, maximize, and close buttons that appear when hovering over the top-right area\n- **Fullscreen**: The application intercepts Jellyfin's fullscreen button to provide native window maximization\n\n### Settings\n\nThe application stores your server URL locally using Hive database. Your settings persist between application restarts.\n\n## Project Structure\n\n```\nlib/\n├── main.dart                          # Application entry point and initialization\n├── model/\n│   ├── constants.dart                 # Global constants and WebView environment\n│   └── settings_storage.dart          # Settings persistence using Hive\n└── view/\n    ├── routing/\n    │   └── app_routes.dart            # Application routing configuration\n    ├── screens/\n    │   ├── settings_page.dart         # Server configuration screen\n    │   └── web_view_page.dart         # Main Jellyfin web interface\n    └── widgets/\n        ├── page_wrapper.dart          # Common page layout wrapper\n        └── top_buttons_bar.dart       # Window controls and navigation\n```\n\n## Technical Details\n\n### Architecture\n\n- **Flutter Framework**: Cross-platform UI toolkit\n- **WebView Integration**: Uses `flutter_inappwebview` for web content rendering\n- **State Management**: Built-in Flutter state management with StatefulWidget\n- **Routing**: Go Router for declarative navigation\n- **Storage**: Hive for lightweight local data persistence\n- **Window Management**: Custom window controls using `window_manager`\n\n### Key Components\n\n- **WebViewButtonModifications**: JavaScript injection system for customizing Jellyfin's web interface\n- **PageWrapper**: Consistent layout wrapper with drag-to-resize functionality\n- **TopButtonsBar**: Hover-activated window controls with smooth animations\n- **Settings Validation**: URL validation with user-friendly error messages\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Development Guidelines\n\n- Follow Flutter/Dart coding conventions\n- Add documentation for new classes and methods\n- Test your changes thoroughly\n- Update this README if you add new features\n\n## License\n\nThis project is open source. Please check the LICENSE file for details.\n\n## Troubleshooting\n\n### WebView2 Issues\n\nIf you encounter WebView2 related errors, ensure you have the WebView2 Runtime installed:\n\n- Download from [Microsoft WebView2](https://developer.microsoft.com/en-us/microsoft-edge/webview2/)\n\n### Connection Issues\n\n- Verify your Jellyfin server is running and accessible\n- Check that the URL includes the protocol (http:// or https://)\n- Ensure there are no firewall restrictions blocking the connection\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingfries%2Fminimal_fin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodingfries%2Fminimal_fin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingfries%2Fminimal_fin/lists"}