← home


htpicker is a simple file browser for your Linux-based HTPC (Home Theater PC). It simply navigates your filesystem and allows you to watch or play your media files with the programs of your choice.

htpicker in a window
htpicker in a window

I created htpicker because I was unsatisfied with all other HTPC frontend software I've tried. They're all complicated monstrosities and I seem to have a talent for finding their bugs. All I really wanted was a way to browse a directory structure in a TV-friendly visual format, and launch files with external programs (e.g. a video with mplayer, or a video game ROM with an emulator).

There are no over-complicated plugins, scripts, XML files, or anything like that. There is one small configuration file located at ~/.htpickerrc. This file will be created for you the first time you run htpicker. The meat of this config file is mapping certain directories and/or file extensions to programs that can play them. The stock config file sets up a few reasonable defaults, such as using mplayer to play files in ~/Videos as well as files with common video filename extensions, and playing a couple types of video game ROMs with their respective console emulators. You can change or expand these settings to play any file with any program you want.

htpicker on a tv
htpicker on your tv?
original image © 2008 William Hook and modified by me. used under CC attribution-sharealike license.

And why not just use HTML and Javascript for the UI? So that's what I've done. The program you run consists of three parts: The first is a generic browser window, using WebKit, the same HTML engine used by Chrome, Safari, and the iPhone and Android browsers. The second part is the HTML and Javascript web page that this browser displays. The third is a backend program that gets requests from the webpage and executes actions that are impossible from within a webpage, such as reading the contents of a directory on the filesystem, or executing a program to play a file.

Since htpicker's GUI is written in HTML and JavaScript (using WebKit), it does not engage any special video modes or cause problems with switching to other programs. It can run in a window or fullscreen (the toggle is in the config file). Despite using WebKit for its GUI, it is not a web application, and does not access the network in any way.

This project is still quite young, so testers and experimenters are highly encouraged to try it out. I don't recommend you use it yet if you expect total robustness and zero bugs.

Download and report bugs or suggestions at Github.

Nick Welch <nick@incise.org> · github