A Plex alternative

Pilot Program

Article from Issue 260/2022

Dim, a relatively new open source media manager, looks to implement the appearance and feature set of the commercial Plex media center.

Many media players, also known as home theater software suites or media managers, are available for Linux. Of particular interest are the candidates that rely on the client-server principle, which users can host themselves and which also support secure access from the outside. The better-known representatives of this genre include the open source projects Kodi, Emby, LibreELEC, and Jellyfin, and the primarily proprietary Plex [1], which originated as a fork of the Xbox Media Center's (XBMC) Frodo version.

Although not open source, Plex is very popular on Linux because of its extensive functionality, good user interface, and suitability as a streaming media server. However, it has shifted too heavily in the direction of Netflix and Amazon Prime for many users, while basic features have been missing for years, such as smooth fading in and out of audio tracks.

For about a year, developers have been working on Dim [2], open source software that emulates Plex's appearance and functionality as closely as possible. First released in April 2021, the current version is Dim 0.3.0-rc6. By the time you read this article, version 0.3.1 should already be available or close to official release.

Developed from scratch, Dim is not based on an existing application. It aims to scan and play media from anywhere with minimal setup effort by the user. The project is still at an early stage, but Dim already promises to morph into a viable free alternative to the proprietary Plex. For that reason, I will take a closer look at how to install Dim, where the project stands today, and what its future plans are.


You can install Dim, which uses GitHub as its development platform, on your own hardware and control it via a web interface (Figure 1). You can set it up on a home computer or on a server on the web. All planned functions can be externally accessible if so desired. Containerization with Docker is an alternative to installing Dim directly.

Figure 1: This view of a library shows the individual media as alphabetically ordered tiles. You can't set up a music library because the underpinnings are still missing.

One unique selling point is that Dim is implemented in Rust. The Rust programming language, which has been under development by Mozilla since 2010 and is now supported by a large community, is currently establishing itself as a second kernel language alongside C. The design brief for Rust is that it has to be simple and easy to use while offering better security and faster application execution speeds. Plex, on the other hand, which Dim is trying to emulate, is a Python program.

Because there are no binary packages of Dim for distributions yet, it is important to check the required dependencies on multimedia libraries before you install. The libraries should already be in place on a normal desktop installation, assuming that FFmpeg is installed. Listing 1 shows how to install the required packages on Debian and its derivatives (first line), as well as on Fedora and other RPM-based systems.

Listing 1


$ sudo apt install libva2 libva-drm2 libharfbuzz-bin libfontconfig1 libfribidi0 libtheora0 libtheora-bin libvorbis0a libvorbisenc
$ sudo dnf install libva libva-vdpau harfbuzz fontconfig fribidi libtheora libvorbis

ZIP or Docker?

Once all the dependencies are resolved, download the ZIP file of the current Dim version from GitHub [3]. Unpack it as shown in Listing 2, change to the unpacked directory, and run the configuration process there (Figure 2). After completing the action, call the Dim web interface by typing in your browser's address bar. If needed, you can change the port number for the service there. Listing 3 describes how to install with Docker. You will find the image, including a README file, at /var/lib/docker/overlay2.

Listing 2

ZIP Installation

$ unzip ./release-linux.zip
$ tar -xvzf ./release.tar.gz
$ cd release && ./dim

Listing 3

Docker Installation

### Install Docker for Debian and derivates:
$  sudo apt install docker.io
### Install Docker on Fedora:
$  sudo dnf install docker-ce
### Download the latest Dim image:
$  sudo docker pull ghcr.io/dusk-labs/dim:dev
Figure 2: After unzipping the archive file, trigger the Dim configuration. The software checks if the dependences are in place.

Once you have set up Dim and opened the web interface in the browser, the next step is to create an account. You can then start populating the media database (Figure 3). Currently, Dim is limited to movies, series, and anime. Music, images, and other media formats will follow as soon as the developers are satisfied with the implementation of the formats that are already supported.

Figure 3: The Dim interface has been deliberately designed to be clutter free. On first launch, the application prompts the user to create a library.

In the web view, like in Plex, a sidebar on the left with the controls takes up about a quarter of the window width. The rest of the display is used to show the indexed media. Below the user logo, which you can customize to suit your own preferences, you will find the search bar and below that again the collections you created. If so desired, you can hide the control sidebar using the small arrow bottom right, which means you can use the entire screen to display the media and metadata.


When you log in for the first time, the application prompts you to create a library by assigning a name and passing the path to the desired files to the Scraper (a small utility or built-in routine that collects data from various sources before typically serving up the data centrally via a database). Use the option here to define whether the library is for movies or series. Dim treats the two categories differently as far as the metadata – which comes from The Movie Database (TMDB) – is concerned.

Dim only supports folders. It does not show individual files in the overview at all. However, a mode to include individual files is on the roadmap. If you hover the mouse pointer over a folder, an orange rectangle appears on the right. You can then click it to select the folder (Figure 4). Don't forget to assign a name to the collection, otherwise the Add Library button will remain disabled. If you want to create more collections, mouse over the Libraries tab and click on the plus sign that appears.

Figure 4: When creating a library, it is important to make sure that it has a name and that the boxes to the right of the folders are checked.

Below Libraries, the Dashboard tab shows the most recently viewed media at the top. Above the file name, you will find automatically generated tags such as the year of creation or genre. Clicking on the keywords, which are defined as links, takes you to other media with the same tag. Dim does not currently support individual tagging.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Jellyfin

    The top dogs in the media server space now face some competition from Jellyfin, a relatively young project that impresses with a number of innovations.

  • Free Media Centers

    Free and commercial media center programs promise streaming HD videos, television, music, picture galleries, and a few extra tricks for Linux PCs and the Raspberry Pi – all from the comfort of your living room.

  • Tube Archivist

    Tube Archivist indexes videos or entire channels from YouTube in order to download them with the help of the yt-dlp tool.

  • Docker Open Source Developer Tools

    Docker provides the open source tools and resources for compiling, building, and testing containerized applications.

  • Microsoft is Shutting Down CodePlex

    Microsoft's open source code hosting platform CodePlex will come to an end after a more than 10-year stint.

comments powered by Disqus