Ideas!

Tuesday, April 18, 2023

Ideas!

Sometimes, I have ideas of programs that I would like to see in the world. (And sometimes it’s horrors that I would still like to see because it would be fun)

I do know™ how to program, so I don’t mind putting in some efforts myself to get these stuff out there, but I don’t always have the time or the mental capacity to procduce them. If you have the mental space and motivation to do it though, please do and do not hesitate to ping me about it on twitter, by email at nicolai.blog@dagestad.fr, or anywhere else you may find me 👍

So here’s the list.

The list

An rss reader

I like RSS, it’s a nice way to follow lots of stuff and is not subject to some VC funded algorithm®™. Newsboat is really quite good. BUT… it has a few annoying design choices that I don’t like.

What I envisionned is a litle more UNIXy RSS reader. There would be 2-3 parts inspired by how email can be separated in these components.

  • A reader
  • A local storage of the feeds
  • A synchronizing program

The last 2 could and maybe should be merged into one program.

In my opinion, having the reader as a separate program has some nice benefits. The code would be simple©. Not having to handle any network code in there is nice. And it could focus on doing one thing well, showing the articles of a feed (or list of feeds).

Taking inspiratin from how aerc handles viewing an email, viewing an article should be showing the output a shell command taking the raw feed on stdin and printing the output to stdout. This would allow piping things together for translating, highlighting parts, showing images with sixels - or however you want to handle them. It sounds like a very flexible model.

For the backend, I have though of using a maildir like format (taking inspiration from emails again), this way synchronising between clients would be very easy and only one central point would need to do the polling of the rss feeds.

But having the reader and backend separate means it would be easier to support multiple backends and multiple frontends (an android client might be usefull maybe)

Some attempts have been made by me but nothing is public yet (it has been at some point but I needed to rework it from 0 so I took it down - I think, I don’t quite remeber, but it looked like this at the time

A new web browser!

Here I would like to incorporate a few cools ideas.

First, it would be cool to use servo in this see of webkit/blink browser.

I am very partial to keyboard driven workflow, that is why I am using qutebrowser as my browser. SO I would like this one to be like that as well. But I am hoping to use non android linux on my phones in the future, and so having a more mose/touch oriented interface would also be very useful. If I can combine these two things that would be very cool.

And lastly, I am a sucker for UNIXy behaviours, so I would love to be able to interact with every/most part of the browser though a file system similarly to how tabfs does this, but embeded deeper in the browser to hopefully push the concept to it’s limits.

(Also qutebrowser doesn’t support extensions which is still a bit annoying, so I would like some of that in there as well, and the tabfs concept could be used for that to some extent maybe)

A UI for linux phones

I hope to be able to get rid (at least mostly) of android in the future and use a normal linux on my phone. Obviously, most desktop linux environments are not suited for phones at all. In a somewhat recent past, there has been quite some work on developping the mobile linux world; Phosh, plasma mobile, SXMO and more recently even normal gnome-shell with an interface that adapts itself to a small touchscreen. But I use sway on my laptop and really like the idea of convergence, so I would like to use sway on my phone as well. SXMO would be one way of doing this, but I also like the more usual way of interacting with a smartphone.

The way I envison this is though a set off tools that work together to produce the interaction you expect from a smartphone. I have in mind the following parts that would be the bare minimum:

  • A window switcher
  • An app launcher
  • A status bar

I have started to work™ on this myself already or at least I have though of starting to work on it :3

The window swithcer

For a simple window swithcher, everything is already in place, you just need a window that shows all focusable surfaces and you touch the one you want to focus. This is a bit ugly in my opinion but it would be very easy to make an adroid gingbread like app switcher.

A more recent android or iOS like app switcher could be done either by really doing a lot of work to sway or adding a wayland protocol extension.

The sway butchering way would add a new “mode” to sway in wich the compositor show an expose of every window on the current workspace and unfocuse them all. Then by tapping one window you give it focus and sway would know to get back to the previous presentation it had for the windows but givving focus to the window you chose. This would be extremely sway specific though and there is no way in hell it would ever get merged upstream so it would most likely remain a fork forever.

The other and in my opinion better way, would be to add a wayland protocol extension. This extension would make it possible for a client to get either a capture of every toplevel surface at some instant, or maybe even better, give them a read only access to every other window’s drawing buffer. In this way, this new client can then show a fullscreen window where every other open window is shown and letting the user chose which one they want to focus. This is already something phosh does with a private protocol so it is definitely feasable. Sway would still need to be patched (or maybe wlroots, or both) but it seems like a much more sensible approach.

An app launcher

This one is easy it already exists: casa. Well it exist in an embryonic state, somebody just needs to take it up and finish it.

A status bar

There are a metric butload of status bars out there, adding a new one is maybe not what we need.

Stong contenders might be:

All of theme have some pros and cons. Maybe we are in need of an xkcd 927

A url handler

This one I have already worked on and is actually not bad.

url_handler

I wrote it in golang when it was a language I was learning, and in retrospect that was not the best choice because of the very annoying way golang doesn’t wan’t to integrate with the rest of the OS.

So now I am in the process of rewritting it in another language. I have 2 contenders in mind:

  • rust
  • hare

Rust

I want to learn rust, and I have found a library that would make some of the features really nice

Hare

Hare is a rather young language that looks quite interesting. But beeing young, the documentation is a bit rough around the edges, and the library ecosystem is still a bit lacking, meaning I would probably be making the libraries I need myself.

pass org.freedesktop.secret interface

Some programs want to interact with secrets though a dbus interface so as to not really deal with it themselves. It would probably not be to hard to do this and in fact somebody had at some point the same idea as me and started a project for exactly this, but it seems to have been abandonded. I might try to contact them to see if they are still intersted and update this if I do.

Work on NetworkManager

This is a bit different than the rest, but it would be really nice for a lot of people, including me.

NetworkManager/ModemManager does not hav any way to configure eSIMs. It would be nice if it could.

For this, one or multiple LPA need to be made (Local Profile Asistant) and ModemManager must be made to interact with it. It might be that different devices needs different LPAs, in which case maybe it could be done in a similar way to how modem specific fcc-unlocking works.

This would be quite usefull for people with modems in there laptops but also for all the people who want to use a normal linux on their phones (though as this a a very active community now it wouldn’t surprise me if somebody has had the same idea and is alread working on it)

Apple’s continuum for linux

Losely speaking, something that reproduces lots of the seamless interaction between device you can have when using only apple devices e.g. file sharing, system setting sharing, control of various devices from each other, clipboard sharing, inter-device-application interactions, sms and/or call from whatever device, maybe even the cool camera sharing function, etc…

I would really like to see something like this that is a bit more useable than KDE connect (The devs have done a lot of cool stuff but it just feels clunky outside of KD)

The cursed one

Linux Subsytem for Windows

Now imagine this: windows, but the kernel is Linux !

Combining wine and binfmt-misc, I imagine that something like that might be possible. It would be really fun 🙃

A few AT commands