Search Results for “bspwm” – eirenicon llc https://eirenicon.org Working together for success! Sun, 11 Feb 2024 15:21:15 +0000 en-US hourly 1 https://wordpress.org/?v=6.7.1 https://i0.wp.com/eirenicon.org/wp-content/uploads/2019/03/cropped-eirenicon-1.png?fit=32%2C32&ssl=1 Search Results for “bspwm” – eirenicon llc https://eirenicon.org 32 32 61586100 spectrwm- Review & Tutorial https://eirenicon.org/spectrwm-review-tutorial/ Sat, 10 Feb 2024 16:32:56 +0000 https://eirenicon.org/?page_id=3818 Revision Dates:

11 Feb 2024


This posting is intended to function not only as a tutorial but, also, as a review and commentary on my ‘long-term’ use of spectrwm as my primary window manager (long-term, meaning at least one month of daily use).

Included in this post will be my lessons-learned, dotfiles, etc.

Note:
The materials contained in this article will be updated on a semi-irreglar basis.

To quote from the spectrwm github site:

“spectrwm is a small, dynamic tiling and reparenting window manager for X11 [no Wayland here]. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults, and it does not require one to learn a language to do any configuration. [Note: true enough, but in certain areas, mind reading skills seem to be required in order to figure things out and make them work correctly.]

spectrwm is written by hackers for hackers, and it strives to be small, compact, and fast.

spectrwm was largely inspired by xmonad and dwm.

…in classic OpenBSD fashion (put up, or hack up), a brand new window manager was whooped up to serve no other purpose than to obey its masters.”

GitHub

Given you are reading this on the eirenicon.org website, I am guessing that you might appreciate my opinion on the above. I generally agree.

spectrwm is a useful, unique, fast tiler. Much like dwm, i3wm (SwayWM) and hlwm, I find it enjoyable. After a lot of hacking around, I have cobbled together a spectrwm ‘setup’ that seems to meet my ‘fancy’. I will provide all my edited spectrwm related dotfiles (my cobbling) in this article. Given I am planning on using my arrangement as my primary desktop, for at least a month, I will continue to capture and share what I learn, to save my ‘little grey cells’ and help others on their journey.

What follows is an image (proof-of-life) screenshot. Briefly, the image highlights two menus (dmenu & j4-dmenu-desktop); xfce4-terminal screen running pfetch; polybar panel with systray; a yad pop-up displaying keybinding short-cuts; Debian sid/trixie use; 10 available/used workspaces; and, an unsplash wallpaper.

FWIW: the color-scheme in use is ‘everforest‘ with Papirus-Dark icons (colored bluegrey).

To begin with, I will share how I built my ‘setup’. As always, everything I have constructed is here for the taking. My dotfiles, scripts, etc. are , also, probably worth what you will pay for them… See my guarantee at the bottom of the page.

Installation

Installing spectrwm is quite straightforward. Getting the version I use, may be a bit more challenging I am not certain that version 3.5 has been migrated through to Debian stable. It had not been there the last time I looked. If you are running on Debian Sid or perhaps even Debian test, you may be able to use the following command to install spectrwm, remember to use either sudo or doas (depending on your setup).

sudo apt-get install spectrwm

Beyond that you will likely need the following items, if you don’t already have them installed. Again. this is a simple listing of a few tiny scripts that you can cut & paste into your terminal:

Helpful if you plan to use Trixie/ Sid:
sudo apt install libavcodec60 libavcodec60 libavformat60 nala mousepad

Other useful apps (you may need others):
sudo apt update && sudo apt install catfish debhelper diodon dnsmasq fakeroot ffmpegthumbnailer file-roller feh fonts-hack fzf gcc geany geany-plugins git glances htop i3lock-fancy j4-dmenu-desktop jgmenu libx11-dev libxft-dev libxinerama-dev lm-sensors lxappearance make mate-power-manager mousepad nala neofetch nitrogen nmon nsxiv pamixer pasystray pnmixer polybar powertop rofi ranger rxvt-unicode sxhkd slick-greeter stacer synaptic thermald thunar tlp udiskie wavemon wmctrl xautolock xcompmgr xdo xdotool xfce4-screenshooter xorg wget yad

What follows are essential items that you will need. You may implement these as I will as I suggest or find a more comfortable way that appeals more to your style/ preferences.

First & foremost, spectrwm requires a config file. I will include the one I use. This files needs to be named .spectrwm.conf It will be stored as a hidden file (when correctly named as .spectrwm.conf) and is best when it is located in your $Home directory.

Here is a copy of the file I use (at this writing)

Because I tend to share much of my x11 configuration among multiple window managers, I tend to store those shared functions via .xessionrc (if I am running on arch, I place the identical content in .xprofile). The extracted file (from below) needs to also be placed in $Home.

A copy of my .xsessionrc (.xprofile) file is available via this link.

The next build requirements are for a panel bar (top bar). I use polybar for mine, but you have the option to use spectrwm’s own panel or conky (conkybar). Rather than pointing to my polybar (config), I will provide links to where you can access further information on the various easy (?) to use options. Should you really want my polybar config, use the contact page to request a copy. :

Overall comments

General observations about living with and using spectrwm include:

  • I have never actually tested speed, but spectrwm seems very spritely (fast). It seems every bit as fast as dwm, hlwm, i3wm, bspwm… If you look below to review my config, you will note that my hardware is not ‘exactly’ a good platform for discriminating marginal ‘lower’ level performance.
  • Memory use is, also, in roughly the same arena as the other tilers I use.
  • The spectrwm workflow is unique. It took me awhile to become acquainted with the standard flow and gain comfort in using spectrwm (see ‘Downside(s)’ below). I did have to bend, fold, and spindle the environment a bit (but then they claim to be for hackers. Well I hacked. I now class myself as a genuine spectrwm ‘fan’.

Downside(s):
(Work arounds/ hacks for Conky, panel, and color issues are included in the dotfiles available in this posting)

  • Conky: I find that I miss being able to use all of conky’s desktop features. Because I am unable to use conky for the Desktop display of my keybindings, I have had to provide new/ different Keybinding memory aid (via yad). Being able to run conkybar is nice, but it is just not the same as running everything conky is capable of…
  • Transient Errors: There seem to be some peculiar transient video and keyboard related errors that appear in spectrwm running Firefox. I ‘sometimes’ lose keyboard access and/or get flickering pop-ups (right-click menus flickering in & out). I can not determine the actual cause of these ‘glitches’ nor determine if the cause is either with spectrwm or Debian sid. Such is life on the bleeding edge of Debian.
  • Native spectrwm panel: Honestly, I find the native panel too troublesome and limited to use. The friendly (not!) scripting for the native panel is in places (like formatting & colors) all but incomprehensible. Having stumbled upon ways to use either polybar or conkybar have made spectrwm much more friendly and usable to me. Such is my opinion.
  • Color specification in the configuration file. Why in the world does the color scheme have to be so unique and uncommon? I finally have it working, but getting the colors tweaked has be an absolutely unnecessary chore (come on guys, use hex colors.) I know this is a personal problem. I’m over it now and you can see the results in the provided .spectrwm.conf dotfile available here.

The future:

I do not have any insight into where spectrwm is headed. It seems that spectrwm’s future in the Wayland world is a mystery. I have hunted for information on future plans, to no avail. Perhaps, you have something to share that you have discovered?!?!


inxi -F (system specs under test)

System:
Host: debian Kernel: 6.6.13-amd64 arch: x86_64 bits: 64
Desktop: spectrwm v: 3.5.1 Distro: Debian GNU/Linux trixie/sid
Machine:
Type: Laptop System: Dell product: Inspiron 16 5620 v: N/A
serial: <superuser required>
Mobo: Dell model: 0R665T v: A00 serial: <superuser required> UEFI: Dell
v: 1.17.0 date: 09/19/2023
Battery:
ID-1: BAT0 charge: 55.8 Wh (100.0%) condition: 55.8/54.0 Wh (103.2%)
CPU:
Info: 10-core (2-mt/8-st) model: 12th Gen Intel Core i5-1235U bits: 64
type: MST AMCP cache: L2: 6.5 MiB
Speed (MHz): avg: 445 min/max: 400/4400:3300 cores: 1: 400 2: 583 3: 557
4: 611 5: 400 6: 400 7: 400 8: 400 9: 400 10: 400 11: 400 12: 400
Graphics:
Device-1: Intel Alder Lake-UP3 GT2 [Iris Xe Graphics] driver: i915 v: kernel
Device-2: Microdia Integrated_Webcam_FHD driver: uvcvideo type: USB
Display: x11 server: X.Org v: 21.1.11 driver: X: loaded: modesetting
unloaded: fbdev,vesa dri: iris gpu: i915 resolution: 1920x1200~60Hz
API: EGL v: 1.5 drivers: iris,swrast platforms: gbm,x11,surfaceless,device
API: OpenGL v: 4.6 vendor: intel mesa v: 23.3.5-1 renderer: Mesa Intel
Graphics (ADL GT2)
Audio:
Device-1: Intel Alder Lake PCH-P High Definition Audio
driver: sof-audio-pci-intel-tgl
API: ALSA v: k6.6.13-amd64 status: kernel-api
Server-1: PulseAudio v: 16.1 status: active
Network:
Device-1: Intel Alder Lake-P PCH CNVi WiFi driver: iwlwifi
IF: wlp0s20f3 state: up mac: a0:59:50:14:86:06
Bluetooth:
Device-1: Intel AX211 Bluetooth driver: btusb type: USB
Report: rfkill ID: hci0 rfk-id: 1 state: down bt-service: not found
rfk-block: hardware: no software: no address: see --recommends
RAID:
Hardware-1: Intel Volume Management Device NVMe RAID Controller driver: vmd
Drives:
Local Storage: total: 931.51 GiB used: 647.24 GiB (69.5%)
ID-1: /dev/nvme0n1 vendor: Kingston model: SNVS1000G size: 931.51 GiB
Partition:
ID-1: / size: 915.53 GiB used: 647.21 GiB (70.7%) fs: ext4
dev: /dev/nvme0n1p3
ID-2: /boot/efi size: 299.4 MiB used: 27.6 MiB (9.2%) fs: vfat
dev: /dev/nvme0n1p1
Swap:
Alert: No swap data was found.
Sensors:
System Temperatures: cpu: 44.0 C mobo: 43.0 C sodimm: SODIMM C
Fan Speeds (rpm): cpu: 2908
Info:
Memory: total: 24 GiB note: est. available: 23.17 GiB used: 4.35 GiB (18.8%)
Processes: 287 Uptime: 1h 41m Shell: Zsh inxi: 3.3.33

Remember, like with all of my work, I am able to provide the following assurance(s):
  • It is almost certainly going to work until it breaks; although I have to admit it may never work and that would be sad.
  • When/if it does break, you may keep all of the pieces.
  • If you find my materials helpful, both you & I will be happy, at least for a little while.
  • My advice is worth every penny you paid for it!

If you have insights on your spectrwm journey(s) to share with our readers, please use the contact page on this site to let me know.


]]>
3818
Memory Use (RAM)- A Brief (Biased?) Comparison https://eirenicon.org/2023/07/23/memory-use-ram-a-brief-biased-comparison/ Sun, 23 Jul 2023 12:23:01 +0000 https://eirenicon.org/?p=3517 I have recently changed my primary laptop’s OS to run Debian Trixie/Sid (BearDog Distro) with Liquorix 6.4. I, also, have added some new Window Managers (WMs) to my single-user space including one non-x11 based Wayland WM- SwayWM.

