New tab extension

I made a Chrome new tab extension because I wanted to be able to put as many links as I wanted on my new tab page. It also has a basic notepad, shows the weather using OpenMeteo and NOAA data, and has Todoist integration (you have to supply your own Todoist API key if you want that to work, though). It's not published as an extension, but I might do so in the future.


A screenshot of the my new tab extension, showing a background with some flowers, links to various websites, and weather
A screenshot of my new tab extension.

It's written in pure JS/CSS/HTML, because I started it before I learned any frameworks. As a result, it's not the prettiest thing, but I've been looking at it every day for a couple years now, and it's not too bad. It has a variety of different background images, all of which I took myself.

Almost everything is draggable, including the clock, links, weather, notes (not shown), and the Chrome links section (settings, history, etc). The links and clock can be snapped to rows, and I attempted to make the links not overlap each other. This mostly works, but it does force the links off the edge of the window if you drag it over one that's near the edge.

Features

Links

I started making this because I wanted to be able to add a bunch of links to my new tab page, so that's the main feature. Once you add a link, you can drag and drop it anywhere, or have it locked to rows for prettier alignment. Just don't change your window size, because I used absolute positioning for the links. You can edit, delete, and reset the links. (Reset in this case refers to putting links back in the starting div)

The favicons are mostly gotten with Google's favicon finder (I know it's not really meant for this, but if I'm the only one using it I figured it would be fine). Perhaps ironically, it doesn't work for Google services like docs, Gmail, etc. so I hardcoded those in.

Weather

As I mentioned before, I'm using OpenMeteo and NOAA data for weather. It used to use Dark Sky, but I switched away from that because Dark Sky is shutting down. I used Skycons for the weather icons, and I made the moon phase icon and temperature display bars. In options, you can have it set dark mode automatically based on the current weather conditions.

A screenshot of my new tab extension in dark mode
In dark mode, with notes.

Notes

The notes feature is just a textarea with some very basic features added with Rexeg. It can do automatic bullet list continuation, tab to indent, and Ctrl+Shift+K to delete a line. (I'm used to VSCode shortcuts)

Sync

This uses the Chrome Storage API to sync all link, notes, and options data between tabs/windows/devices with the same Chrome account.

Chrome links

I added links to settings, bookmarks, history, etc because I often use my laptop in tablet mode (360 degree hinge) and it's very convenient to have those right there to tap on. The alternative is to either open my bookmarks that I have too many of (hard to navigate with touch) or open the touch keyboard and start typing, which is slow and error-prone.

Todoist

If you supply your own API key, you can see your Todoist projects, add new tasks, check them off, and delete tasks. Everything else you have to just go to the Todoist site, because I haven't implemented it (yet).

A screenshot of the Todoist panel, showing tasks to do for this portfolio.
Todoist panel

Keyboard shortcuts

As a sort of hidden bonus feature, I added a few keyboard shortcuts, like Alt+Shift+Left Arrow to move the current tab to the left, and Alt+Shift+Right Arrow to move the current tab to the right. (Also some more that I forgot)

Exporting

If you switch browsers, you can export and then import your links and their arrangement.

Type: Browser extension

.

More projects!

A screenshot of the activity tracker "Something Good Today"

Another SvelteKit project, this time with Firebase integration for accounts. It's an activity tracker I made mostly for myself, so I could track if I did something I felt good about every day (hence the overly generic name).

More ›
A screenshot of the wacky blog I made, Deru's Book of Made-Up Facts

A blog for my family to post random crazy things to. Made with Sveltekit and Sanity CMS. This is the first project I made with Sveltekit, and also the first thing I made with any sort of back end.

More ›
A screenshot of my cube timer, showing some solve times I did.

I made a timer for speedcubing. This was the first project I made with regular Javascript and manipulating the DOM and stuff. I would say it looks boring at best, because I was terrible at CSS at the time. I was also trying to cram way too much stuff on to the screen at once, especially for mobile.

More ›