In my spare time over the last few months, I’ve been working on a project which I dub ‘Snap’. Snap is my attempt at replicating the functionality of ‘Windows System Restore’ on Linux. As the name indicates, Windows System Restore backs up all the important files, libraries, and registry entries on Windows for future restoration. To accomplish this in Linux, the underlying package management system is used. Snap stores which packages have been installed on the machine, and any files not tracked by the package management system or have been modified since installation.
Included is the Snap library, ‘snaptool’ the console frontend, and ‘gsnap’ the gnome gui. Currently only the Yum Package Management system is supported, but Snap supports a simple plugin interface, allowing easy support to work with any distro.
I hope people try it out and give me good feedback (patches are even better :-D), and I look to maintain it as much as I can in the future. I do have other things to work on (namely my master’s thesis which I have been pushing off till now) and since Snap already does what I need it to do (save my packages when upgrading between Fedora versions), I’m not sure how many new features I will add. But thats the beauty of open source, and I’m looking forward to anything anyone contributes
I am in the process of adding a gnome gui interface to my soon-to-be released project. Incorporating Python, GTK, and Glade, I’ve run into several quirky issues relating to running threads and sharing access to GTK widgets. Often I will see a worker thread hanging until the window is closed, at which point it resumes operation, or a more serious error:
Gtk-ERROR **: file gtktextlayout.c: line 1990 (gtk_text_layout_get_line_display): should not be reached
which indicates an illegal cross-thread boundary violation.
After much searching, I found this site which fills in the story concerning pyGTK and threading very nicely.