Announcing btrfs-gui

Here’s the email I sent to the btrfs mailing list a few moments ago:

Over the last few weeks, I’ve been playing with a foolish idea, mostly triggered by a cluster of people being confused by btrfs’s free space reporting (df vs btrfs fi df vs btrfs fi show). I also wanted an excuse, and some code, to mess around in the depths of the FS data structures.

Like all silly ideas, this one got a bit out of hand, and seems to have turned into something vaguely useful. I’m therefore pleased to announce the first major public release of btrfs-gui: a point-and-click tool for managing btrfs filesystems.

The tool currently can scan for and list btrfs filesystems and the volumes they live on. It can show the allocation and usage of data in a selected filesystem, categorised by use, replication, and device. It can show and manipulate subvolumes and snapshots: creation, deletion, and setting the default. For those with servers to manage, it also has the ability to ssh into a remote machine, and manage its filesystems remotely (so you don’t have to have X installed on your servers just to use btrfs-gui on them).

You can get the latest version from git (or gitweb), or tarball download of the sources from here. To install and run the GUI, you will need python3 and the python tk libraries (package python3-tk on my Debian system). The root helper component (which can be installed independently on an X-less server) will run under python2 or python3, depending on how it’s installed. Installation instructions can be found on the main web page, and in the README file.

Unless the traffic gets too high-volume, or unless someone important objects, I’m going to suggest that bug reports should go to this list for now (cc’d me, if you like). Note that this isn’t an “offical” btrfs project – it’s just something I knocked together on my own.

Finally, I’d like to thank David Sterba for testing the pre-release versions, reporting bugs, and making many good suggestions for improvements. Any deviation from his instructions is entirely my fault. :)