Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mk-fg/de-setup
Local Desktop Environment setup - X11 WM, conky, mpv, systemd --user and such
https://github.com/mk-fg/de-setup
configuration conky desktop dotfiles lua mpv systemd theme wallpaper xorg
Last synced: 3 months ago
JSON representation
Local Desktop Environment setup - X11 WM, conky, mpv, systemd --user and such
- Host: GitHub
- URL: https://github.com/mk-fg/de-setup
- Owner: mk-fg
- Created: 2012-02-05T19:22:42.000Z (about 13 years ago)
- Default Branch: master
- Last Pushed: 2024-08-18T10:26:23.000Z (6 months ago)
- Last Synced: 2024-08-18T11:38:27.881Z (6 months ago)
- Topics: configuration, conky, desktop, dotfiles, lua, mpv, systemd, theme, wallpaper, xorg
- Language: Python
- Homepage:
- Size: 3.03 MB
- Stars: 11
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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.
[Enlightenment]: https://enlightenment.org
**Table of Contents**
- [General Info](#hdr-general_info)
- [Specific components](#hdr-specific_components)
- [Systemd system/user-session units](#hdr-systemd_system_user-session_units)
- [Enlightenment configs (e/e.cfg.*)](#hdr-enlightenment_configs__e_e.cfg.__)
- [Enlightenment Edje Themes (e/themes)](#hdr-enlightenment_edje_themes__e_themes_)
- [conky](#hdr-conky)
- [mpv](#hdr-mpv)- [fg.status.lua](#hdr-fg.status.lua)
- [fg.lavfi-audio-vis.lua](#hdr-fg.lavfi-audio-vis.lua)
- [fg.file-keys.lua](#hdr-fg.file-keys.lua)- [xbindkeys](#hdr-xbindkeys)
- [bin](#hdr-bin)
- [Themes](#hdr-themes)Repository URLs:
- https://github.com/mk-fg/de-setup
- https://codeberg.org/mk-fg/de-setup
- https://fraggod.net/code/git/de-setupIt'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.[dmenu]: https://tools.suckless.org/dmenu/
[yeahconsole]: http://phrat.de/yeahtools.htmlNotes on specific components of the setup, usually in their own subtrees.
### Systemd system/user-session unitsDon'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.[pam-run]: https://github.com/mk-fg/fgtk/#hdr-pam-run
### 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].[e-config-backup]: bin/e-config-backup
[migrations between config schemas]:
https://blog.fraggod.net/2013/01/16/migrating-configuration-settings-to-e17-enlightenment-0170-from-older-e-versions.html
### 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.iniCommon "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](https://blog.fraggod.net/images/conky_sensors.jpg)
[Displaying any lm_sensors data in conky] blog post has more details on how it
all works.[Displaying any lm_sensors data in conky]:
https://blog.fraggod.net/2014/05/19/displaying-any-lm_sensors-data-temperature-fan-speeds-voltage-etc-in-conky.html`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)
#### [fg.status.lua]
[fg.status.lua]: mpv/fg.status.luaDefault 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.
#### [fg.lavfi-audio-vis.lua]
[fg.lavfi-audio-vis.lua]: mpv/fg.lavfi-audio-vis.luaParameter-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](https://blog.fraggod.net/images/mpv-ffmpeg-vis.jpg)
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](https://github.com/mk-fg/emacs-setup/blob/master/core/fg_emms.el)).
#### [fg.file-keys.lua]
[fg.file-keys.lua]: mpv/fg.file-keys.luaSimple 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].[yt-dlp]: https://github.com/yt-dlp/yt-dlp
### [xbindkeys]
[xbindkeys]: xbindkeys.scmConfig 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.[Debounce bogus repeated mouse clicks]:
https://blog.fraggod.net/2016/05/15/debounce-bogus-repeated-mouse-clicks-in-xorg-with-xbindkeys.htmlSomewhat-obsolete scripts for whatever startup/init functionality and key bindings.
See [fgtk repo](https://github.com/mk-fg/fgtk) for much more of these,
incl. a ton of generic DE-independent desktop-related stuff.Somewhat notable stuff:
- [fgrun](bin/fgrun) -
python3 wrapper for dmenu, preserving and deduplicating history,
as well as scraping/caching list of binaries for selection there.- [fgbg](bin/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](bin/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.[ImageMagick]: https://www.imagemagick.org/
[wand-py]: https://docs.wand-py.org/
[aura]: https://github.com/mk-fg/aura
[exclip]: https://blog.fraggod.net/2018/04/10/linux-x-desktop-clipboard-keys-via-exclip-tool.html
[TextX]: https://textx.github.io/textX/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``:
``` ini
[Settings]
gtk-application-prefer-dark-theme = true
```- [claws-mail] icons - [PapirusDevelopmentTeam/papirus-claws-mail-theme] (dark-bg version)
[claws-mail]: https://www.claws-mail.org/
[PapirusDevelopmentTeam/papirus-claws-mail-theme]:
https://github.com/PapirusDevelopmentTeam/papirus-claws-mail-theme