new: programming/new-tab
This commit is contained in:
parent
767da3d956
commit
ca127a9411
2 changed files with 201 additions and 0 deletions
194
content/programming/new-tab.tree
Normal file
194
content/programming/new-tab.tree
Normal 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.
|
|
@ -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]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue