What are you working on? - Programming On Unix

Users browsing this thread: 13 Guest(s)
mcol
Nixers
(22-01-2021, 06:57 PM)jkl Wrote: Python is a mess, honestly...
I like Python the language, but the ecosystem... not so much. I have to use conda at work and any time I have to run the `conda` command twice as much as damage is caused than improvements.

(18-01-2021, 11:47 PM)phillbush Wrote: I'm sharing some of my old notes on Xlib programming, and writing new ones: https://github.com/phillbush/xnotes
These are super nice, thanks! I'm gonna have to read through that painting one.

I've been lightly working on a wayland compositor, which is now at the point of being almost usable (all it needs is to support the output management and layer shell protocols). It features a zooming interface and the workspace isn't limited to the dimensions of the monitor, so rather than having virtual workspaces like many X environments, you lay out all of your windows onto one giant endless 2D plane and zoom and pan around. My inspiration for this paradigm was editors like GIMP/inkscape/etc, and similarly I plan to let you write notes and draw images on the root window, like post-it notes :) link
seninha
Long time nixers
(25-01-2021, 07:48 AM)mcol Wrote: you lay out all of your windows onto one giant endless 2D plane and zoom and pan around
Nice, a wm with ZUI! There are some X window managers that implement viewports, which also support the 2D plane thing, but not the zooming interface.
jkl
Long time nixers
After a short discussion on the IRC and finding out that macOS has no easy way to do that unless I want to install half of the GNU system, I wrote a tool that lets me ask for today in a week et al. which is handy for planning activities when all you know is the distance between a date and the particular activity’s day.

The current iteration of my code seems to work according to my own specs:
https://code.rosaelefanten.org/dateadder/

I hate to have to solve my own problems...

--
<mort> choosing a terrible license just to be spiteful towards others is possibly the most tux0r thing I've ever seen
seninha
Long time nixers
There is now a wiki to index our personal projects, we can list the software we are working on there.
TheAnachron
Members
Too much to keep track of.

