+-----------------------------------------+ | Project: Burrow | +-----------------------------------------+--------+ | | | Date: 20181116-17:50 | | Author: Sloum | | Soundtrack: N/A | | | +--------------------------------------------------+----------------------+ When I found out about gopher as a protocol it sounded interesting. I like content more than I like style (even though style is a part of what I am paid to do with computers). I like accessing things through a terminal and started out using Lynx. It worked and was pretty enjoyable. Something else I liked about gopher immediately upon hearing about it was its simplicity. I was able to read and udnerstand the RFC(s) for it pretty easily. The project I was working on was winding down (a message board platform for the terminal over HTTP), as it was not really going the way I wanted, but I didn't feel like the idea was solid enough to really redo and work into something great. Maybe I'll return to it at some point. Anyway, back to gopher: I decided making a gopher browser would be fun. So I set to it. I chose Python 3.x to write it in,a s I am comfortable with Python and have fun writing Python code. For the windowing/gui management I went with Tkinter (Tk/Tcl). I started out looking into GTK and QT, but since I had worked with Tkinter before and it was pretty solidly cross- platform it seemed like a good fit. I am far enough into my little project that I have been using my browser almost exclusively to browse gopherholes. It is working really well. I need to add some more robust error handling. It catches most, but not all errors at present. I have named the project "Burrow". I am moving toward what I will call a 1.0 release pretty quickly. The available functionality at present is as follows: - Browse to an address from an address bar - Gopher menus have clickable links that take you to their target - Persistent homepage that stores favorites (that can be added or removed) - Back, Forward, and Home buttons - Easy on the eyes dark color theme based on the theme 'Obsidian' - Rendering of gopher menus, text, and images - Images are rendered in the browser window, with a download link above them - Right click context menus allow for lots of different options - Mouse hover udnerlines links and displays destination in status bar - Saving text, menus, and images is available in the right click menu All of those work really well. My GUI object is a mess that should really get refactored and split up... but, ya know, it happens. I'll get to it sooner or later. The features I have on deck are as follows: - Download initiated by clicking on a binary, sound, video, zip, etc item - Configurable color scheme - Configurable load behavior (home page or last visited) - Tabbed browsing (this will likely be last, as it is the biggest udnertaking) After those, I think I should be pretty set for a tool I will like to use for browsing gopher. I love homemade tools. Sometimes they are flawed, but they general have character and I love them for their flaws and character. I will likely post source code soon for any of you out there that would like to give Burrow a try. It is a fully open source GPL project, so feel free to take and and make it your own, or contribute to the github[1]. Things to note: Right now it is configured for Python 3.x, but I will be updating the code to provide backward compatibility to Python 2.6+. At present it works nicely on Debian based linux, and has some issues that I am working through for OSX (the OSX version of Tkinter does not support PNG images out of the box, so I just need to do a few minor tweaks). On Ubuntu, a few packages will be needed from APT as tkinter does not seem to come with the basic Python installs, or is missing vital packages. The only other dependency, regardless of system, is Pillow/PIL (which is available through PIP). [1] https://github.com/sloumdrone/burrow