Given the amount a of change to my environment plus requests from my readers, I have decided to run a memory test to get a rough idea of memory consumption (use).

Be aware this is not a scientific or thorough, rigorous test. It merely provides me with an indication of my various environments.

Other items of interest, perhaps. Aside from Openbox which I have modified to run as a simple manual tiler, all of my WMs are native tilers. Each WM runs the exact same suite of applications on x11; SwayWM runs analogous functions (not applications) on Wayland. Not all my application and application functions are capable of being run on Wayland.

NB.: Dropbox is shown because it runs at login and is a large contaminant in terms of memory utilization on each window manager (setup).  If you do NOT use Dropbox you should expect your idle memory use to be lower than my total by some 600MB.

Given the above robust list of caveats, here are the results of my simple test:

Window          RAM        DropBox
Manager         (MB)         (MB)

BSPWM           1597           587             x11
DKWM             1596           594            x11
DWM               1650           593            x11
HLWM             1629          591             x11
i3WM               1639           586            x11
Openbox         1731            625            x11
SwayWM         1656           568            Wayland

Here are the particulars of my laptop (under test), the following command (inxi -Fxz in terminal) was run on my i3WM.:

System:
Kernel: 6.4.4-1-liquorix-amd64 arch: x86_64 bits: 64 compiler: gcc v: 12.3.0
Desktop: i3 v: 4.22 Distro: Debian GNU/Linux trixie/sid
Machine:
Type: Laptop System: Dell product: Inspiron 16 5620 v: N/A
serial: <superuser required>
Mobo: Dell model: 0R665T v: A00 serial: <superuser required> UEFI: Dell
v: 1.7.0 date: 08/15/2022
Battery:
ID-1: BAT0 charge: 55.8 Wh (100.0%) condition: 55.8/54.0 Wh (103.2%)
volts: 17.0 min: 15.0 model: ATL DELL CFD7224 status: full
CPU:
Info: 10-core (2-mt/8-st) model: 12th Gen Intel Core i5-1235U bits: 64
type: MST AMCP arch: Alder Lake rev: 4 cache: L1: 928 KiB L2: 6.5 MiB
L3: 12 MiB
Speed (MHz): avg: 2287 high: 2500 min/max: 400/2500 cores: 1: 1210 2: 2500
3: 1240 4: 2500 5: 2500 6: 2500 7: 2500 8: 2500 9: 2500 10: 2500 11: 2500
12: 2500 bogomips: 59904
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Graphics:
Device-1: Intel Alder Lake-UP3 GT2 [Iris Xe Graphics] vendor: Dell
driver: i915 v: kernel arch: Gen-12.2 bus-ID: 0000:00:02.0
Device-2: Microdia Integrated_Webcam_FHD driver: uvcvideo type: USB
bus-ID: 3-6:4
Display: x11 server: X.Org v: 1.21.1.7 with: Xwayland v: 22.1.9 driver: X:
loaded: modesetting unloaded: fbdev,vesa dri: iris gpu: i915
resolution: 1920×1200~60Hz
API: OpenGL v: 4.6 Mesa 23.1.3-1 renderer: Mesa Intel Graphics (ADL GT2)
direct-render: Yes
Audio:
Device-1: Intel Alder Lake PCH-P High Definition Audio vendor: Dell
driver: sof-audio-pci-intel-tgl bus-ID: 0000:00:1f.3
API: ALSA v: k6.4.4-1-liquorix-amd64 status: kernel-api
Server-1: PipeWire v: 0.3.74 status: active
Network:
Device-1: Intel Alder Lake-P PCH CNVi WiFi driver: iwlwifi v: kernel
bus-ID: 0000:00:14.3
IF: wlp0s20f3 state: up mac: <filter>
Bluetooth:
Device-1: Intel driver: btusb v: 0.8 type: USB bus-ID: 3-10:5
Report: hciconfig ID: hci0 rfk-id: 0 state: up address: <filter>
RAID:
Hardware-1: Intel Volume Management Device NVMe RAID Controller driver: vmd
v: 0.6 bus-ID: 0000:00:0e.0
Drives:
Local Storage: total: 931.51 GiB used: 702.7 GiB (75.4%)
ID-1: /dev/nvme0n1 vendor: Kingston model: SNVS1000G size: 931.51 GiB
temp: 38.9 C
Partition:
ID-1: / size: 915.53 GiB used: 702.7 GiB (76.8%) fs: ext4
dev: /dev/nvme0n1p2
ID-2: /boot/efi size: 299.4 MiB used: 428 KiB (0.1%) fs: vfat
dev: /dev/nvme0n1p1
Swap:
Alert: No swap data was found.
Sensors:
Src: /sys System Temperatures: cpu: 39.0 C mobo: 40.0 C sodimm: SODIMM C
Fan Speeds (RPM): N/A
Power: 12v: N/A 5v: 5 3.3v: N/A vbat: N/A
Info:
Processes: 268 Uptime: 45m Memory: total: N/A available: 23.17 GiB
used: 2.67 GiB (11.5%) Init: systemd target: graphical (5) Compilers:
gcc: 13.1.0 Packages: 2285 Shell: Zsh v: 5.9 inxi: 3.3.28

Remember, like with all of my work, I am able to provide the following assurance(s):
  • It is almost certainly going to work until it breaks; although I have to admit it may never work and that would be sad.
  • When/if it does break, you may keep all of the pieces.
  • If you find my materials helpful, both you & I will be happy, at least for a little while.
  • My advice is worth every penny you paid for it!

]]>
3517
Fvwm3 Tutorial https://eirenicon.org/fvwm3-tutorial/ Wed, 25 Nov 2020 21:22:02 +0000 https://eirenicon.org/?page_id=2492 In my continuing saga of trying and using window managers (wm), I have installed Fvwm3. By way of providing a bit of background I’ll start by describing my environment:

  1. Fvwm3 is partnered on a single MX Linux 19.3 installation along side of dwm (from Suckless).
  2. Both window managers (Fvwm3 & dwm) operate from within the same user account.
  3. The two wms share about 90% of my total keyboard, desktop, and application infrastructure.
  4. My hardware platform’s description may be found at the end of this tutorial (a ways down below).

Now for the obligatory desktop screenshot:

To begin with you will need to install Fvwm3. Depending upon your Distro this will vary. In my case, I installed Fvwm3 via the TestRepos from MX Linux version 19.3 (a Debian non-systemd base). If you are an arch fan, I am pretty certain that any arch distro offers Fvwm3 from within either their repos or AUR. As for other Buster Debian distros, you most probably will need to compile your install. I don’t know of any beyond MX that provide repo access to Fvwm3.

Note: If you are installing Fvwm3 on a clean base, I recommend you start with a simple xfce installation and install Fvwm in the same user area. I know I’m not supposed to recommend that. But… I am going to recommend later that you clean off everything you don’t need from the xfce4 tools because our objective is to build a clean Fvwm3 desktop.

Remember window managers like Fvwm3 & dwm don’t do everything for you (or as much for you) as Desktop Environments. Having those niceties like a power-manager, screenshooter, etc. is helpful. Certainly you can change whatever you like over time.

Here are the major building blocks I use (you may wish to use what I do or perhaps roll your own.). Here are my heavy hitters:

  • sxhkd: I use this to share keybindings across window managers. I use it ‘mostly for application keybindings
  • .xsessionrc: This is used to autostart (load) system infrastructure functions. If you run arch you can simply rename my .xsessionrc to .xprofile and place it in your home directory.
  • .Xdefaults / .Xresources: I never can remember which is needed for which apps so I make these both the same. They will load magically when you start your system. Their real purpose, in my use, is to add pretty colors to windows and terminals.
  • yad & zenity: These are used to provide a common set of popup help functions across my sundry window managers. Most generally they provide quick access to scripts that either perform system functions or to gain access to help information. I’m old and my remembery needs help…
  • conky: This is used to provide both system information and a degree of eye-candy. Adn, I just like it.
  • rofi: I use rofi for two major functions.
    1. To run my menus that way I don’t have to have weird and different menus on each of my desktops.
    2. To obtain a list of all active workspaces and tasks as well as getting me directly to the one I want.
  • xcompmgr: I am a big fan of this old school compositor because it “just works”!
  • dunst: I use it for notifications.
  • xautolock, i3lock-fancy: As the tools used to perform screenlocking functions.
  • feh: That old time favorite to manage and regularly change my desktop wallpapers.
  • st (LukeSmithxyz’s version with mods by me): Quite simply is my favorite terminal.

Dependencies

As of this writing the core dependencies are (according to the Fvwm3 Github account):

  • libbson-dev (>= 1.16.2)
  • libevent-dev (>= 2.0)
  • libx11-dev
  • libxrandr-dev (>= 1.5)
  • libxrender-dev
  • libxt-dev

Optional dependencies are (according to the Fvwm3 Github account):

  • asciidoctor
  • libfontconfig-dev
  • libfreetype6-dev
  • libfribidi-dev
  • libncurses5-dev
  • libpng-dev
  • libreadline-dev
  • librsvg-dev
  • libsm-dev
  • libx11-dev
  • libxcursor-dev
  • libxext-dev
  • libxft-dev
  • libxi-dev
  • libxpm-dev
  • sharutils

Shared application & software infrastructure

A shared infrastructure, to me, means running many or all of the same applications and software tools across all my different desktops. In my case, I run exactly the same apps in both Fvwm3 and dwm. In the past, I have done that with all manner of window managers including bspwm, hlwm, openbox, jwm, iceWM…. I mix and match them to my heart’s content. (Yes, I’m fickle.)

Getting the base infrastructure built (installed) is not a big problem. Install what you like. I have a nice little script I run in MX (Debian), with small modifications I take this script and use it on arch based distros as well.

Here’s an example of my install script; yours may look different:

sudo apt install apt-notifier caffeine celluloid conky Conky-manager cron djview djview-plugin djview4 dunst  feh ffmpegthumbnailer ffmpegthumbs file-roller filezilla firefox gcc gdebi geany gimp git grub-customizer gucharmap i3lock-fancy keepassxc libharfbuzz-dev libreoffice libx11-dev libxft-dev libxinerama-dev luckybackup lxpolkit lxsession make moc mousepad neofetch nnn powertop python-pip python3-pip python3-venv qpdfview ranger rofi sl stacer sxhkd sxiv thefuck thermald thunar thunar-archive-plugin thunderbird timeshift tlp transmission udiskie xarchiver xautolock xcompmgr xdo xdotool xfce4-power-manager xorg yad zathura zenity zim 

Shared application keybindings

The tool I use to store and manage my common application keybindings is sxhkd. The way I remember what the keybindings are is via zenity. Here’s an image of my App Keybinding pop-up:

Here’s the sxhkd base.conf file I use to manage application keybindings. If you look closely at the code you’ll notice that there are a few other tricks and short-cuts I ‘perform’ listed within the same base.conf file.

#               
#	 		sxhkdrc ~ common functions              
#            dwm - and most other wms                   
#
#########################
# SUPER + FUNCTION KEYS #
#########################
# if you want to assign applications to specific tags or workspaces
# add a command behind the application to focus on that workspace if required
# index 0 corresponds to tag or HLWM workspace 1
# index 1 corresponds to tag or HLWM workspace 2
# example 
#  firefox & herbstclient use_index 1

# Open Terminal
super + Return
	st -g=93x31+100+300

# VirtualBox
super + v
	virtualbox & herbstclient use_index 0
	
# rofi menu   (alt+left-mouse-click)
alt + @button1
	 rofi -modi drun,window,run -show drun -show-icons -sidebar-mode -location 0  -width 360
	
# Show Keybinding Index
super + F1
	zenity --text-info --width=640 --height=640  --html --filename=/home/mark/.local/share/help-files/app-keybindings.html --ok-label="Quit"

# mount dismount (Bashmount)
super + F2 
	st -g=93x31+100+300 -e ~/.local/bin/bashmount.sh

# system maintenance links
super + F3
	~/.local/share/scripts/system-links.sh
	
# BpyTop
super + F4
	~/.local/share/scripts/bpytop.sh

# Linux Links
super + F11 
	zenity --text-info --width=640 --height=640  --html --filename=/home/mark/.local/share/help-files/linux-links.html --ok-label="Quit"

# rofi Active Tasks 
super + F12
	rofi -modi window -show window -show-icons -sidebar-mode

# pamac-manager
alt + p
	/usr/bin/pamac-manager  & herbstclient use_index 0

# gsimplecal
alt + c
	gsimplecal
	
# mousepad
super + a
	mousepad

# calibre (books)
super + c
	calibre

# Music (DeadBeef)
super + d
	deadbeef
	
# file managers
super + f
	thunar & herbstclient use_index 2

# file manager (ROOT)
super + alt + f
	mx-pkexec pcmanfm 
		
# nnn- file manager
super + n
	st -g=93x31+100+300 -e nnn
	
# ranger- file manager
super + r
	st -g=93x31+100+300 -e ranger

# geany
super + g
	geany  & herbstclient use_index 7

# eMail
super + e
	thunderbird
	
# Office
super + o
	libreOffice

# dmenu
super + p
    dmenu_run

# System Quit Options
super + q
	/home/mark/.local/share/scripts/logout.sh

# skype
super + s
	skype
	
# topgrade
super + t
	st -e /home/mark/.local/bin/topgrade/topgrade.sh
	
# web browser        
super + w
	firefox

#Lock screen
super + x
	dm-tool lock

# zim wiki
super + z
	zim & herbstclient use_index 3

# Reboot
ctrl + alt + Delete
	 reboot

X-windows and OS infrastructure

The common autostart file I use, across all my active window managers, is contained in .xsessionrc (Debian) or .xprofile when using arch. My common autostart performs ‘a lot’ of functions. It does this for every window manager I run. No redundancy, I think that’s good. Here is a copy for you to review:

#!/bin/sh
#
#Shared window manager functions & applications on Debian
#	
#####################

# set network manager
nm-applet &

# set sound functions
volumeicon &
start-pulseaudio-11 &

# power related functions
xfce4-power-manager &
thermald &
tlp start &
powertop --auto-tune &
xautolock -time 8 -locker i3lock-fancy &

# Light shift
xflux -z 80116 &
#redshift &

# xsettings
xsettingsd &
xset fp+ ~/.local/share/fonts &
xset r rate 350 60
xsetroot -cursor_name left_ptr &
udiskie &

# keyboard settings
setxkbmap -option compose:ralt &
ksuperkey -e 'Super_L=Alt_L|F1' &
ksuperkey -e 'Super_R=Alt_L|F1' &
	
# gnome settings
gnome-keyring-daemon --start --components=pkcs11 &

# Polkit (I prefer lxpolkit for lightness.)
lxpolkit &
#/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &

# shared common keybindings (applications)
sxhkd -c ~/.config/sxhkd/base.conf &

# applications
# Dunst
dunst -conf  ~/.config/dunst/dunstrc &
# Dropbox
sleep 30 && dropbox start -i &
# Google Drive
#sleep 30 && vgrive &

# touchpad toggle
touchpad-indicator &

# wallpaper changer 
~/.local/share/scripts/wallpaper.sh &
#feh --randomize --bg-fill $HOME/.wallpapers/Desert/* && sleep 5m &

# Caffeine
caffeine &
/usr/bin/caffeine-indicator &

###  Turn on Compositing...
# task performed in primary window manager start/autostart function

# MXLinux apt-notifier
apt-notifier &

Any unique autostart functions, of which there are a few, are performed per specific window manager requirements. For example dwm and Fvwm both use their own Conky (in my setup); they are started uniquely.

As I mentioned earlier, I use .Xresources and .Xdefaults for my pretty window and terminal colors. Since both files are identical I’ll provide my .Xresources file for you to review and/or use. The color palette contained within is the Nord Palette.

Xft.autohint: 1
Xft.antialias: 1
Xft.hinting: true
Xft.hintstyle: hintslight
Xft.dpi: 96
Xft.rgba: rgb
Xft.lcdfilter: lcddefault

! Copyright (c) 2016-present Arctic Ice Studio <development@arcticicestudio.com>
! Copyright (c) 2016-present Sven Greb <code@svengreb.de>

! Project:    Nord XResources
! Version:    0.1.0
! Repository: https://github.com/arcticicestudio/nord-xresources
! License:    MIT

#define nord0 #2E3440
#define nord1 #3B4252
#define nord2 #434C5E
#define nord3 #4C566A
#define nord4 #D8DEE9
#define nord5 #E5E9F0
#define nord6 #ECEFF4
#define nord7 #8FBCBB
#define nord8 #88C0D0
#define nord9 #81A1C1
#define nord10 #5E81AC
#define nord11 #BF616A
#define nord12 #D08770
#define nord13 #EBCB8B
#define nord14 #A3BE8C
#define nord15 #B48EAD

*.foreground:   nord4
*.background:   nord0
*.cursorColor:  nord4
*fading: 35
*fadeColor: nord3
*.shading: 30
*.tintColor: nord15
*.active: nord11
*.inactive: nord14

*.color0: nord1
*.color1: nord11
*.color2: nord14
*.color3: nord13
*.color4: nord9
*.color5: nord15
*.color6: nord8
*.color7: nord5
*.color8: nord3
*.color9: nord11
*.color10: nord14
*.color11: nord13
*.color12: nord9
*.color13: nord15
*.color14: nord7
*.color15: nord6

Cleanup

Once you have things running reasonably well, I recommend you go back and tweak your installed toolset. In my case, I ‘carefully’ removed those pieces of xfce4 I no longer wanted. I kept those items I like from xfce4 such as the power manager, screenshooter, thunar, and a few others. Your situation will obviously be driven by your preferences not mine.

If you are interested in discussing this more, I recommend you check out this thread on the MX Linux Forums.

Yes, Linux is all about choice and freedom.

My Hardware Setup

In the event you wish to check out more of the hardware, software details for my environment they follow below:

System:
  Host: <filter> Kernel: 5.8.0-3-amd64 x86_64 bits: 64 compiler: N/A 
  parameters: BOOT_IMAGE=/boot/vmlinuz-5.8.0-3-amd64 
  root=UUID=<filter> ro quiet hush 
  Desktop: dwm 6.2 dm: LightDM 1.26.0 
  Distro: MX-19.3_x64 patito feo November 11  2020 
  base: Debian GNU/Linux 10 (buster) 
Machine:
  Type: Laptop System: Dell product: Latitude E5470 v: N/A serial: <filter> 
  Chassis: type: 9 serial: <filter> 
  Mobo: Dell model: N/A serial: <filter> UEFI: Dell v: 1.21.6 
  date: 10/02/2019 
Battery:
  ID-1: BAT0 charge: 39.7 Wh condition: 39.7/62.0 Wh (64%) volts: 8.3/7.6 
  model: LGC-LGC4.20 DELL HK6DV type: Li-ion serial: <filter> status: Full 
  Device-1: hidpp_battery_0 model: Logitech Wireless Mouse M510 
  serial: <filter> charge: 55% (should be ignored) rechargeable: yes 
  status: Discharging 
CPU:
  Topology: Dual Core model: Intel Core i5-6300U bits: 64 type: MT MCP 
  arch: Skylake family: 6 model-id: 4E (78) stepping: 3 microcode: D6 
  L2 cache: 3072 KiB 
  flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx 
  bogomips: 19999 
  Speed: 800 MHz min/max: 400/3000 MHz Core speeds (MHz): 1: 800 2: 800 
  3: 800 4: 800 
  Vulnerabilities: Type: itlb_multihit status: KVM: VMX disabled 
  Type: l1tf 
  mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable 
  Type: mds mitigation: Clear CPU buffers; SMT vulnerable 
  Type: meltdown mitigation: PTI 
  Type: spec_store_bypass 
  mitigation: Speculative Store Bypass disabled via prctl and seccomp 
  Type: spectre_v1 
  mitigation: usercopy/swapgs barriers and __user pointer sanitization 
  Type: spectre_v2 mitigation: Full generic retpoline, IBPB: conditional, 
  IBRS_FW, STIBP: conditional, RSB filling 
  Type: srbds status: Vulnerable: No microcode 
  Type: tsx_async_abort mitigation: Clear CPU buffers; SMT vulnerable 
Graphics:
  Device-1: Intel HD Graphics 520 vendor: Dell Skylake GT2 driver: i915 
  v: kernel bus ID: 00:02.0 chip ID: 8086:1916 
  Display: x11 server: X.Org 1.20.9 driver: modesetting unloaded: fbdev,vesa 
  compositor: xcompmgr resolution: 1920x1080~60Hz 
  OpenGL: renderer: Mesa Intel HD Graphics 520 (SKL GT2) v: 4.6 Mesa 20.1.8 
  direct render: Yes 
Audio:
  Device-1: Intel Sunrise Point-LP HD Audio vendor: Dell 
  driver: snd_hda_intel v: kernel bus ID: 00:1f.3 chip ID: 8086:9d70 
  Sound Server: ALSA v: k5.8.0-3-amd64 
Network:
  Device-1: Intel Ethernet I219-LM vendor: Dell driver: e1000e v: 3.2.6-k 
  port: f040 bus ID: 00:1f.6 chip ID: 8086:156f 
  IF: eth0 state: down mac: <filter> 
  Device-2: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter 
  vendor: Dell driver: ath10k_pci v: kernel port: f040 bus ID: 01:00.0 
  chip ID: 168c:003e 
  IF: wlan0 state: up mac: <filter> 
  Device-3: Qualcomm Atheros type: USB driver: btusb bus ID: 1-8:5 
  chip ID: 0cf3:e007 
Drives:
  Local Storage: total: 1.90 TiB used: 1.08 TiB (57.0%) 
  ID-1: /dev/mmcblk0 model: SD32G size: 30.09 GiB block size: 
  physical: 512 B logical: 512 B serial: <filter> scheme: MBR 
  ID-2: /dev/sda vendor: Crucial model: CT1050MX300SSD4 size: 978.09 GiB 
  block size: physical: 512 B logical: 512 B speed: 6.0 Gb/s 
  serial: <filter> rev: R031 scheme: GPT 
  ID-3: /dev/sdb type: USB model: Kindle Internal Storage size: 6.22 GiB 
  block size: physical: 512 B logical: 512 B serial: <filter> rev: 0401 
  ID-4: /dev/sdc type: USB vendor: Western Digital 
  model: WD My Passport 07A8 size: 931.48 GiB block size: physical: 512 B 
  logical: 512 B serial: <filter> rev: 1033 scheme: MBR 
RAID:
  Hardware-1: Intel 82801 Mobile SATA Controller [RAID mode] driver: ahci 
  v: 3.0 port: f060 bus ID: 00:17.0 chip ID: 8086.282a rev: 21 
Partition:
  ID-1: / raw size: 975.81 GiB size: 959.49 GiB (98.33%) 
  used: 558.48 GiB (58.2%) fs: ext4 dev: /dev/sda2 
  ID-2: swap-1 size: 2.00 GiB used: 1024 KiB (0.0%) fs: swap 
  swappiness: 15 (default 60) cache pressure: 100 (default) dev: /dev/sda3 
Sensors:
  System Temperatures: cpu: 41.5 C mobo: N/A 
  Fan Speeds (RPM): cpu: 0 
Repos:
  No active apt repos in: /etc/apt/sources.list 
  Active apt repos in: /etc/apt/sources.list.d/debian-stable-updates.list 
  1: deb http://deb.debian.org/debian/ buster-updates main contrib non-free
  Active apt repos in: /etc/apt/sources.list.d/debian.list 
  1: deb http://deb.debian.org/debian/ buster main contrib non-free
  2: deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free
  Active apt repos in: /etc/apt/sources.list.d/google-chrome.list 
  1: deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main
  Active apt repos in: /etc/apt/sources.list.d/mx.list 
  1: deb http://mxrepo.com/mx/repo/ buster ahs
  Active apt repos in: /etc/apt/sources.list.d/skype-stable.list 
  1: deb [arch=amd64] https://repo.skype.com/deb/ stable main
  No active apt repos in: /etc/apt/sources.list.d/various.list 
Info:
  Processes: 319 Uptime: 2d 2h 13m Memory: 23.39 GiB used: 4.38 GiB (18.7%) 
  Init: SysVinit v: 2.96 runlevel: 5 default: 5 Compilers: gcc: 8.3.0 alt: 8 
  Shell: quick-system-in running in: quick-system-in inxi: 3.0.36 

]]>
2492
A dwm (Dynamic Window Manager) Journey- 2 https://eirenicon.org/a-dwm-dynamic-window-manager-journey-2/ Sat, 22 Aug 2020 20:01:52 +0000 https://eirenicon.org/?page_id=2051 As I noted in my first article in this series, I began this journey with a decent understanding of both bspwm and herbstluftwm (hlwm). However, if I wanted to use dwm, I needed to learn more about suckless’ software, especially dwm.

Where was a person to begin??

The obvious starting point seemed to be the suckless website. However, on my first visit I was shocked; it looked like their material was pretty well “above my pay grade.” I thought I needed something just “a tad” less user hostile.

Where was the Dummy’s Guide?

I found several helpful sources (including something from suckless):

After having reviewed the above pages, it was clear that I needed some practice and more advanced learning.  Getting practice was easy enough, I thought.  I just need to install dwm.  The problem was dwm isn’t really standard; it requires a compile if you want to do it ‘right’ or so, my friends on the arch wiki tell me.

Here is “one way to do it right.”

Start by loading the following dependencies.

In arch:

# sudo pacman -S xorg xorg-xinit

In Debian:

# sudo apt install make gcc libx11-dev libxft-dev libxinerama-dev xorg

Next be certain you have the following installed.  If you don’t you will need to install them.

  • make
  • wget
  • tar

