FreeBSD Desktop

The FreeBSD Desktop series are about creating efficient desktop environment on the FreeBSD system.

It is applicable to all supported FreeBSD versions – you can check which FreeBSD versions are currently supported on this page – Release Information: Currently Supported – from official FreeBSD website. If something gets out of date or works differently on newer versions – I add a needed UPDATE to a post to make it up to date.

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.

Articles directly related to (but not limited to) FreeBSD Desktop series.

Below are the contents of each episode.


FreeBSD Desktop – Part 1 – Simplified Boot

Silence the FreeBSD boot process by:

  • Modifying /etc/rc.d/* scripts.
  • Adding rc_startmsgs=NO to the /etc/rc.conf file.


FreeBSD Desktop – Part 2 – Install

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.


FreeBSD Desktop – Part 2.1 – Install FreeBSD 12

Install FreeBSD 12.0 on Lenovo ThinkPad X220.

  • Use GELI encrypted root on ZFS.
  • Get new bectl tool.


FreeBSD Desktop – Part 3 – X11 Window System

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.


FreeBSD Desktop – Part 4 – Key Components – Window Manager

Description of window manager – one of the key components of FreeBSD Desktop.

Differences between Openbox and Fluxbox … and PekWM as a bonus.


FreeBSD Desktop – Part 5 – Key Components – Status Bar

Description of status bar – one of the key components of FreeBSD Desktop.


FreeBSD Desktop – Part 6 – Key Components – Task Bar

Description of task bar – one of the key components of FreeBSD Desktop.

  • Tint2
  • Plank


FreeBSD Desktop – Part 7 – Key Components – Wallpaper Handling

Description of wallpaper handling – one of the key components of FreeBSD Desktop.


FreeBSD Desktop – Part 8 – Key Components – Application Launcher

Description of application launcher – one of the key components of FreeBSD Desktop.

  • dmenu
  • rofi


FreeBSD Desktop – Part 9 – Key Components – Keyboard/Mouse Shortcuts

Description of keyboard/mouse shortcuts – one of the key components of FreeBSD Desktop.

  • xmodmap
  • xbindkeys
  • xdotool


FreeBSD Desktop – Part 10 – Key Components – Locking Solution

Description of locking solution – one of the key components of FreeBSD Desktop.

  • mate-screensaver
  • xlock
  • xautolock

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.


FreeBSD Desktop – Part 11 – Key Components – Blue Light Spectrum Suppress

Description of blue light spectrum suppress – one of the key components of FreeBSD Desktop.

  • F.lux (closed source)
  • Redshift (open source)


FreeBSD Desktop – Part 12 – Configuration – Openbox

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


FreeBSD Desktop – Part 13 – Configuration – Dzen2

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.


FreeBSD Desktop – Part 14 – Configuration – Tint2

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 – cpu_Lcpu_Mcpu_H – to set various CPU frequencies (from left Low/Medium/High).
  • Provide button – wallpaper – to set new random wallpaper.


FreeBSD Desktop – Part 15 – Configuration – Fonts & Frameworks

Proper fonts rendering on a FreeBSD system.


FreeBSD Desktop – Part 16 – Configuration – Pause Any Application

Freeze any X11 application with single keyboard shortcut or mouse gesture.


FreeBSD Desktop – Part 17 – Configuration – Automount Removable Media

Various methods of automatically (or not) mount external/removable devices such as USB or eSATA disks/pendrives or SD/microSD flash cards.


FreeBSD Desktop – Part 18 – Configuration – Global Dashboard

A thing called Global Dashboard with all information you would ever need for debugging on the laptop/desktop system.


FreeBSD Desktop – Part 19 – Configuration – Plank – Skippy-XD

Adding Plank dock and Skippy-XD expose-like tool.


FreeBSD Desktop – Part 20 – Configuration – Unlock Your Laptop with Phone

Configure devd(8) to lock/unlock your laptop with phone attach/detach event.


FreeBSD Desktop – Part 21 – Configuration – Compton

Configure Compton to display everything properly and do not consume 100% of your CPU time.


FreeBSD Desktop – Part 22 – Configuration – Aero Snap Extended

Manage windows on X11 desktop using Aero Snap Extended script.


FreeBSD Desktop – Part 23 – Configuration – Herbe Notifications

Minimal and light X11 notifications without D-Bus daemon using herbe.


FreeBSD Desktop – Part 24 – Configuration – Universal File Opener

Universal file openerΒ and XDG handlers headaches.


FreeBSD Desktop – Part 25 – Configuration – Random Terminal Theme

Configure xterm(1) and urxvt(1)to have random theme at startup.



FreeBSD Desktop – Part 26 – Configuration – Conferencing and Meetings

Online video conferencing and/or meetings with webcamd(8) daemon.



FreeBSD Desktop – Part 27 – Configuration – Netflix Signal Telegram

Install and use Netflix/Signal/Telegram on FreeBSD desktop.




FreeBSD Network Management with Script

The script allows for easy management for all laptop/desktop connections on:

  • WiFi
  • LAN
  • WWAN


The Power to Serve – FreeBSD Power Management

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


Less Known pkg(8) Features

An article about pkg(8) – the current FreeBSD modern package manager sometimes also called PKGng.


Fix Broken Dependency on FreeBSD

Various methods of fixing broken dependencies on FreeBSD.


Read HFS filesystem 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.


List Block Devices on FreeBSD lsblk(8) Style

If you got used to lsblk(1) you can now have it on FreeBSD.


Run broot on FreeBSD

The broot file manager.


Wallpapers from Tech Pron

Wallpapers I made from the images of computers posted by Tech Pron account on Twitter.

Other/external resources for the FreeBSD on laptops/desktops: