new: programming/new-tab

This commit is contained in:
リキ萌 2025-06-05 19:06:54 +02:00
parent 767da3d956
commit ca127a9411
2 changed files with 201 additions and 0 deletions

View file

@ -0,0 +1,194 @@
%% title = "on changing the Firefox New Tab, and software freedom"
% id = "01JX0G5CN5H8S7S3M4619R112A"
- the date is 4th of June, 2025.
% id = "01JX0G5CN5NYWPNCRTDF05NA26"
- a young riki moe comes up with a _\~brilliant\~_ idea:
> I will customise my browser's New Tab page! it'll be so cool, i'll put some cool artwork there and it'll be way more fun to look at than my current `about:blank`
% id = "01JX0G5CN5J7N58SKKH6KN09YF"
- so he innocently opens a blank .html file, and starts typing away.
% id = "01JX0G5CN50MBYT24D1MRK982H"
- armed with his text editor and knowledge of web technologies, he conjures up a minimal, yet aesthetic New Tab.
% id = "01JX0G5CN5DM7E3WH3YZP1701D"
- pleased with the result, he goes to his Firefox's settings, sets the page as his homepage, and goes to also set it as the New Tab page...
% id = "01JX0G5CN5K0PR3QHFHC3C3T87"
- only to find that there is no such option.
% id = "01JX0G5CN511DJ29F4J7YF7F6R"
- bemused by the asymmetry in the browser's Settings page, he turns to [Kagi](https://kagi.com) in search of answers, and finds [this page](https://support.mozilla.org/en-US/questions/1085762#answer-786861), where a community member says:
> Firefox 41 no longer uses the browser.newtab.url setting in about:config because it was constantly attacked by malware. Starting in Firefox 41, you need an add-on to change the new tab page.
% id = "01JX0G5CN514HQC0HJHV0DPXZW"
- Sigh.
% id = "01JX0G5CN5MGPAJNPNRJJWYFCP"
- so he turns to an extension proposed by the community member, only to find its UX subpar.
% id = "01JX0G5CN5EMKHBQ4XT7V57S6K"
- he opens a new tab, and the address bar is focused, but the URL is not selected... so to type over it he has to hit `<kbd>Ctrl</kbd> <kbd>A</kbd>`{=html}, and only _then_ he can type in his search query.
% id = "01JX0G5CN57RJH0Y4PCNWY6BFC"
- (we'll glance over the fact that this whole affair required him to set up an entire web server on his PC, because extensions can't navigate to `file://`.)
% id = "01JX0G5CN5WRF5WXAPZZZD4TA5"
- he decides to declare a bitter victory, and goes to sleep for the night.
% id = "01JX0G5CN58DPB7S5E9RGHE821"
- ...
% id = "01JX0G5CN5MP38ZHWT4KQPD8QH"
- the next day. 5th of June, 2025.
% id = "01JX0G5CN533256QHE8KK80JSG"
- unsatisfied with the subpar UX, he decides that he must create a browser extension himself.
% id = "01JX0G5CN5SZGQ3CTT9DP8QJVF"
- so he turns to [Mozilla's official documentation](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension), and conjures up his first ever `manifest.json`...
```json
{
"manifest_version": 2,
"name": "riki's new tab",
"version": "1.0",
"description": "riki.moe's new tab page!",
"icons": {
"48": "icon-48.png",
"96": "icon-96.png"
},
"chrome_url_overrides": {
"newtab": "index.html"
},
"chrome_settings_overrides": {
"homepage": "index.html"
}
}
```
% id = "01JX0G5CN5SSANM732FB8M6ZSV"
- and with `about:debugging`'s help, installing the extension temporarily, everything seems to work!
% id = "01JX0G5CN57TB4QYCGQQ14B6HV"
- so, as suggested by [another guide](https://extensionworkshop.com/documentation/publish/package-your-extension/), he zips up the extension's files and goes to Firefox's Extensions to install it permanently.
% id = "01JX0G5CN591B70QCPGJJFE191"
- but what's this!?
> This addon could not be installed because it appears to be corrupt.
% id = "01JX0G5CN5VJJ02N2JVMHHGQ49"
- okay now folks. This [browser]{style="color: var(--syntax-function)"} is [Pissing]{style="color: var(--syntax-function)"} me off. I'm the original [ ]{style="white-space: pre;"} [Starwalker]{style="color: var(--syntax-function)"}
% id = "01JX0G5CN547317B3MJ248MZQZ"
- so! he looks for any issues with his packaging.
maybe there's an unneeded subdirectory?
maybe there's a missing extension ID?
% id = "01JX0G5CN5JNV1BTNJZFSR0GEP"
- or maybe Firefox is stopping him from loading the extension... just because?
% id = "01JX0G5CN5XF90PKNZY888MM60"
- so he takes a wild guess: _a cryptographic signature, it must be!_
and looks for a way to bypass that.
% id = "01JX0G5CN5Y817KP7TYAB5ERK0"
- because, fuck that.
why would you need a signature on an extension you're not even gonna share with anyone.
% id = "01JX0G5CN5J2ND0NNKQ1SD87TF"
- and a promise appears! _Firefox Developer Edition_ ~(Electric Boogaloo)~
% id = "01JX0G5CN5KH4PF43CRKW06N1J"
- apparently, there's a special version of Firefox that can load unsigned addons!
so he tries to load his .zip file in that, and...
% id = "01JX0G5CN52V5WWHJ6H0KHA83C"
- it doesn't work!!! :oh:
% id = "01JX0G5CN5YPQYSD7TSNJ5JKPW"
- dismayed, he decides it is time to sign the Deal with the Devil.
he will cryptographically sign his addon.
% id = "01JX0G5CN507D4J286EBQ81DRJ"
- but... that requires a Firefox account.
and an API token from that account.
that you pass in via a command line parameter, because fuck security, I guess.
% id = "01JX0G5CN58HQ49AN421DM0CKE"
- (imagine going through all that security charade, only to find out the official toolkit for web extensions requires passing sensitive credentials in an insecure way... ain't that fun! good thing `fish --private` exists, but huge kudos to all the other processes on my system that may have read `web-ext`'s command line arguments while it was mincing away at Doing the Signature.)
% id = "01JX0G5CN5QQ5W6Y1S9PRTYBSE"
- and a 10 minutes later-break later, he has an .xpi, ready to be chewed on by Firefox.
% id = "01JX0G5CN5SD0MJ5QY9KJCTZQ5"
- and all that.
to change his New Tab page.
% id = "01JX0G5CN5V3RVY3CTAHY5RA6G"
- God bless America.
% id = "01JX0GYAZY3D902X36X7Y1BG6Z"
- freedom of voice, freedom of choice...!
% id = "01JX0G5CN5HHEZ8G2YGBPC562S"
- okay now, story time's over.
as already established, we've teleported ourselves to the US of A, so Now, it's Interrogation Time.
% id = "01JX0G5CN5EF3CE30MQ2YYZSFW"
- why the fuck is this not just a setting.
% id = "01JX0G5CN5BF7PD99J064M3HDZ"
- "because malware." excuse me, but why the fuck is malware allowed to touch my Firefox settings.
% id = "01JX0G5CN5BXAPZ43AYEKGDRV5"
- and why the fuck does loading an extension into Firefox require sending its details to Mozilla and adding it to your online developer profile.
% id = "01JX0G5CN5R6VS27M5GN8WZBP2"
- what if I don't have an internet connection at the moment.
% id = "01JX0G5CN50FY3Q2FYM44366TS"
- what if my addon contains sensitive data that I _really_ don't wanna send to foreign servers.
% id = "01JX0G5CN5MAAGAWRS944E8TSH"
- or what if I just want to change my fucking New Tab page to something I like but don't necessarily want to share with others.
% id = "01JX0G5CN59TGB6HVKCC1PZEEB"
- EVEN IF it's unlisted and nobody can see the addon, this *ABSOLUTELY SHOULD NOT BE NECESSARY.*
% id = "01JX0G5CN5FC4RQH8K0RFPESSQ"
- but hey! at least I have cute furry art on my New Tab page now.
% id = "01JX0G5CN5DQ6EZZQ2H1052X00"
- was it worth it?
% id = "01JX0G5CN5T9DPBGQY21ZSHTYY"
- ...eh, maybe?
I'll let you judge that.
% id = "01JX0G5CN56GC7QS0A40D3V4HN"
- I'm just sorely disappointed at where we've come, where even changing your browser's New Tab page to something custom is considered a security vulnerability.
% id = "01JX0G5CN5SCQFHJ1Q8P74AYYK"
- and this post is not meant to throw flak at Mozilla or, god forbid, any specific individual (or individual_s_).
I understand where a lot of this additional security barrage comes from, and out of sheer care for regular users, I agree with it.
% id = "01JX0G5CN5YFV15HV6YWJ14G8K"
- what I don't agree with is how in the name of security, we're taking away our collective freedoms as human beings.
% id = "01JX0G5CN54C2GM4BGYVRT9FR2"
- I feel insulted that I cannot change the way my browser looks to make it feel more at home, and express my belonging to a subculture.
% id = "01JX0G5CN5XVJXCFMQ99XJENAA"
- and that's all I wanted to say.
% id = "01JX0GYAZYJA8R8W5P7RS55TK3"
- this was supposed to be a fun post like, "hey, did you know you can put cool shit on your New Tab page?"
I'm so disappointed it came to this.

View file

@ -26,6 +26,13 @@ if you've been wondering what I've been up to, you've come to the right place.
if you want to read any of the posts, follow the links.
it's like that by design.
% tags = ["programming"]
id = "01JX0GYB1D4W3A6FRPBG738N4F"
- ### [on changing the Firefox New Tab, and software freedom][page:programming/new-tab]
% id = "01JX0GYB1DSPZEKZK9JWZC12FY"
- a rant on how we keep locking down our software and taking away our freedom of expression in the name of security.
% tags = ["music"]
id = "01JQYKYRF2RRY2DEV2Z8MSYJ4F"
- ### [Kettel - Dubio][page:music/dubio]