dragon drag-on with emacs dired

Dragon drag-and-drop The “dragon"1 application (think drag-on) is super handy for #emacs #exwm and probably was made for tiling window managers like iw3m. Go from dired to, eg, Google Drive drag-and-drop. . Footnotes 1 Dragon is available from https://github.com/mwh/dragon

Clojure Libraries in ODH

Intro The following is a copy of a blog post for our organization, originally posted at https://odh.byu.edu/blog/clojure-libraries-in-odh My work with The Office of Digital Humanities is as a senior web developer. My teams and I build applications in the Clojure programming language1 to serve the college of Humanities and the Office of Digital Humanities, and utility libraries that serve the university and the broader developer community. Here are a few of our heavily used utility libraries, which have been used internally for years.

finding and changing a status-bar face

Problem: unreadable font in the mode-line Inquired on Reddit1 I use Bookmarks+, a superb package. But for some reason the status message face when I want to delete a bookmark is night unreadable, and although I can customize all the faces that appear in my actual bookmark list, I cannot figure out how to change that one. So, in principle, how do I find out what face is causing the ugliness when it’s in my status bar (so I can’t do the usual inspecting)?

viewing epub in emacs

Intro I finally arranged my employer to purchase Mastering Emacs1, which provided it in pdf and epub. PDF2 has long since been my standard thanks to being able to view it nicely on all my devices, but I thought I would give epub a try, too. It’s major feature sounds like both emacs-window text resizing, and page memory so it keeps track of where you’ve read. It turns out that the lauded epub mode has some extra steps with the installation.

SystemD devops run and restart services

Getting an app to redeploy as fixes and upgrades are uploaded to a linux server For most webapps I oversee it is desirable to have a mechanism in place not only for having them start when the server reboots, but also to restart the app when I need to deploy an update or (most recently) a fix to the application.1 This process requires sudo access2 and five files for a full redeployment system3:

converting text to pdf

Intro I keep a store of some of my emails as PDFs which I later have print and bound. So, what to do when some of those emails are sent in plain text instead of pdf format? Convert to PDF so they can be bound uniformly. From xmodulo1, there is a two-step process (after dependencies are acquired). Probably there’s a nifty way to do this in one-line, but I haven’t figured it out yet.

One-line CLI mail to multiple recipients with inline content

Intro I found a one-liner that allowed me to test the outgoing mail setup on a remote server. The following one-liner worked, and introduced me to some new-to-me functionality with Bash and Mail. mail -s "Testing Not registration confirmation" -r from@address.com to1@example.com,to2@example.com <<< 'testing 4' Analysis mail The command assumes that you already have a working Mail1 aka PostFix setup on the server you are running on, which means a sendmail setup.

guix xscreensaver issue: file does not exist

Intro Trying to have xscreensaver load my images, I am getting error: xscreensaver-getimage: file does not exist: "~/wallpapers/angels-phonebox.png" No amount of changing file names, user permissions, etc seems to be effecting this. However, it is obviously seeing that that image (and the others in the directory) ARE there; they should be working. Answer: don’t use a tilde ~ in your file path Local is already presumed, so just setting wallpapers as the directory, rather than “~/wallpapers”, did the trick.

How to use-package :custom with a variable in an alist?

Intro What I’m trying to do should be obvious from this code: (use-package undo-tree :custom (undo-tree-history-directory-alist '(("." . (concat user-emacs-directory "Undo"))))) But I had trouble getting the syntax right, since use-package is already performing some types of quoting at certain levels. Solution the key was in the proper locations of the syntax-quoote ` and splice , operators. The syntax quote was easy; just swap the reqular quote for it. The splicing operator appears in the location of minimal change, just before the function call that is going to use produce code based on an external variable.

Renewing gpg keys and subkeys

Intro My encrypted orgmode file in which I store my sensitive information suddenly could be opened, but not edited. When I attempted to save I received: gpg: D664BA060CCB9D32: skipped: Unusable public key gpg: [stdin]: encryption failed: Unusable public key A search online indicated that it was probably due to my gpg keys expiring. With a quick update to the process in 2022 and a belief in the value of limited duplication, here is the winning strategy: