Skip to content

0SkillAllLuck/Scanline

Repository files navigation

Logo

Scanline

Forks Stargazers Issues License

Scanline is an unofficial native GTK4 / Adwaita client for Plex
How to Install »

Features · Report Bug or Request Feature · Join the Matrix Room

Screenshot of the home page of Scanline

Disclaimer

Scanline is not affiliated with or endorsed by Plex. Scanline is provided as-is without any warranty or guarantees. A Plex account and access to a Plex media server are required.

Features

  • Multi-server support with per-server enable/disable
  • Full-text search across servers
  • Library browsing by section (Movies, TV Shows, etc.)
  • Video playback
    • Fullscreen playback
    • Windowed playback W.I.P.
    • P.I.P Support W.I.P.
    • Quality presets
    • Audio presets
    • Subtitles W.I.P.
    • Auto-hiding player controls
    • Changing playback speed W.I.P.
  • Continue watching with progress tracking W.I.P.
  • Watchlist support W.I.P.
  • Jellyfin support W.I.P.
  • EMBY support W.I.P.

About the Project

Scanline is a native, modern looking client for Plex built with GTK4 and Libadwaita in Go. It is designed to fit naturally into the GNOME desktop alongside its existing applications, something web apps and Electron apps often struggle with.

Scanline builds on Tonearm's schwifty UI framework, which provides a SwiftUI-inspired approach to building GTK applications in Go.

Installation

Currently the only tested installation method is the Nix flake provided in the repository. If you want to package this software for another distro or marketplace, please do open an issue so we can coordinate.

NixOS (Flake)

This assumes that your system configuration is already done using a system flake. First add this repository as an input to your flake.

inputs = {

    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";

    ... your other inputs ...

    scanline = {
      url = "github:0SkillAllLuck/Scanline";
      inputs.nixpkgs.follows = "nixpkgs";
    };

}

then add this anywhere in your system configuration as you see fit

{ inputs, ... }:

{

  # System Packages
  environment.systemPackages = [
    inputs.scanline.packages.${pkgs.stdenv.hostPlatform.system}.scanline
  ];

  # Or if you prefer via Home Manager
  home.packages = [
    inputs.scanline.packages.${pkgs.stdenv.hostPlatform.system}.scanline
  ];

}

Acknowledgements

The following projects and resources served as inspiration or were helpful during the development of Scanline.

  • Tonearm and its schwifty UI framework for providing the foundation
  • puregotk for making this project possible with only minimal CGO bindings
  • Plex for the media server platform
  • Dråfølin for the beautiful icon

About

A unofficial native GTK4 / Adwaita client for Plex.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors