Skip to content

mk-fg/de-setup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My Desktop Environment Setup

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:

General Info

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.

Specific components

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.*)

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.

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

conky

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.

conky-sensors

Displaying any lm_sensors data in conky blog post has more details on how it all works.

mpv

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).

mpv-ffmpeg-vis

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.

bin

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.

  • e-config-backup

    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.

Themes

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.