The FreeBSD Desktop series are about creating efficient desktop environment on the FreeBSD system.
Why such series?
Because telling someone who wants FreeBSD desktop to buy Mac instead is like telling someone who wants Linux desktop to buy Windows because it has WSL (Windows Subsystem for Linux) inside 🙂
I made a separate FreeBSD Desktop series dedicated ‘global’ page that links to all episodes of the series along with table of contents for each episode’s contents.
Hope that will make it more useful and readable as a whole.
List of the episodes in the FreeBSD Desktop series.
- Part 01 --- Simplified Boot
- Part 02 --- Install FreeBSD 11
- Part 02.1 - Install FreeBSD 12
- Part 03 --- X11 Window System
- Part 04 --- Key Components - Window Manager
- Part 05 --- Key Components - Status Bar
- Part 06 --- Key Components - Task Bar
- Part 07 --- Key Components - Wallpaper Handling
- Part 08 --- Key Components - Application Launcher
- Part 09 --- Key Components - Keyboard/Mouse Shortcuts
- Part 10 --- Key Components - Locking Solution
- Part 11 --- Key Components - Blue Light Spectrum Suppress
- Part 12 --- Configuration - Openbox
- Part 13 --- Configuration - Dzen2
- Part 14 --- Configuration - Tint2
- Part 15 --- Configuration - Fonts & Frameworks
- Part 16 --- Configuration - Pause Any Application
- Part 17 --- Configuration - Automount Removable Media
- Part 18 --- Configuration - Global Dashboard
- Part 19 --- Configuration - Plank - Skippy-XD
- Part 20 --- Configuration - Unlock Your Laptop with Phone
- Part 21 --- Configuration - Compton
- Part 22 --- Configuration - Aero Snap Extended
- Part 23 --- Configuration - Herbe Notifications
- Part 24 --- Configuration - Universal File Opener
- Part 25 --- Configuration - Random Terminal Theme
- Part 26 --- Configuration - Conferencing and Meetings
- Part 27 --- Configuration - Netflix Signal Telegram
Articles directly related to (but not limited to) FreeBSD Desktop series.
- FreeBSD Network Management with network.sh
- The Power to Serve – FreeBSD Power Management
- FreeBSD 13.1 on ThinkPad W520
- Read HFS filesystem on FreeBSD
- Wallpapers from Tech Pron
- Run broot on FreeBSD
- Classic ThinkPad Thermal Paste Change
- Oldschool Gaming on FreeBSD
- FreeBSD GNOME 3 Fast Track
- XFCE Cupertino Way
- Realtek RTL8188CUS – USB 802.11n WiFi Review
- UNIX Mouse Shootout
- Secure Containerized Browser
- Epitaph to Laptops
- Desktop Environments Resource Usage Comparison
Below are the contents of each episode.
Silence the FreeBSD boot process by:
- Modifying /etc/rc.d/* scripts.
- Adding rc_startmsgs=NO to the /etc/rc.conf file.
Install FreeBSD 11.2 on Lenovo ThinkPad X220 along with BIOS settings.
- Setup wireless WiFi networking.
- GPT fix needed for T420/T420s/X220/T520/W520 Lenovo ThinkPad laptops.
Install FreeBSD 12.0 on Lenovo ThinkPad X220.
- Use GELI encrypted root on ZFS.
- Get new bectl tool.
Setup X11 on FreeBSD system.
- Add user to video group.
- Add user to needed login class.
- New drm-next kernel modules related to graphics drivers.
- X11 server configuration.
- XDM Black and Grey theme.
Description of window manager – one of the key components of FreeBSD Desktop.
Differences between Openbox and Fluxbox … and PekWM as a bonus.
Description of status bar – one of the key components of FreeBSD Desktop.
Description of task bar – one of the key components of FreeBSD Desktop.
Description of wallpaper handling – one of the key components of FreeBSD Desktop.
Description of application launcher – one of the key components of FreeBSD Desktop.
Description of keyboard/mouse shortcuts – one of the key components of FreeBSD Desktop.
Description of locking solution – one of the key components of FreeBSD Desktop.
After messing little more with xlock(1) I found way nicer looking configuration (or should I say ‘theme’ here) for it. It looks like that.
Description of blue light spectrum suppress – one of the key components of FreeBSD Desktop.
- F.lux (closed source)
- Redshift (open source)
Configuration of the Openbox window manager along with adhering topics.
- Openbox configuration.
- Nice looking Openbox theme.
- Openbox Menu (static) with nice looking icons.
- Openbox Menu for FreeBSD top(1)/ps(1) commands and config files/logs.
- Openbox Menu for FreeBSD default sound output.
- Openbox Menu and shortcuts for FreeBSD sound volume increase/decrease.
- Openbox Menu for FreeBSD for CPU frequency scaling.
- Openbox Menu for FreeBSD network management with network.sh script.
- Openbox Menu for screenshots/wallpapers management.
- Openbox Menu for Recent files.
- Random wallpaper handling.
- Random xterm(1) theme at every terminal start with lost of great themes.
- Openbox shortcuts and script for Aero Snap like behavior.
- Openbox Dmenu shortcuts and integration.
- Openbox configured with nice fonts.
- Openbox shortcuts for most important tasks.
- Warning for low battery on laptop.
- The doas(1) integration.
- Scripts needed to glue all these solutions.
- The crontab(1) entries.
- Keyboard Shortcuts.
- Mouse Shortcuts.
The provided status bar backed by Dzen2 will be providing the following information.
- date: Date in ISO 8601 format along with current time.
- sys: CPU frequency, CPU temperature, system load and free RAM.
- ip: List of current IP addresses and its interfaces.
- gw: System default network gateway.
- dns: System default DNS.
- ping: Current Internet access state.
- vol/pcm: Volume level for vol and pcm backends.
- fs: ZFS pools free space.
- bat: Battery and AC status.
- top: Top 3 processes with highest CPU usage along with their RAM usage.
The task bar role served by the Tint2 will be providing the following features.
- Launcher for the most used applications.
- Show opened/minimized windows on each of four virtual desktops.
- Indicate current used virtual desktop.
- Provide system tray area for applications that depend on it.
- Maximize selected window with [Right Mouse Button].
- Close selected window with [Middle Mouse Button].
- Focus selected window along with switching to the virtual desktop with that window using [Left Mouse Button].
- Pass [Left/Middle/Right Mouse Button] events to Openbox window manager when not clicked on objects.
- Provide buttons – – to set various CPU frequencies (from left Low/Medium/High).
- Provide button – – to set new random wallpaper.
Proper fonts rendering on a FreeBSD system.
Freeze any X11 application with single keyboard shortcut or mouse gesture.
Various methods of automatically (or not) mount external/removable devices such as USB or eSATA disks/pendrives or SD/microSD flash cards.
A thing called Global Dashboard with all information you would ever need for debugging on the laptop/desktop system.
Adding Plank dock and Skippy-XD expose-like tool.
Configure devd(8) to lock/unlock your laptop with phone attach/detach event.
Configure Compton to display everything properly and do not consume 100% of your CPU time.
Manage windows on X11 desktop using Aero Snap Extended script.
Minimal and light X11 notifications without D-Bus daemon using herbe.
Universal file opener see.sh and XDG handlers headaches.
Configure xterm(1) and urxvt(1)to have random theme at startup.
Online video conferencing and/or meetings with webcamd(8) daemon.
Install and use Netflix/Signal/Telegram on FreeBSD desktop.
The network.sh script allows for easy management for all laptop/desktop connections on:
FreeBSD offers many mechanisms in the power management department:
- power off devices without attached driver
- scale CPU frequency and power
- supports CPU sleep states (C1/C1E/C2/C3/…)
- enabling/disabling Turbo Mode available in most CPUs
- per USB device power management options
- SATA/AHCI channels/controllers power management
- limit of wakeups/interrupts to increase idle time
- suspend/resume support (along with using laptop lid for it)
- support for vendor specific tools that help to measure power management
- tools and ACPI support for fan speed control
- tools and ACPI support for setting screen brightness
- battery capacity status and running time estimation
- network interfaces power saving options
One word about different files for the settings in the FreeBSD system:
- /etc/rc.conf – does not require reboot just daemons reloading
- /etc/sysctl.conf – does not require reboot – you can set them at runtime
- /boot/loader.conf – these settings REQUIRE reboot
An article about pkg(8) – the current FreeBSD modern package manager sometimes also called PKGng.
Various methods of fixing broken dependencies on FreeBSD.
For those ones that still use Mac OS X on their desktops/laptops instead of FreeBSD there is now possibility to mount HFS+ filesystem volumes under FreeBSD in read only thanks to FUSE subsystem.
If you got used to lsblk(1) you can now have it on FreeBSD.
The broot file manager.
Wallpapers I made from the images of computers posted by Tech Pron account on Twitter.
Other/external resources for the FreeBSD on laptops/desktops:
- FreeBSD 11 Desktop Howto
- Laptops Running FreeBSD
- Using FreeBSD as Desktop OS
- Synaptics Touchpad on FreeBSD
- FreeBSD Common Desktop Environment (CDE) Installation Notes
- FreeBSD on Laptop
- FreeBSD on ThinkPad X240
- Mac-like FreeBSD Laptop