Then in your terminal enter the following wget command to download dwm:

# wget https://dl.suckless.org/dwm/dwm-6.2.tar.gz

Decompress the downloaded tar file using tar in terminal (or if you prefer you may use your file manager).

#tar -xzvf dwm-6.2.tar.gz

Next change into your dwm directory (you may wish to create the directory in .local/bin first, which is what I recommend) and then install dwm via terminal using the following.

# sudo make clean install

Another major challenge for me was in finding a good cheat-sheet to help me modify suckless software using patches. You’ll need to modify (patch) suckless software if you want to use (incorporate) suckless patches in your setup. Think of these patches as suckless plugins. I only use a single patch (I want to keep my dwm install pretty minimal; because I can.) The single patch I use creates a system tray (systray) in dmenu.

Here is a decent guide on patching dwm. […]How to add patches to dwm […]

I have excerpted a big chunk below:

Suckless.org provides instructions on applying patches to DWM, and the procedure is pretty simple. I’ll add a few more details […] I’m assuming that you’re building dwm from source, since you’ll need to do this in order to install patches.

  • Save the patch somewhere in your source directory, and run ‘git apply pertag.diff”
  • If the patch added any new files, run ‘git add <name of new file>’ to add them to the repository. If no new files were added, ignore that. Once you’ve added any new files, run ‘ git commit -a’ to commit the changes.
  • Rebuild dwm. If you’re building dwm as root, run ‘make clean install’ from the top folder of dwm’s source tree (e.g., if you downloaded the source into ‘/build/dwm’, run the command in that folder). It’s the folder with the makefile. If you are building/installing dwm as a non-root user, just run ‘make’ from the source folder.
  • If you already have your system set up to use dwm, either through
    installing it as root or building it as a normal user and pointing to
    your user’s copy, you shouldn’t have to redo any configuration. Just
    restart dwm and the patch should be working.

Once you have successfully compiled dwm, it is ready to be setup for execution.  If you want to have dwm appear as an option on LightDM and start it via LightDM, you will have another small task to perform:

Create an xsession file for dwm. To do this you can create a dwm.desktop file and then save it.

  • In a terminal window enter:

# sudo geany /usr/share/xsessions/dwm.desktop

Make certain  <UserName> below = your username.

[Desktop Entry]
Name=dwm
Comment=dynamic window manager
Exec= /home/<UserName>/.local/bin/autostart-scripts/start-dwm.sh
Type=Application
Icon=preferences-system-windows-move

Next, create the following directory  ~/.local/bin/autostart-scripts

First open an editor:

# geany start-dwm.sh

Then, you will need to edit and copy the following content; save the file to: ~/.local/bin/autostart-scripts (This will act as a start script for LightDM.).

Note: If you have not installed dunst, slstatus, conky, or lxsession/lxpolkit then disable or remove the corresponding lines in the script (below).

#! /bin/sh
#
# dwm autostart, etc.
#
# slstatus
slstatus &
# dunst
dunst -conf ~/.config/dunst/dunstrc &
# conky
conky -c ~/.conky/<UserName>/.dwmconkyrc &
# policy kit
lxpolkit &
#start dwm
exec dwm

If you find this material helpful or useful, please consider supporting us on Patreon or by purchasing Linux Bling from our online stores. We even offer dwm & suckless items!

Remember, like with all of my work, I am able to provide the following assurance(s):
  • It is almost certainly going to work until it breaks; although I have to admit it may never work and that would be sad.
  • When/if it does break, you may keep all of the pieces.
  • If you find my materials helpful, both you & I will be happy, at least for a little while.
  • My advice is worth every penny you paid for it!


]]>
2051
A dwm (Dynamic Window Manager) Journey- 1 https://eirenicon.org/a-dwm-dynamic-window-manager-journey-1/ Fri, 21 Aug 2020 16:27:01 +0000 https://eirenicon.org/?page_id=2033 I have to say that I have a horrible history of remaining on any environment for very long. Now, in my forever journeys of Linux exploration, I have recently arrived at a new ‘point’ (way station?). My latest desktop environment, is a stripped down, riced dwm environment (such as I am capable of building). This time I am running on ‘vanilla’ arch (archlinux).

In this adventure ‘story’, it is my hope to share a bit about how I constructed and use this new (to me) environment. My first post will focus on the background behind this transition, as well as my challenges.

As you may have guessed from the writings and knowledgebase on eirenicon.org, I enjoy research, explortion and sharing. My motivation for this ‘desktop and distro’ shift/ transition/ change began with the purchase of a Dell Inspiron 5493. The Inspiron 5493 is the only Dell Laptop I have owned that does not like Linux, very much. Complicating my situation is the fact that I actually use two Dell Laptops and prefer to have them, their data, and applications mirroring each other (in case one breaks). The bottom line: I like having one environment on two machines.

If you are regular reader here, you will know that over the past 18 months or so, I have been experimenting, using, and learning about tiling window managers (most notably bspwm and herbstluftwm). Ultimately, my experimentation and research in tilers led me to ‘discover’ dwm (from Suckless.org). The Dynamic Window Manager (dwm) appealed to me because of the core values it embodies and its construction/ build constraints. dwm (as well as the entire suite of suckless tools) is built to be light & small and suck-less than other software, what a concept!

dwm like most tilers offers the opportunity and tools for those who want the freedom to create a highly customized ‘build it yourself’ environment. Because dwm is presented by many as being one of the rights of passage to joining the ‘LinuxMasterRace’, this was all seemingly über technical. (Yes, uber there is an umlaut on über.) I didn’t know if I would be up to the task or ‘qualify’ as a member of that elite group. Let’s say I’m not very close to being among the Linux elite.  As you might expect, there were only a couple of items preventing me from effectively implementing this window manager:

  1. I needed to identify a distro that would work predictably and reliably on both of my laptops. (Finding something that was happy on the Inspiron 5493 was NOT easy.)
  2. Would my previous bspwm, herbstluftwm environments be able to function similarly using dwm?
  3. I did not understand dwm’s normal operating style/ procedure(s) and you shouldn’t tweak things you don’t understand.
  4. I had to identify and establish my personal use-case for my desktop(s).
    1. What were essential functions?
    2. What did I want to accomplish?
  5. dwm offers numerous plugins and products, I didn’t know how-to use any of those ‘bad boys’.
  6. dwm does not use standard configuration files/ tools (dotfiles). Instead, you get to tweak and compile ‘c’ config.h files. Oh and I did not know ‘c’, at all.

Aside from these things… I was ready to roll.

The remaining posts in this series will address/ discuss the above list.

If you find this material helpful or useful, please consider supporting us on Patreon or by purchasing Linux Bling from our online stores. We even offer dwm & suckless items!

