What software have you made to improve your workflow or rice? - Desktop Customization & Workflow
I've accrued a bunch of software to scratch workflow itches over the years, and I assum a few of you have done the same, so I thought it'd be fun to have a thread where we share our tools.

I'll start:
  • beanbar, my web-based status bar, because it's nicer to write new interactive widgets in javascript than in C
  • mauncher, my dmenu-like launcher, because I couldn't find any good dmenu alternatives which support wayland natively and support display scaling well (bonus: mmenu, a tool to add a python-based calculator/equation solver/base converter/etc to a dmenu-like launcher)
  • swaylock-effects, a fork of swaylock which adds a clock, screenshot capability, and a bunch of image effects like blur and vignette and scaling
  • facematcher, to unlock my laptop with my face using its infrared camera
  • mouseless, a Firefox add-on to browse the web without using the mouse as much
yaki is an organizer/todo list program I wrote that really helps me organize my ideas for programs and other things. (The documentation is sparse but I'll update at some point)
[ oh yeah ]
sym is a straightforward batch symlinker developed to easily install and uninstall dotfiles.

It's basically an implementation of the feature subset 99% of GNU Stow users use to (un,)install their dotfiles, with a cleaned-up command line, sane defaults, and multiple args. So instead of something like...

stow --no-folding -t ${HOME} -d shells bash
stow --no-folding -t ${HOME} -d dev-langs python
stow --no-folding -t ${HOME} -d dev-tools tmux

...you can do the equivalent

sym shells/bash dev-langs/python dev-tools/tmux

The README has a more detailed comparison with GNU Stow.

sym does one thing, and does it well :)
(There's also a decent test suite! I've also battle tested it for my own use cases and it works flawlessly.)
I do not "improve my rice".
(23-08-2019, 04:02 PM)jkl Wrote: I do not "improve my rice".
Glad to know! What about your workflow then? :)

I'm not much into ricing either (not anymore at least!), but still write stuff for my workflow:
  • safe - secret keeper that doesn't need gpg
  • pm - stupid but extremely efficient package manager
  • human - convert numbers between units (Mib, Gib, ...)
  • so many scripts I stopped counting...

safe was my answer to my inability to correctly keep/share/maintain a GPG key for use with pass, a CLI password manager. Mine works using a single master password that is defined when storing the first secret, and is used to safely encrypt your secrets. It is shipped with an agent that can remember the key derived from the password so you don't have to input your password for every operation, just like gpg-agent or ssh-agent.
I've been using it for weeks now, and I'm pretty happy with it!

pm is my solution to the complexity of any package building process. My main distro is crux, one of the most simple linux distro out there when it comes to package management. It uses a port tree with really simple build scripts, and there are multiple composable tools to handle the packages. This is the most simple out there, yet I still found it too complex: you had to write a build script (albeit a short one!), then compile and install your software.
pm(1) is stupid: packages are tarballs, and when installing it, pm will list the installed files so you can remove them later. I couple that with a script of mine called "pack" that is basically it:
n=$(basename $PWD)
v=$(git tag|tail -n1)
[ -f configure ] && ./configure --prefix= --mandir=/man
make DESTDIR=$PWD/.rootdir PREFIX= MANPREFIX=/man install
tar -C .rootdir -cj . > $n@$v.tbz
pm -a $n@$v.tbz
The real script is a bit more complex with more checks and default values, but you get it! Thanks to it, when I want to install a software, all I do is fetch the source, then run "pack" inside it and it gets installed! This is a slightly improved "make; make install" version because it keeps track of installed files so it doesn't accidentally clutter my file tree, and also I can install to $HOME easily!
This is good for softwares using a compile time configuration, and any software because you don't need to write a single line of codw to have it packaged!

human grew out of the frustration that not all tools have a --human-readable flag to convert numbers like 47273726 into 47.3M. Nothing fancy, but extremely useful!

Finally, all my tiny little script (not shared online yet) to help me with all the stuff I do.everyday, like build a list of all the hosts in my /etc/hosts,
ssh/known_hosts, .ssh/config, pipe it into a fuzzy searcher for me to pick, and fire up ssh (I manage a list of 1000+ hosts at work, so you can guess how useful it is). I also have some scripts to fetch passwords from an online vault-like password keeper via API, setup a remote socks.proxy for testing acces from the outside world, select a password from safe(1) with dmenu and store it in the clipboard, tidy my mailbox based on a set of rules, open whatever is in the clipboard based on mimetype OR url+Content-type (like "plumb" on plan9), and so on and so forth :)
There is also this one that looks like black magic to my coworkers that is called like this:
$ mpcon '.*-dc[0-9]prd1.*'
It will fireup a dvtm instamce controlled via a socket, use the regex to extract a list of hosts (again from /etc/hosts, .ssh/config, ...) and open and create a new window in the dvtm with an ssh connection to this host. In one command, I connect to a few dozen hosts and can multiplex what I type in one window to all others, thus making me the great lord of the servs for administration!

If you're interested, I can share some if my scripts, but they might not be.if any use to you in the current state (lot of hardcoded stuff because it is not meant for wide distribution).

Sometimes I think it would be hyper interesting to sit next to someone and watch them actually use their computer for a day, just to see how they do it, and the tricks they use everyday.
Maybe we should do another screencast video session here at nixers, with real job done! Like pick a task from a random list, and screen yourself while doing it.
Usually I fix my workflow with Elisp, which works well, but when I need something to work system wide I tend to fall back onto C or shell scripts. The most recent example is probably mkskel, that I use to create simple project skeletons (I have collected a few here, but there's still a lot to be done). I end up just having to type

mkskel latex cc0

to generate a latex article with all the usual usepackage's and a CC0 license file. Works quite well.
People probably already know this but I wrote mpvc a while back. It's served me pretty well over the years, very usable for all sorts of media playback. A couple of things I'd like to do is to patch fff with custom commands so I can run mpvc more easily from within fff, and eventually a full C rewrite would be great too.

A couple of things I did recently was to patch dmenu and lemonbar with proper border support, and I've written a wmutils script under to find the root window, and when it does execute the given command. Like CWM's menu popups, but more customisable with dmenu. Right now I have just my program launcher and a window menu finder, but could be used for other menus too. Again I'd like to write under in C at some point.

i also made a custom css that hides all posts on nixers from jkl .
(06-09-2019, 05:35 PM)budRich Wrote: i also made a custom css that hides all posts on nixers from jkl .

I'm interested!
Hey, https://github.com/cloudef/bemenu works fine on Wayland

Members  |  Stats  |  Night Mode