A simple start page that gives a minimal search bar and a few quick links. It is also a RSS/Atom feed and Youtube feed aggregator.
- The application only requires a binary/executable and a configuration file to work. Additionally a database file (sqlite) and log file is created in the configuration folder. These are the only artifacts you need to care about if you choose to uninstall the application.
- Note: The database file and log file will be created by the application by itself in the config directory.
- Grab the
.bin
executable from releases section. And put it in some directory that is included in the$PATH
variable such as$HOME/.local/bin
- Create a directory in user configuration home
$XDG_CONFIG_HOME
which usually is$HOME/.config
. Name the new directory asstartpage
and createconfig.yml
inside the directory. The default configuration is provided at config.yml with required hints on how to use it. - Now depending upon your WM/DE, this step may differ:
- Check how WM/DE implements starting programs. This might help.
- If your WM/DE implements XDG Autostart, all that needs to be done is to create a
.desktop
file like this under$XDG_CONFIG_HOME/autostart
which usually is$HOME/.config/autostart
. - Else consult your WM/DE documentation and start the application appropriately. For example, hyprland requires you to start programs using
exec-once
inhyprland.conf
.
- Grab the
.exe
executable from releases section. And put it in some folder that you would like. - Next you need to create a folder
startpage
in your user configuration folder. This can be reached using the%USERPROFILE%
environment variable. Use it with the run window or use it with the file explorer address bar. Check out this article if you are still unsure. - Create a config.yml inside that folder with the contents in the default config.
- Next add the exe executable into Windows startup application. Refer this article if you need help.
- At last, set your default startup home page in your browser to
localhost:<PORT>
which by default islocalhost:8080
.
- Once you have this in your Autostart, it will start running every time you log into your account.
- The quick links and feeds can be added to config.yml file as desired. Refer the comments in the default config.yml to learn more and how to add feeds and links.
- Note: The more feeds you add, it may take some time for the application to collect all feeds, depending on the internet speed and processing capabilities. So if you immediately open the browser after logging in, you may not see the refreshed feeds.
- You can navigate through search, RSS/Atom feed and Youtube feed using the buttons on the left.
- As for RSS/Atom and Youtube feeds, clicking on an item would mark it as read/seen and would put it in your history. You can alternatively mark items as read/seen using the eye button on the right.
- One can navigate across unread/new items, read/seen items and favourites. You can add read/seen items to favourites by clicking the star button on the right.
- Note: If you would like to change the look and feel of the application, you need to make changes to source code files and build the application yourself. All the web assets and source files are embedded into the binary/executable.
- Youtube actually exposes a RSS media feed for every channel on the URL
https://www.youtube.com/feeds/videos.xml?channel_id=<channel ID>
. However getting the channel ID is not that straight forward. - You can view the source of the channel page and search for
channelId
and you'll most likely see a string starting withUC
. That's the channel ID. - Or you could use a bash one liner that I put together to get the link nice and easy.
curl -s "channel link goes here" | grep -o 'https://www\.youtube\.com/channel/[a-zA-Z0-9_-]*' | uniq | awk -F/ '{print "https://www.youtube.com/feeds/videos.xml?channel_id="$5}'
- Or for windows users, here is a powershell equivalent one liner:
Invoke-WebRequest "channel link goes here" -UseBasicParsing | Select-String -Pattern 'https://www\.youtube\.com/channel/[a-zA-Z0-9_-]*' | ForEach-Object { $_.Matches.Value } | Sort-Object -Unique | ForEach-Object { "https://www.youtube.com/feeds/videos.xml?channel_id=$($_.Split('/')[4])" }
I am not very comfortable with frontend designing. So the base HTML and CSS of the application that is presented was built by ChatGPT, upon which I made changes and tweaks to make it look like it is now. Still gotta give where credit is due.