|Mike Kazantsev d7f2be304d|
My Desktop Environment Setup
My configuration and customization bits for WM/DEs.
Currently includes stuff for Enlightenment (E17+).
Feel free to reuse any of this as you see fit.
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 skype, terminals), 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.
Systemd system/user-session units
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.
Enlightenment configs (e/e.cfg.*)
Enlightenment Edje Themes (e/themes)
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.
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.
Has some diffs between gtk2/gtk3 versions, with gtk2 one (still used in claws-mail) having proper distinct borders but bogus highlighted-text color.
- gtk.css: #131521 -> #1e3c61
- gtkrc: "selected_fg_color:#bbe6f2"
Common icons - L4ki/Breeze-Inspiration-Icons (same gnome-look.org set)