My configuration and customization bits for WM/DEs.
Currently includes stuff for Enlightenment (E17+) on X11.
Feel free to reuse anything of value in this however you want.
Table of Contents
Repository URLs:
- https://github.com/mk-fg/de-setup
- https://codeberg.org/mk-fg/de-setup
- https://fraggod.net/code/git/de-setup
It's not some cool tiling setup, as I prefer (and use) fullscreen windows on separate "virtual desktops" anyway. And where I don't (e.g. floating messenger, terminals, mpv), just bind a key to position things at some fixed location/size and/or set these to be persistent for specific app windows.
Don't use DE menu(s?) - either have a key to start what I need (on a constant virtual desktop), use dmenu to launch more rare stuff or just run it from one of the terminals - yeahconsole on top or generic terminal window that's always open on desktop-1.
Notes on specific components of the setup, usually in their own subtrees.
Don't have any *dm (as in GDM, KDM, etc), simply starting WM with screen locker
(enlightenment -locked
) on boot instead, as there's never more than one
physical user here anyway.
systemd --user
+ systemd-logind session setup without *dm is a bit
unorthodox in general, and in my case started through a custom pam-run
pam-session-wrapper binary, with Xorg, WM and everything DE-related started in
user@1000 daemon's "startx.target" - see stuff under "systemd" for more info.
Created/processed by e-config-backup tool (eet/TextX-based parser), and used to detect any new options between version upgrades, or (rare) migrations between config schemas.
Mostly based on ones from E repositories, and might include assets (icons, sounds, etc) from these, so not original by any means, just tweaked slightly.
Terminology color theme ini files can be installing using ./data/colorschemes/add_color_scheme.sh
script from terminology repo, as described in COLORSCHEMES.md, for example:
% ./data/colorschemes/add_color_scheme.sh \
eet ~/.config/terminology/colorschemes.eet dark-fir.ini
Common "top + stuff" vertical layout with radial displays and (mostly decorative) analog/binary clocks on top.
rc.laptop
is a cut-down version of rc.desktop
for smaller screen.
Requres conky lua extension enabled (at build-time, not the case on Arch for some reason) and uses tiny "sens" binary for lm_sensors readouts, started from lua with separate interval, with outputs cached between runs.
Use "make" to build it.
Displaying any lm_sensors data in conky blog post has more details on how it all works.
script=...
option can be used in the main config (e.g. ~/.mpv/config
) to
load lua stuff, like this: script=~/.mpv/fg.status.lua
(one line per script)
Default mpv status line replacement, with all the stuff that default one provides (with a bit nicer format), plus audio/video bitrate and some extra caching info.
Usually can look something like this:
VAS: 00:10:16 / 00:23:40 (43%) -- cached >95% 10s+64M/64M [B/s V:366K A:15K]
Where "VAS" are available streams (video/audio/subtitles), then time/position and buffering% / idle / paused state prefix, cache status (cached/caching, %full, decoded seconds, used/max state in dynamic B/K/M/G units), and then A/V bitrates (same auto-scaled units).
Bitrates are generally useful when streaming stuff over network.
Parameter-tweaker script that abuses --lavfi-complex to produce visualizations (overlaid showcqt + avectorscope filters atm) for audio-only files if window is enabled/available (e.g. via --force-window=immediate) and there's no video stream in it (album art don't count).
I.e. some fancy dynamic swarming/flowing colors instead of just blank black square.
Also includes client events to toggle visualization and other --lavfi-complex filtering (if any) on/off explicitly, regardless of whether it was enabled on start.
Can be used for key bindings, e.g. via something like y script-message fg.lavfi-audio-vis.on
in input.conf, and I'm using that in a player frontend
(emms).
Simple script to remove or manage playback timestamp in currently-playing filename, useful to cleanup or mark/seek whatever transient media files, as you go through them, e.g. one-off downloaded stuff from yt-dlp.
Config used to debounce middle-button clicks on a Razer mouse that I have - apparently common issue with this particular brand. More info in Debounce bogus repeated mouse clicks blog post.
Somewhat-obsolete scripts for whatever startup/init functionality and key bindings.
See fgtk repo for much more of these, incl. a ton of generic DE-independent desktop-related stuff.
Somewhat notable stuff:
-
fgrun - python3 wrapper for dmenu, preserving and deduplicating history, as well as scraping/caching list of binaries for selection there.
-
fgbg - py3/ctypes/sd-bus script to set background in whatever current DE.
Has continuous operation mode to run as desktop session daemon and cycle images, as well as some options to scale/position/process them for DE-background purposes using ImageMagick (via wand-py module).
Image processing is actually quite complicated (mostly copied from earlier aura background-setter project atm), and has plenty of scale/opacity/offset/blur and such options in ImageMagickOpts and ImageMagickTallScale dataclasses.
-
xclipc - obsoleted but useful key-bound script, for adding some processing to some "copy to clipboard" operations, as well as making these more universal wrt diff X selection buffers.
exclip is a more modern, fast and robust replacement for that hack.
-
xinitrc.* - tweaks for various X input/display parameters like keyboard rates and layouts, dpms, mouse/touchpad stuff, xmodmap, etc.
Useful to keep these outside of xorg.conf to be able to change re-apply them at any time without having to restart anything or remember all the commands again.
-
Python3 + eet (EFL lib/tool) + TextX-based parser script for Enlightenment (E17+) config file(s), to backup these under e/ dir here.
Whole purpose of decoding/encoding dance is to sort the sections (which E orders arbitrarily) and detect/filter-out irrelevant changes like remembered window positions or current (transient) wallpaper path.
Don't really need much from these, as browser, mpv, emacs and terminal have their own styles, and I spend almost all in just these few apps.
Used in claws-mail and dialog windows (e.g. rare "Select File" in browser) and context menus.
-
Theme - default GTK dark-mode one,
~/.gtkrc-3.0
:[Settings] gtk-application-prefer-dark-theme = true
-
claws-mail icons - PapirusDevelopmentTeam/papirus-claws-mail-theme (dark-bg version)