Remember, like with all of my work, I am able to provide the following assurance(s):
  • It is almost certainly going to work until it breaks; although I have to admit it may never work and that would be sad.
  • When/if it does break, you may keep all of the pieces.
  • If you find my materials helpful, both you & I will be happy, at least for a little while.
  • My advice is worth every penny you paid for it!

]]>
2033
Implementing Linux Window Managers ~ Tutorial https://eirenicon.org/implementing-linux-window-managers-tutorial/ Wed, 06 May 2020 23:07:53 +0000 https://eirenicon.org/?page_id=1909
  • Are you interested in learning a bit ‘more’ about Linux Window Managers?
  • Have you tried installing one (or more) only to arrive at a blank screen?
  • Do you aspire to join the LinuxMasterRace and rice your own desktop? ~Do you want to be one of the cool kids on the Linux block?
  • Well, if I haven’t already lost your interest, here’s what I have developed “for you”. I have built a Linux window manager ‘tutorial’. What you will find  available here for your use & learning is very much the arrangement I have running on my laptop.

    Here are a few screenshots for you to view…

    I should note the following regarding this setup:

    • The materials, guidance, etc. are free and ready for you to play with. I really do not intend to make this environment more polished than it is; that’s for you to do. I use it in exactly the manner provided.  However, I am a perpetual tweaker, I think you should be, too.
    • This tutorial will (with any luck) function as an effective guide for building an innovative window manager environment for you to use.
    • What I provide here is a set of learning tools for you to work with at your own pace; break it as you please.
    • I do not intend to support this tool set as a distro. It is true, this is neither going to be a respin nor a distro.
    • If you are wise, you will not use this in a production environment, until you feel it is completely stable and suits your needs. Remember! I told you NOT to use this ‘as-is’ in a production environment; first, make it work for you, then use it for real work!

    As you proceed through this tutorial,  you should explore things. Ultimately you should endeavor to make this your own. Spend some ‘quality time’ to learn more about:

    • dotfiles. You have a bunch here, find them, examine them, work with them.
    • Conf files, especially config.h in dwm, learn how it is used; tweak, edit, compile it. Even I can do it. I’m sure you can, too.
    • rc files like dunstrc, sxhkdrc- review them, tweak them.
    • autostart files and scripts
    • tint2 has its own gui editor, find it and learn how-to use it to make panels that better suit you.
    • conky- edit, tweak, customize

    So what is it our little ‘kit bag’?

    Out of the box, this setup offers:

    • dotfiles for:
      • OpenBox- a stacking Window Manger of great fame.
      • bspwm- a tiling window manager that is my current favorite.
      • herbsluftwm (hlwm)- another of my favorite tilers
      • dwm (dynamic window manager)- considered by many as the ultimate in minimalism (it is only 2,000 lines of code).

    The included desktops operate using:

    • shared/common keybindings (across some 85% of their functions); these are managed/shared/controlled via sxhkd
    • shared/common autostart functions via .xsessionrc (for Debian based distros) & .xprofile (for arch-based distros)
    • unique autostart functions, for specific window manager tools, where unique capabilities are required
    • bspwm, OpenBox, hlwm dotfiles for tint2 panels/ task bars
    • dwm & xfce use their native panels/ task bars
    • sakura as the common, standard terminal
    • thunar is the standard file manager
    • ranger and nnn are available for those wanting to explore console (terminal) base file managers
    • mocp is available as a console (terminal based) music player
    • pywal is used to change wallpapers and color schemes (you may tweak pywal, as well)
    • conky provides desktop information on PC performance; edit and modify it to your needs
    • rofi via alt+LMB (left mouse button) provides all window managers (not xfce) desktops with a menu; rofi is also ‘tweakable’
    • jgmenu via alt+RMB (right mouse button) also provides all window manager desktops with a menu; jgmenu may be altered, as well
    • Super (Win) + F1 provides a popup with Application Keybindings
    • Super (Win) + F11 provides a popup with Online Linux Support links
    • Super (Win) + F12 provides a popup with a listing of all active applications and their relevant workspace
    • dunst is used for most notifications; like pretty much everything else you may adjust this tool, also
    • Glava is provided as a Music Visualizer that integrates with most of the environments (it works but is clunky with dwm)

    So now what?

    This tutorial assumes you will build the entire environment yourself. I have written the guidance & instructions assuming you are using MX Linux 19 as your base distro, although you may freely use another distro. I will attempt to highlight the major differences between a Debian install and arch-base distros. If you choose something other than an arch or Debian based distro, you will need to make the necessary translations yourself.

    Setting things up:

    Select a distro for use… install your chosen distro per normal procedure(s). I recommend you select a distro featuring xfce as the primary desktop, because we’ll use a number of xfce tools in the ultimate implementation of our window managers. Install the distro making certain it uses bash not zsh or anything else. It does not matter whether or not systemd is present. I, also, recommend you use LightDM as your display manager (my guidance assumes the use of LightDM. If you choose something else, you are on your own. Sorry).

    On MX Linux, I remove the following applications, there is no requirement or need to remove these, unless you want to:
    sudo apt remove compton fluxbox orage* swell-foop vlc* xfburn featherpad hexchat clipit lbreakout2 mahjongg peg-e clementine note* nomacs gnome-ppp asunder* pppoeconf

    If you are seeking an easy to install, thinly configured, arch-based, xfce desktop, I recommend ArchLabs and/or EndeavourOS. Either ought to work well.

    Once you have built your basic xfce Desktop setup, we are ready to begin.

    Software installs

    To start, I recommend you install pywal, a magical screen changer and desktop color tweaker.

    • pywal (install on Debian):
      sudo apt purge python3-pip && sudo apt install --install-recommends python3-pip && pip3 install pywal
    • pywal (install on arch):
      This is generally available from community repos as: python-pywal

    Note: I recommend you perform as many application/ window manager installs as possible via cli, in order to speed up your installation effort. If you use Debian, be advised you want to end up with current not antique applications. You will note that I use a lot of testrepo software from MX.

    In the Debian world you can use the following cli (followed by your application list).
    # sudo apt install <list of app names separated by a space>
    In the arch arena use:
    # sudo pacman -S <list of app names separated by a space>

    Applications to be installed/ used include the listing below. Some of the Debian app names vary from those provided below on arch based distros; you’ll need to check which fail on install, the same holds true for non-MX Debian based distros.

    Easily installed via cli on MX are (you may do a similar install on arch based distros via pacman):

    sudo apt install cheese conky-manager conky dunst feh filezilla galculator geany gimp grub-customizer htop keepassx libreoffice light-locker lxappearance mintstick moc mousepad neofetch nnn obconf openbox powertop ranger redshift rofi sakura sxiv thefuck thermald thunderbird tint2 tlp touchpad-indicator zenity zim

    On MX Linux, the following are best installed via MXPI (Popular Applications); note that calibre, dropbox, skype, and virtualbox are much easier to install and setup on MXLinux than most anywhere else. These are key apps for me… although, you don’t need to use them for this exercise. (In arch you may wish to install and use pamac-gtk.)

    • atom
    • calibre
    • dropbox
    • skype
    • virtualbox

    The following are best installed via MXPI (MX Test Repo) on MX Linux (These are available via pamac-gtk or pacman or yay on arch.):

    • bspwm
    • celluloid
    • glava (coming soon to the testrepos)
    • herbstluftwm
    • sxhkd

    Install the following via gdebi-gtk (I provide these in the dotfile download folder):

    • jgmenu
    • obmenu-generator
    • picom (but you will need to remove compton first); and be aware that picom can cause difficulties with the newest version of hlwm; so you may wish to keep compton for now.

    Installing/ using the dotfiles

    Once you have the application base installed and ready, the next step is to copy the dotfiles to their correct/appropriate locations.

    This is the same in both the arch & MX Debian worlds.

    Assuming you have installed all the apps (or a subset thereof) BACK UP your system (using timeshift or similar). If you have trimmed the list, you probably don’t need all the dotfiles (you are on your own to figure that out).

    Here are the downloadable files (Be aware this download is about 250MB)

    Once you have downloaded the files, decompress the archive and make certain you are able to view the hidden (dot) files. You can do that via ctrl-h. Drag & drop the files and folders to your $Home directories. The following directories in your $Home area will be either created or over-written. Approve all over-write (creation) requests.

    • .config
    • .conky
    • .local
    • .fonts
    • .icons
    • .bashrc
    • .face
    • .fehbg
    • .profile
    • .xprofile
    • .Xresources
    • .xsession
    • .xsessionrc

    Next, copy the following from your downloaded folders.

    • User-share/* content gets copied to your File System /usr/share/*
      • You will need to do the above using sudo or root privs.
    • Be aware that the contents of .xsessionrc & .xprofile need to be basically the same because arch uses .xprofile and Debian uses .xsessionrc (The versions you have downloaded work fine on both distro bases for me; I hope they will work for you. You only need to keep the one required for your distro.)

    Once all the files & folders are in your $Home directory and in the /usr/share directories, I recommend you reboot your system to make certain things work.

    After the reboot completes, you should return to the LightDM Login screen. Options for logging in to xfce, herbstluftwm, bspwm, openbox should be available. Note: Be certain you know how-to use LightDM, if you don’t already.

    If you are not an expert LightDM user and you find multiple desktop choices missing, something is amiss. If you don’t know what went wrong or how-to fix it, I recommend restarting the process from the beginning to see if you made a teenie, tiny error.

    Once you successfully Login to xfce, we will begin another small adventure- installing dwm. Because almost everything for dwm is pre-setup for you, all you really need to do is as follows:

    • Goto to $Home/.local/bin/dwm/dwm-6.2/ and open a terminal window from WITHIN the /dwm-6.2 folder.

    Given this is the first (initial) install of dwm, you have one extra step from a normal dwm update.

    For a MX Debian Install (reference: https://johnjago.com/blog/dwm/):
    # sudo apt install make gcc libx11-dev libxft-dev libxinerama-dev xorg libharfbuzz-dev

    sudo make clean install

    Arch Install dwm (reference: https://savemyday.dk/blog/dwm-a-window-manager/)
    # sudo pacman -S xorg xorg-xinit

    sudo make clean install

    The first step in the dwm setup only needs to be run one time. Because I have made numerous edits to config.h for your base install, you don’t actually need to edit config.h… unless you really, really want to. If you have never played with dwm before, don’t do too much futzing with things before you do some research. You have been warned!

    Next in order to get dwm to appear as an option on LightDM, we have another small task to perform.

    • We need to create an xsession file for dwm.
    • What we are going to do is edit the pre-existing bspwm.desktop file, and then save it under another name so we will be able to open dwm as  LightDM option.
    • In a terminal window enter:

    # sudo geany /usr/share/xsessions/bspwm.desktop

    Replace the existing bspwm info with the following; make certain  <UserName> = your username :

    [Desktop Entry]
    Name=dwm
    Comment=dynamic window manager
    Exec= /home/<UserName>/.local/bin/autostart-scripts/start-dwm.sh
    Type=Application
    Icon=preferences-system-windows-move

    Save the revised file as: dwm.desktop

    (Be certain to rename the edited bspwm.desktop file and leave the original bspwm.desktop file as it was.). The Exec=$Home/.local/bin/autostart-scripts/start-dwm.sh provides dwm unique autostart functions as well as the actual dwm executable call.

    Once you have completed these steps, you should be able to open all the installed window managers plus xfce, as you need/ want them.

    Additional notes (Remember: Xfce is NOT a Window Manager, it is a Desktop Environment -DE.):

    • xfce keybindings are not completed until you do them manually following the traditional xfce keyboard command setup. I did not do them for you.
    • Alt + LMB (Left Mouse Button) should provide a Rofi menu on any installed Window Manager
    • Alt + RMB (Right Mouse Button) should provide jgmenu on any installed Window Manager
    • Super (Win)+ F1 should provide application keybindings on any installed Window Manager
    • Super (Win)+ F12 should provide active application listing by workspace on any installed Window Manager
    • Conky on the right side of desktops should provide critical keybinding information.

    Take your time, explore, tweak, enjoy.

    Well once you get things installed, play with them. Discover what you like and what you don’t. You get to keep this stuff no matter what. If you break it, you even get to keep the pieces.

    Caveats:

    Do I support this toolset… well, not exactly.  Will I respond to questions, suggestions, etc.? Well, maybe.

    I do hope that once you roll-up your sleeves and dig around a bit, you will find window managers easier to work with and enjoyable to use. Enjoy!

    Remember, like with all of my work, I am able to provide the following assurance(s):
    • It is almost certainly going to work until it breaks; although I have to admit it may never work and that would be sad.
    • When/if it does break, you may keep all of the pieces.
    • If you find my materials helpful, both you & I will be happy, at least for a little while.
    • My advice is worth every penny you paid for it!

    ]]>
    1909
    Window Managers: How-to share settings, autostart etc. https://eirenicon.org/window-managers-how-to-share-settings-autostart-etc/ Mon, 13 Apr 2020 19:23:30 +0000 https://eirenicon.org/?page_id=1855 If you are like me and prefer Window Managers (bspwm, dwm, openbox, hlwm, spectrwm, etc.) to Desktop Environments (gnome, KDE, xfce, budgie, etc.), you may find this little tutorial/ adventure of interest.

    By way of providing a brief use-case description, here are the challenges I faced and wanted to address:

    1. I want to run a single PC setup which affords access to multiple window manager desktops from a single login screen (I prefer LightDM).
    2. Each of the window manager desktops should ‘autostart’ a common set of features and functions. Ideally, I want as close to 100% commonality as possible. ( By way of full-disclosure, I have not achieved 100% commonality, but I’m quite close.)
    3. Since I use a pretty standard set of applications, I want my window managers to share a common set of keybindings; but, I really only want to maintain one set of keybindings. To quote yoda, lazy I am.
    4. I do not want to degrade the unique power of any individual window manager but rather wish to highlight their unique and collective capabilities.
    5. Because I want to leverage my learning, I want any functions I know how to perform, and am familiar with, to be as portable across desktops as possible (Yes, that’s by my definition…).
    6. In a perfect world, the setup I create should be distro independent.

    Having noted the above criteria here is the software environment in which I build, test & operate:

    • arch (specifically I used ArchLabs. which is a pretty vanilla arch distro).
    • I have performed limited, successful testing on debian (MXLinux).
    • ArchLabs is my implementation platform of choice (because it is light, fast, arch-based, and the ArchLabs Forum is full of geeky, helpful people).

    Here’s how I went about meeting my objectives:

    1. I installed a clean version of AL (I removed all my cruff that way).
    2. NOTE: My data is not stored on the same device with my distro… :wink: I connect my distro & data files via symlinks.
      1. I find that keeping my data separate from my distro materials allows me to change up my environments quite rapidly.
      2. The separation, also, allows me to create rapid/ interactive/ automagic backups via Dropbox.
    3. Next, I added the following window managers to my new install:
      1. bspwm (via initial AL install)– Note: my #1 favorite
      2. openbox (via initial AL install)– Note: my #2 favorite
      3. dwm (via manual build in my home dir)– Without dwm, I’ll never be cool… :wink:
      4. spectrwm (installed via pacman as an after thought)
      5. herbstluftwm (installed via pacman because, why not?)
    4. In .xprofile I added all my autostart apps, including my
      1. sxhkd -c base.conf
      2. .xprofile.tar (a copy for your collection)
    5. I created 2 different/ unique sxhkdrc configuration files (confs):
      – base.conf for all my WMs to use; base.conf.tar
      – bspwm,conf for my unique bspwm needs: bspwm.conf.tar
    6. bspwm.conf is added in a normal manner from within bspwmrc. bspwm is the only window manager where I have needed to use a secondary set of keybindings (thus far). Here’s the command line: sxhkd -c ~/.config/sxhkd/bspwm.conf &

    dwm-Arch-Labs-1 dwm-Arch-Labs-2 dwm-Arch-Labs-3

    I should say I’m not quite done with this adventure, I am still tweaking dwm, hlwm & spectrwm. Just the same, I feel very confident this approach will allow me to achieve my use-case objectives. Now all my wms share the same basic configurations and setups for the weird & unique application environment I want.

    Enjoy!

    Remember, like with all of my work, I am able to provide the following assurance(s):
    • It is almost certainly going to work until it breaks; although I have to admit it may never work and that would be sad.
    • When/if it does break, you may keep all of the pieces.
    • If you find my materials helpful, both you & I will be happy, at least for a little while.
    • My advice is worth every penny you paid for it!

    ]]>
    1855
    A Quad (4) Desktop Adventure #2 https://eirenicon.org/a-quad-4-desktop-adventure-2/ Thu, 20 Feb 2020 16:04:20 +0000 https://eirenicon.org/?page_id=1817

    This is the second installment of:

    An adventure creating a single user environment with 4 desktops.

    Thank you to everyone who has expressed interest in this ‘adventure’. I hope we’ll learn a lot. I know I will. Please help keep me honest.

    In that vein [full-disclosure] this work is largely based on my bspwm desktop. My initial setups and experience were developed by using antiX and MX Linux versions.  My current ‘bspwm production setup’ runs on manjaro. As it turns out polybar, my preferred panel, runs more robustly on an arch-based distro than it does on a Debian base. As a result, for this ‘adventure’ I have had to create workarounds for my MX setup to provide functionality equivalence between arch & Debian bases.  Although sadly, I am not always able to attain parity between both distro bases.[/full disclosure]

    Before beginning any of the adventure, you may ‘prefer’ to have a machine setup for you to use. If so, please install MX Linux 19.1, if you want to go ‘vanilla’; or if you are a risk taker, install the distro of your choice. Should you choose something other than MX 19.1, you will need to adjust this exercise to address the deltas between your distro and MX. I will try to note generic thoughts and differences between MX and the arch distro I know best, manjaro. I’ll be as detailed as I can be; but if you choose Gentoo, Fedora, OpenSUSE, void, etc…. well, you are on your own.

    Now, let’s roll up our sleeves and get to work.

    The first objective we want to achieve is a single login. To do that is fairly simple. I recommend, and use, LightDM for that purpose. Yes, there are other Display Manager (DM) options. Luckily, MX Linux (our host distro for this exercise) offers LightDM by default; manjaro does the same. As a result, we really need do nothing ‘fancier’ than installing ‘those missing window managers’ from our base install. To re-cap, the base included desktops in MX are:

    • xfce
    • fluxbox

    Note: If you prefer to use manjaro rather than MX, I recommend you install manjaro’s xfce-minimal. Manjaro xfce-minimal offers xfce as its standard Desktop Environment, oddly enough.

    The MX desktops we need to add/install in our environment are:

    • bspwm
    • openbox

    For manjaro, you may wish to also add:

    • fluxbox

    I generally recommend that these major ‘window manager’ additions be done via the host distro package installer MXPI (MX Linux Package Installer) or ‘pamac’ (for manjaro). You can use command line if you prefer; it’s just that dependencies can be a bit more difficult accommodate, and I won’t cover all of those here. In a bit, I will provide an example of that on the MX items we’ll need to add in order to get PyWal operational (PyWal is not in the MX or Debian repositories- repos, see below.).

    Next, I think it would be helpful for me to share a couple of images of both an MX Linux & manjaro Desktop.  Think of these as target images.  This is what we are building toward.

    bspwm on MX 19.1 with polybar (top panel); rofi active workspace tracker (center); conky (right); tint2 panel with taskbar (bottom)

    bspwm on manjaro with polybar (top panel); rofi active workspace tracker (center); conky (right); tint2 panel with taskbar (bottom)

    Important items that may not be apparent from the images:

    • There are going to be numerous Rofi pop-ups to facilitate functions such as menu access and other help functions. (You’ll become acquainted with those later.)
    • zenity & yad will provide calendar and help popups/ dialogs. (None are visible here.)
    • Screen brightness controls will not be the same between bases due to Debian & arch differences.
    • Workspace control (top left) is going to be slightly different between window managers. (Not visible here.)
    • Xfce will be largely allowed to function using its native functionality, although it the xfce DE will be tweak to be more like the three (3) window managers. (Not visible here.)
    • PyWal is used to change wallpapers and colors on the desktops.  What changes varies some between distro bases and desktops. (Very cool, but nearly useless…. )
    • Other desktops will look ‘very’ much like the bspwm desktop on the same distro.

    Once you have installed your preferred base distro, there are a few additional items to install. For MX, you will need to install the following major items (non-MXPI installs are noted):

    • tint2
    • rofi
    • bspwm
    • sxhkd
    • openbox
    • obmenu-generator (from Head_on_a_Stick)
    • picom (from Head_on_a_Stick)
    • PyWal & colorz (cli install); the terminal command follows:
      sudo apt purge python3-pip && sudo apt install --install-recommends python3-pip && pip3 install pywal && pip3 install colorz
    • inkscape
    • imagemagick
    • sakura (my ‘go to’ terminal)
    • yad
    • zenity

    For manjaro most of the above are available from pamac, if you allow AUR to be used.

    You will, also, need the following if they are not installed with your distro:

    • conky (It is best if you can also install conky-manager, not all distros offer this tool, any longer.)
    • geany & geany-plugins (I use it for all script and development work.)

    Nice to haves for some of the desktops:

    • jgmenu (openbox)
    • fluxbox themes  [sarcasm] Select some that you can stand to look at; I am unable to suggest any.  [/sarcasm]
    • high quality gtk2 themes  (openbox & bspwm)
    • mouse cursors you like or are willing to use

    At this point you should have most of the basic setup complete. In the next installment, we’ll discuss tools and performing detailed setup. You’ll get to learn about dotfiles, scripts, and their application.

    If you try to run these desktops right now, they won’t all work very well. bspwm will especially be boring… probably blank.  Wo-o-o-o-o, scary. Trust me we’ll fix the quickly and easily. I have the technology, for you.

    The other articles in this series:


    Remember, like with all of my work, I am able to provide the following assurance(s):
    • It is almost certainly going to work until it breaks; although I have to admit it may never work and that would be sad.
    • When/if it does break, you may keep all of the pieces.
    • If you find my materials helpful, both you & I will be happy, at least for a little while.
    • My advice is worth every penny you paid for it!

    ]]>
    1817
    An adventure creating a single user environment with 4 desktops. https://eirenicon.org/an-adventure-creating-a-single-user-environment-with-4-desktops/ Mon, 17 Feb 2020 16:46:23 +0000 https://eirenicon.org/?p=1800 Creating a single user with 4 desktop environments… an adventure.

    I have begun a project to create a single user environment that offers 4 desktop options, 2 beyond the current xfce4 & fluxbox (FB) offered by MX19.1. This environment is an extension of my work on creating a bspwm desktop. Most of what I learned in that ‘adventure’ is expanded upon here.

    Note: the opinions contained in this posting , both positive & negative, are mine. You may hold other opinions, If you do, I may still like you. I do not have to be right… 😉 even though I may be.

    By way of full disclosure I have to offer the following “insights”:

    1. I am a huge bspwm fan. It is by far my favorite window manager (desktop). It is included in the setup I am creating.
    2. I, also, am fond of both OpenBox (OB) and xfce4.14.
    3. I am not a fan of FB for a few reasons including:
      1. fluxbox (FB) does NOT support the ewmh standard, which means numerous non-native FB tools don’t work well or at all in FB.
      2. polybar my ‘goto panel for most desktops is among those. This problem was caused by me forgetting to do something; a stupid user problem (me). Here’s an image to prove polybar works.

        fluxbox with polybar, tint2 & rofi
    4. xfce4 also has a panel problem/issue; it wants the xfce-panel to run. So, I will use it. I suppose I’m willing to modify the xfce-panel because I’m used to it and can bend it to my will.
    5. I personally do not like the fluxbox (FB) toolbar and will see if I can either bend it to my will or find an alternative that will work. Found that I was able to fix my polybar dilemma.

    What I will build are desktops that offer similar functionality, as well as look and feel. My plan is to disclose the base performance numbers of my desktops and update the numbers as they evolve. I will attempt to tweak the desktop(s) performance within the boundaries of my usage desires and technical capabilities (limited as they are). In truth, I am undertaking this journey for the following reasons:

    1. a small group of young people, on Reddit, asked me to create a working bspwm desktop for them. (My altruistic reason)
    2. I want to see which of these toolsets are truly better for my use. (One of my selfish reasons.)
    3. I will define the differing facets of each environment, as I notice/ note them.

    For starters here are the particulars on my hardware setup:

    $ inxi -F
    System:
    Host: mx Kernel: 5.4.0-3-amd64 x86_64 bits: 64 Desktop: Fluxbox 1.3.5
    Distro: MX-19.1_ahs_x64 patito feo February 15 2019
    Machine:
    Type: Laptop System: Dell product: Latitude E5470 v: N/A
    serial:
    Mobo: Dell model: N/A serial: UEFI: Dell v: 1.21.6
    date: 10/02/2019
    Battery:
    ID-1: BAT0 charge: 43.4 Wh condition: 43.4/62.0 Wh (70%)
    CPU:
    Topology: Dual Core model: Intel Core i5-6300U bits: 64 type: MT MCP
    L2 cache: 3072 KiB
    Speed: 500 MHz min/max: 400/3000 MHz Core speeds (MHz): 1: 500 2: 501
    3: 500 4: 500
    Graphics:
    Device-1: Intel HD Graphics 520 driver: i915 v: kernel
    Display: x11 server: X.Org 1.20.4 driver: modesetting unloaded: fbdev,vesa
    resolution: 1920x1080~60Hz
    OpenGL: renderer: Mesa DRI Intel HD Graphics 520 (Skylake GT2)
    v: 4.6 Mesa 19.3.3
    Audio:
    Device-1: Intel Sunrise Point-LP HD Audio driver: snd_hda_intel
    Sound Server: ALSA v: k5.4.0-3-amd64
    Network:
    Device-1: Intel Ethernet I219-LM driver: e1000e
    IF: eth0 state: down mac: 84:7b:eb:44:da:5d
    Device-2: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter
    driver: ath10k_pci
    IF: wlan0 state: up mac: 68:14:01:57:3d:df
    Device-3: Qualcomm Atheros type: USB driver: btusb
    Drives:
    Local Storage: total: 978.09 GiB used: 8.08 GiB (0.8%)
    ID-1: /dev/sda vendor: Crucial model: CT1050MX300SSD4 size: 978.09 GiB
    RAID:
    Hardware-1: Intel 82801 Mobile SATA Controller [RAID mode] driver: ahci
    Partition:
    ID-1: / size: 50.35 GiB used: 8.08 GiB (16.0%) fs: ext4 dev: /dev/sda4
    ID-2: swap-1 size: 25.72 GiB used: 0 KiB (0.0%) fs: swap dev: /dev/sda3
    Sensors:
    System Temperatures: cpu: 45.0 C mobo: N/A
    Fan Speeds (RPM): cpu: 0
    Info:
    Processes: 191 Uptime: 1h 57m Memory: 23.45 GiB used: 642.0 MiB (2.7%)
    Shell: bash inxi: 3.0.36

    On initial setup, the baseline numbers I show on my desktops for these 4 desktops are:

    • Openbox (OB)- 440 MB RAM
    • bspwm – 443 MB RAM
    • xfce4.14 – 740 MB RAM
    • fluxbox (FB) – 565 MB RAM

    This is where we start.  The journey will include screenshots, scripts, and links to all relevant dotfiles on my gitlab & github accounts. My objective is to, also, create a shareable version of MX19.1 that users may download and use. I will share much of what I learn along the way.

    The reason I am using MX Linux for this exercise is because MX is an excellent distro and very easy to use for creating distributive snapshots.  [controversial statement] However, I must say that for my personal use of bspwm, I prefer manjaro.  bspwm just runs better on an arch base. And if they ever create a toolset like MX snapshot, I could do all of this on that platform. I’m just not up for learning how-to manually create iso images of my desktop. [/controversial statement]

    I am not creating this as a supported, professional respin; if you use what I create you are on your own. Although you may pose questions, offer help, etc. Consider this a shared mental exercise or proof of concept; one I am willing to share.

    Sorry, but I’m not up for being or becoming a respin or distro author.

    The other articles in this series:


    Remember, like with all of my work, I am able to provide the following assurance(s):
    • It is almost certainly going to work until it breaks; although I have to admit it may never work and that would be sad.
    • When/if it does break, you may keep all of the pieces.
    • If you find my materials helpful, both you & I will be happy, at least for a little while.
    • My advice is worth every penny you paid for it!

    ]]>
    1800
    “Ricing” desktops https://eirenicon.org/2020/01/29/ricing-desktops/ Wed, 29 Jan 2020 14:28:53 +0000 http://eirenicon.org/?p=1788
    Openbox with 2 Tint2, nnn (file manager), thunar, neofetch, rofi menu, & conky on MX19 (Debian)

    For those who are unfamiliar, “ricing” is a small but interesting (to me anyway) *nix sub-culture. These are folks who focus on transforming lower resource environments into works of art, beauty, and efficient work-flow. Most typically, they focus on tiling window manager (twm) environments although there is also regular interest in Openbox and less frequently Fluxbox (stacking window manager ~ swm). Occasionally,  you may encounter efforts focused on addressing heavier Desktop Environments (DEs) such as gnome, cinnamon, KDE, etc.

    For more detailed insight, please read:

    By way of full disclosure, I may be one of the older ‘ricers’. If you meander this site, you will see many of my ricing efforts (although they are not often described via that term.) My special interests involve using Debian (MX & antiX) and arch (ArchLabs & manjaro) based distros. Distros such as Void, Gentoo, and KISS are interesting to me but I simply do not have enough time to become proficient in their use. The window managers I enjoy most are:

    • bspwm #1 (by a long shot)
    • hlwm (HerbstluftWM)
    • Openbox

    N.B.: I do not really spend much time ricing my xfce4 desktop.

    In the past, I have, also, played around with:

    • iceWM
    • fluxbox
    • jwm

    If you are among those who might be interested in improving the look & feel of your desktop, while improving its performance, here are some clues as to how-to begin.

    1. Know that most of the windowm manager tweaks are published via items called ‘dotfiles’.
    2. Most people store and share their dotfiles on github & gitlab (I happen to use both).
    3. A wonderful place to view & share ricing efforts may be found on Reddit in the subgroup called unixporn.

    If you want to become quickly acquainted with one of the premier ‘ricers’ check his (addy’s) work out:

    • https://github.com/addy-dclxvi/almighty-dotfiles
    • https://www.joyk.com/dig/detail/50291

    My dotfiles may be accessed here:

     

    ]]>
    1788