
support default scheme customization
This allows the user to specify a scheme that should be used to try to open a bookmark if the bookmark is missing a scheme. E.g. `www.example.com` will be changed to `http://www.example.com` or `https://www.example.com` automatically before an open/browse is attempted.
Originally this patch simply forced opening with https, but it has since been modified to default to either http or https, at the user's preference. The default scheme will continue to be http, for now.
Forcing https by default was a suggestion based mainly on my own use case. I have 3,678 bookmarks. 3,670 use https and 7 use http. Of those 7, at least a couple are dead links and a couple are http-only to prove a point.
I keep "https only" on in my daily driver browser (Firefox) and my alternate browser (Chromium). I can still view http sites if I click through the warning.
I did a few lazyweb searches and found a presentation from the 26th USENIX in 2017:
https://www.usenix.org/conference/usenixsecurity17/technical-sessions/presentation/felt
In the video on that page they cover how https is more often available, used, and even defaulted to for many websites, somewhere around 50-90% depending on how you measure it and where you get your data (and this is back in 2017).
That presentation is about a paper by Felt et al titled "Measuring HTTPS Adoption on the Web":
https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-felt.pdf
One of their data sources is MAWI, so I just peeked at MAWI's latest charts:
https://mawi.wide.ad.jp/mawi/samplepoint-F/2025/202510241400.html
I did some super simple math. I can't say if this is at all valid, but I just compared the first two numbers where I saw http and https and found http is 14.4% of the total and https is 85.6%. Looks like I was comparing ip.tcp.http packets vs. ip.tcp.https packets. So that's something there to look at, I guess.
(83894509 ip https packets + 14072651 ip http packets ) = 97967160 total packets
14072651 ÷ 97967160 = 0.144 = 14.4% http packets
83894509 ÷ 97967160 = 0.856 = 85.6% https packets
MAWI data snippet:
```
Protocol Breakdown
protocol packets bytes bytes/pkt
------------------------------------------------------------------------
total 334771299 (100.00%) 364013578524 (100.00%) 1087.35
ip 288108851 ( 86.06%) 307918329080 ( 84.59%) 1068.76
tcp 125995157 ( 37.64%) 190503802981 ( 52.33%) 1511.99
http 14072651 ( 4.20%) 24776980541 ( 6.81%) 1760.65
https 83894509 ( 25.06%) 150210613012 ( 41.27%) 1790.47
...✂️...
```
Anyway, sorry for all this noise, it's really just breadcrumbs in case someone wants to do actual research.
Also I'm really enjoying buku so far. Thank you for sharing it!
Unit tests pass locally.
No part of this commit log message was AI-generated.
---
add --default-scheme to manpage
---
pass default_scheme into browse() as a keyword arg