My recent projects:
- blog (50 LOC shell script to generate my blog based on markdown and template files)
- pomo (Script for https://en.wikipedia.org/wiki/Pomodoro_Technique)
- mdps (markdown presentation script that opens the browser to create a simple slideshow with arrow keys to navigate which doesn't pull in 1MB+ of libs from the internet)
- habit (my shell habit tracker)
- dms/mms (My automated document and media management systems which lets me rip media from CDs/DVDs and scan/copy images and automatically tag/sort them and sync them across my devices)
- a lot more
opfez
Members
I recently started work on a 32-bit x86 operating system. As a result of this, I now hate the x86 architecture, but I'm too sunk cost fallacy-ed to quit. Writing a kernel is fun though.

(25-02-2021, 07:54 AM)TheAnachron Wrote: Too much to keep track of.

- blog (50 LOC shell script to generate my blog based on markdown and template files)
I should definitely do a project like this sometime. Right now, my blog is just a php-script that cat(1)'s a text file.
freem
Nixers
working on a monitoring tool which only keeps an eye on daemon's logs, and report if they're down, waking, or up. You can get the logs for specific state of specific daemon, and it's built to handle log rotations.

It prints things with ECMA-48 compatibility in mind, but I intend to make it work with DRM or framebuffer, too. Maybe give it a safety mode, to execve /bin/sh.

I'm still working on it, but my VMs where broken for few weeks, and I just fixed my system, so I'll be able to fix the issues when it's used as a daemon now.
One important thing is, it never allocates memory when it enters it's main loop. I can't prove it, but it should never fail (well... I have some improvements to do here, based on reading of s6 code).
In short, I try to make it a very reliable tool.
freem
Nixers
(25-02-2021, 07:54 AM)TheAnachron Wrote: - blog (50 LOC shell script to generate my blog based on markdown and template files)

I'm curious. What do you do in 50 lines of code? for FILE in *; do cat $header $FILE $footer > $FILE.html; done ?
I mean, there's a lot of things I can see in blogs, like indexing, and I don't see them in 50LoC.
TheAnachron
Members
(28-02-2021, 11:36 PM)freem Wrote: I'm curious. What do you do in 50 lines of code? for FILE in *; do cat $header $FILE $footer > $FILE.html; done ?
I mean, there's a lot of things I can see in blogs, like indexing, and I don't see them in 50LoC.
- Compile template files with markdown content (and variables) into html files
- Generate an index and feed (atom) file for the posts
- Skip non-changed posts/assets from being processed
- Generate a "contents" section with headers of the blog post

I have another 15LOC shell script which adds a bit more complexity (uses some hooks inside "blog") to add syntax highlighting of code, adds quick-svg-icons and alike.
freem
Nixers
(02-03-2021, 04:41 AM)TheAnachron Wrote: - Generate an index and feed (atom) file for the posts
- Generate a "contents" section with headers of the blog post

I'd be curious to see how you did those ones.
ckester
Nixers
Beginning yet another rewrite of ncplay, my ncurses-based frontend for mpg123. I'm going to scrap the linked-list design I inherited from mcplay and replace it with a more cache-friendly array.

I don't really need to do this for performance, which is already good enough, but I want to see what effect this change has on the clarity of the resulting code. (I'm still rather new to data-oriented programming.)
nvlr
Registered
Writing a new toolkit to replace QT/GTK entirely since it talks to X11 and Win32 directly. I noticed that I may have bitten off more than I can chew at times, but with enough persistence and help, I can get through it.

X11 is such a meme on how bad it is...

1. Try to support clipboard copy and paste, realize that you have to reachitect the toolkit entirely into a bigger mess.
2. Try to separate out the copy/paste into an isolated component where it creates it's own X11 display connection so it wouldn't crash the GUI if something went wrong or timed out.
3. Realizes that the implementation/blog post for covering how it works doesn't work on different GUI Toolkit like GTK4+, but works fine on GTK2 to GTK3...
4. Rage Quit on implementing copy/paste
5. Depression set in when realizing that I have to do that ALL OVER AGAIN for drag and drop via XDND Extension on X11...

You know... if I rewrite the copy/paste mechanism, I would've simplify it to just sharing path to shared memory file with a few meta to tell the client what kind of content it is and be done with it. Wayland is not much better either even if Linux community praised it all the time. I had to write a new GUI Toolkit first before I can even get started on replacing X11/Wayland entirely, because it's a chicken and egg problem.
jkl
Long time nixers
The thread about your favorite scripting languages mentioned awk often enough for me to start finally learning it. (Yes, I am the weird guy who uses Perl and sed and grep without ever having needed more than just “print $1” from awk.)

I thought I should write my own implementation, but there already are dozens of them, so I probably won’t.

--
<mort> choosing a terrible license just to be spiteful towards others is possibly the most tux0r thing I've ever seen
ckester
Nixers
I'm not working on it (yet), but nvlr's post about writing a new toolkit reminded me of something I've had on my ideas list for a while now: implementing the ncurses API directly on top of X and cutting out the terminal emulation layer with all its archaic escape sequences.

If anyone's already done this or has explored the idea in greater depth, I'd love to hear about it.
jkl
Long time nixers
I wrote a cat in Common Lisp because I was frustrated that I couldn't do it in ASM.

--
<mort> choosing a terrible license just to be spiteful towards others is possibly the most tux0r thing I've ever seen
TheAnachron
Members
I wrote a handy shell script to convert markdown files to a browser presentation with simple keybindings like arrows and return/backspace. It even uses data encoded svg-favicons to keep it in a single file. It supports 3 layouts so far but I plan on adding a few more.

Edit: Here is some quick example: https://i.imgur.com/xYza9nR.png
jkl
Long time nixers
That looks nice. :)

--
<mort> choosing a terrible license just to be spiteful towards others is possibly the most tux0r thing I've ever seen
venam
Administrators
(26-05-2021, 04:13 AM)TheAnachron Wrote: I wrote a handy shell script to convert markdown files to a browser presentation with simple keybindings like arrows and return/backspace. It even uses data encoded svg-favicons to keep it in a single file. It supports 3 layouts so far but I plan on adding a few more.

Do you have a link to that project? I've been looking since forever for something that supports markdown conversion to HTML without relying on pandoc or nodejs.
TheAnachron
Members
My script just calls https://kristaps.bsd.lv/lowdown/ for conversion.
seninha
Long time nixers
I'm working on a file manager for X11.

It would be called sxfm (simple x file manager, based on sxiv, the simple x image viewer), but I'm calling it XFiles for now. The name can change again before I release it (I accept suggestions).

