Nate
Posts
#Sunstone #browser grew a couple of features over the past two days.
- History
This is in the same `places` database as bookmarks. For the time being, there is no interface for browsing history or deleting entries. I've added two settings, max_entries and max_days. Every fifteen minutes a background job runs at low priority to clear and history beyond what those two settings allow. There are a lot of plans for how history is going to be displayed such as grouping visits by host and deleting items from arbitrary ranges of time.
- Address bar completions
Whatever you type into the address bar is now saved and used as entry completions. This was something I was having a hard time living without while dogfooding the browser as my daily driver.
There was a lot of code cleanup and refactoring done in the past couple of days as well. Most of the Sql used to access the places database is stored as snippets in the GResources vfs.
Does Pam Bondi know that the Dow is no longer above 50k?
I spent a few hours today rethinking the schema for the bookmarks database in #Sunstone . The result is better functionality in less code, which is hopefully a lot less brittle. This database is also going to be used for history, and it's tied in to parsing address bar queries, so it's definitely worth getting it right before going too much further.
Next steps are going to be displaying bookmarks in list form in the sidebar, followed by serving a bookmarks page at the uri sunstone://bookmarks. Since the bookmarks are organized by tags, each tag will be available as a subfolder of that url (eventually).
It was a better day than I expected. My younger son came over and visited for a few hours. He's starting a new job at KSU tomorrow, so he'll be working really close to where I live and we might be seeing a lot more of him going forward.
#Sunstone #Browser got a few nice quality of life improvements today.
- A slim progress bar at the top of the WebView to display loading progress
- Page zoom via keyboard shortcuts. Currently there is no user feedback to display the zoom level because I still need to decide where to fit that into the interface and how it should look.
- You can create bookmarks now via the bookmark editor, called up via the button just to the right of the address bar. Some limitations apply (more on that below).
- You can visit a bookmark just by typing its name or alias into the address bar. This is similar to the ‘quickmarks’ feature in Qutebrowser, except integrated right into the bookmarking system. It’s quite handy - I came here by opening the browser, hitting Ctrl/g to focus the address bar entry and typing ‘slp [Enter]’. That’s five keystrokes after opening the browser and no touching the mouse.
I had been playing around with a custom data structure for storing and quickly looking up bookmarks, but I’ve decided to go easy mode and just use an sqlite database. I’m considering doing the same for history so that I can store more context for history items, but I digress. Sunstone is going to organize your bookmarks via tags instead of folders, which should make it quick and easy to find old bookmarks by topic. The database has a table for Bookmarks and a table for Tags. The current limitation with the editor is that when you update an existing bookmark and change it’s tags, the tags table isn’t updated. I just need to get around to writing the logic to handle that properly. I also think it wise to state that the current bookmark schema may change.
Currently there is nowhere in the interface to display bookmarks. I’m planning on having two different views for that, one in the sidebar and one as a webpage with the sunstone://bookmarks/ uri. The plan is to also integrate bookmark names, url’s and aliases into completion for the address bar.
I’ve renamed my web browser project from SWB to Sunstone.
The sunstone was a translucent mineral prized by Viking navigators because it had a natural property that polarized light, making it possible to see through the haze and find the sun on a hazy day - quite common in the North Atlantic. I liked the connection to a primitive navigation tool.
Some code progress:
- Downloads are displayed in a grid form inside a popup menu with a progress bar
- I’ve added a (non-functional) bookmark editor button next to the address bar. Bookmarks should be coming fairly soon.
- If the tab bar or the command bar are hidden, those settings now persist across sessions.
- When the tab bar is hidden, the tab overview button is shown and the new tab button is hidden. You can still create a new tab from the button in the overview or from ‘Ctrl/t’. Keeps the interface cleaner.
#WebBrowser #sunstone #programming #Vala #Gtk
A little work done on my web browser. I'm working on bookmarks, and instead of storing them in a text file like I originally planned I'm going to try out storing them in an sqlite database. Some of that infrastructure is in place. Bookmarks are going to be tag based rather than in folders, so you can tag a bookmark with multiple categories and it will show up in all of them. I think that's a better way of organizing them than the traditional folder view.
Downloads are working now, but the only feedback happens at the end of the download when it either finishes or fails. I'm working on a download widget that will provide progress bar, estimated time left and a cancel button for each download. Not sure if I want to stick downloads in a popover menu like Epiphany and Firefox do, in the sidebar, or in a dedicated tab (which gives the most space for feedback). Once I've added persistent settings I'll also add settings for choosing download locations. Right now it just defaults to ~/Downloads.
Speaking of feedback, there is a spinner on each tab button that lets the user know that a page is loading. However, there is no user feedback when the tab bar is hidden, so I'll be adding something to address that. Probably I'll add a spinner that is only shown in the control bar if the tab bar is hidden. I may add a very slim status bar at the bottom that will only show if the control bar is hidden, which will show some feedback when the rest of the interface is hidden. That requires adding some custom css, because I want it to be really slim and out of the way.
Currently 46° outside. The snow and ice are finally melting off the driveway enough to get the bike or for a ride. Had it out earlier picking up some candy for my wife for valentine's day and it immediately made me feel better than I have in months.
Posting from Swb for the first time. Just enabled persistent cookies, so logins will persist across sessions. Some other goodies as of today:
- favicons in tab labels
- loading feedback via a spinner in the tab labels
Lots of other smaller features are underway but not finished. I did some groundwork on vertical tabs this morning, and layed out the classes for history storage.
#swb #vala #WebBrowsers
Some progress on Simple Web Browser today.
- Forward/Back/Reload implemented
- Control buttons are sensitive only when they do something (ie, forward button is greyed out if you can't go forward)
- Added a shortcut to focus the address bar
- Change text in address bar and window title when changing tabs
Repository is now public. Right now this is just called Swb, or Simple Web Browser. Open to naming suggestions.
Swb is being written in Vala using WebKitGtk. I've been daily driving Gnome Web since Mozilla's new CEO decided that Mozilla should be an AI company, but I'm cheap (actually quite poor) and have a crappy laptop with a small, low-resolution screen and I hate that there's no way to reduce the size of the interface. That was the original motivation, anyway.
I used DWB back in the day, and Qutebrowser for a number of years until I couldn't stomach the idea of Blink taking over the web. I love a browser with a minimal interface that can be driven from a keyboard, but I don't want to saddle people with Vim style keyboard shortcuts or make the thing unusable for newer users. The idea is to build something usable by people who just fired up their first Linux installation last week, and also for those who live 99% of their time on the command line. But I want those advanced users to have tools like short bookmark aliases (qutebrowser calls them Quickmarks) and easily configurable searchengines where you just prepend a short alias to the search query to tell it where to search. The sort of tool that you can use right away, but that you can grow into using really productively over time.
There is a ton left to do to make it what I want it to be. Right now it's sitting at just over 1100 lines of code and is basically just a minimally viable proof of concept. No saved state or settings, no bookmarks (yet) and not all browsing features like back/forward/reload are implemented. I'm putting it out there to hopefully attract contributions, so as such it's GPL3 licensed and has a code of conduct based on the one that the Rust project uses.
I mentioned a little while back that I was considering starting a new browser project using WebKitGtk. The result, written in Vala, is nearing minimum viability. Right now it's nothing special, just a simple tabbed browser that's missing a lot of features, but the skeleton is good and you already get some goodies that Gnome Web doesn't give you:
- Ability to hide the tab bar
- Ability to hide the address bar and other controls
- When the tab bar is hidden, am overview button appears in the controls like on a mobile browser
Once I have what I consider minimally viable, I'll make the repository on Codeberg public and link to it.
Ok, something other than politics for a minute. Browsers.
I started daily driving Gnome Web around the time the new Mozilla CEO announced the AI-heavy focus for the company going forward. I’m not having any problems with WebKit as a rendering engine, but I think the interface leaves a bit to be desired for my uses. Here’s my complaints.
- The interface takes up too much screen real estate on small laptop screens
- Bookmarks are currently not even working for me
- I already miss the vertical tabs option from Firefox
- I’d like an option to hide the tab bar completely
- I’d also like an option to hide the header bar / url bar when not needed and just bring it up with a keycombo
I’m toying around with starting a WebKitGTK+ based browser to address these things and possibly other issues. The idea is a very minimal interface, driven as much as possible by keyboard but using the same shortcuts that people are used to from conventional browsers like Firefox or Chromium. Configurable so that you can have the tab bar and address bar shown or hidden, so that new users don’t freak out when they don’t see a place to input where they want to go. Probably not too different from Gnome Web in it’s default form, but more configurable.
I’d like input and ideas here. I’m not even sure what language I want to use at this point, but I’m leaning towards something nice and easy for others to contribute to like Vala or Python, since GTK+ and WebKitGTK+ wind up doing most of the heavy lifting. GPL3 right from the start. FWIW I’ve gone partially down this road previously with a little toy browser using WebKit and Gtk_rs, so I have some idea what’s involved.
#browsers