Here's a video of me browsing my file system and opening some files.
It relies on a script to get icons and thumbnails.
Next steps are implementing file copy and paste (maybe I'll just call an external program to do it), implement (multiple) file selection, drag-n-drop (I have to read XDG drag-n-drop spec), etc.
movq
Long time nixers
Something silly: Yet another font.

7x15 is the perfect size for my screen. Sadly, there are very few fonts in that size. It’s usually 8x16 or 6x14 or something like that. So it’s either too big or too small for me.

For some reason, working with individual pixels is a lot of fun. (I’d do pixel art, but I’m not artistic enough for that.)

I’m using gbdfed as a font editor. Just for fun, I might write a BDF editor at some point, probably to get to know Rust or Go a little bit better. Or maybe I’ll do it in x86_64 assembly as a brain excercise (because I’m hardly using that thing anymore lately).
seninha
Long time nixers
(10-07-2021, 12:49 PM)movq Wrote: Something silly: Yet another font.
Looks really nice! Did you use another font as base or did you create the glyphs from scratch?
movq
Long time nixers
(10-07-2021, 02:14 PM)phillbush Wrote: Did you use another font as base or did you create the glyphs from scratch?
Bit of both. The font was technically created from scratch, but I did a lot of work on qsqs before (which is a fork of sq) and was heavily influenced by that.
srp
Long time nixers
Since late 2016, I've been working on BibleBot, a Discord bot for Christians (mainly Bible referencing and important resources like catechisms, historical documents). It's grown to be the largest religious Discord bot and it's certainly been a blessing. I founded a non-profit around it late last year and that also has been going rather well.

As of late, I've been getting my VPS infrastructure setup for different services. I have one for The Lounge IRC client, one for Trilium as I became rather fascinated with the whole memex/digital garden concept, and one for Urbit (I'm ~difsel-sorsul on there if anyone's looking to meet up).

This all comes after finally migrating my desktop over to Linux after keeping it on Windows for the longest time. With the Steam Deck announcement, the last barrier (gaming) was removed for the most part, especially with such a backing. I'm running on Arch, which I would've typically used Fedora (what I'm most comfortable with), but I like the balance between my hand-holding GNOME and my ability to have control of the intricate details.

In terms of programming projects, I'm looking to implement a lightweight, single-user pastebin clone (I know, real original) in Golang. I just gotta get the motivation flowing. :P
~Seraphim R.P.
the artistnixer formerly known as vypr formerly known as sticky
venam
Administrators
(29-07-2021, 02:37 PM)srp Wrote: one for Trilium as I became rather fascinated with the whole memex/digital garden concept
There's this other thread I created where we keep updating with ideas and links related to this idea. If you got anything new push it there. Ironically, there's also another one where we discuss having less ties with our machines. These aren't necessarily paradoxical ideas, but fun to see the threads side by side.
srp
Long time nixers
(29-07-2021, 02:52 PM)venam Wrote: There's this other thread I created where we keep updating with ideas and links related to this idea. If you got anything new push it there.

I'll be sure to check in with Trilium and what I found of the landscape.

(29-07-2021, 02:52 PM)venam Wrote: Ironically, there's also another one where we discuss having less ties with our machines. These aren't necessarily paradoxical ideas, but fun to see the threads side by side.

My short-term memory has pretty much gone down the hole since 17 (22 now) thanks to ADHD, so suffice to say this helps fill that void. That is if I don't forget about it being installed.
~Seraphim R.P.
the artistnixer formerly known as vypr formerly known as sticky
freem
Nixers
(10-04-2021, 03:14 AM)nvlr Wrote: Writing a new toolkit to replace QT/GTK entirely since it talks to X11 and Win32 directly. I noticed that I may have bitten off more than I can chew at times, but with enough persistence and help, I can get through it.

That seems interesting. Which tech do you use for that? Which features do you plan to have?

(10-04-2021, 02:08 PM)ckester Wrote: implementing the ncurses API directly on top of X and cutting out the terminal emulation layer with all its archaic escape sequences.

If anyone's already done this or has explored the idea in greater depth, I'd love to hear about it.

Sorry, I have not, but... well, I would start by writing something on top of SDL2 or glfw3 to start with, likely SDL2. The reason is simple: to delay the problems X11 will give you anyway.
Also, I personally do *not* like the curses API, to the point I prefer to use Ecma-48's ref and write my escape sequences myself when I need something.
There are few problems with curses actually.
One thing I don't like is that it mixes low level and high level features in a same lib (moving cursor on particular place and handling of windows/widgets). Would be far better to have 2 separated libraries.
I also do not like it's macro-based API: I try to avoid using macros as much as possible, because this never, really never, helps with long-term maintenance.
I also remember it feels like a bunch of features thrown and hacked together as time passes by, instead of being thought to be a UI library.
I do not remember the other issues I had with it, but those are enough for me to not be willing to use it or anything that tries to clone it.
ckester
Nixers
Yeah, I'm coming to think that for most TUI's stdio and escape sequences are sufficient.
freem
Nixers
Depends, really. If you don't need an actual widget system, yes, it's likely sufficient. Otherwise it's not, but then ncurses still sucks at that since it still mixes both low-level (move here in term, move there in term) things and high-level features (I want a window which is at this position relative to parent).
There is something I'm slowly doing as I'm writing few term stuff: a low level lib. Someday, I may build a high-level lib which uses those codes, but they won't be mixed. Still got to finish the tools to handle signals as properly as possible before, though (terminals mean, you *must* support signals because of sigwinch, and doing so cleanly is *not* easy).
pkal
Long time nixers
I just finished cleaning up a IRC library I wrote for (GNU) AWK a few years ago, and published it here: https://git.sr.ht/~pkal/irc.awk

Would be interested in seeing what others here think of it.