Not so Common Desktop Environment (NsCDE) Manual
|  | Next

## Not so Common Desktop Environment (NsCDE) Manual

### M. Z.

This manual describes version 2.3 of NsCDE.

Copyright © 2019, 2020, 2021, 2022, 2023 M. Z.

Abstract

This manual describes NsCDE: Not so Common Desktop Environment. Visual CDE clone built with more up to date tools, to fit with modern day toolkits and applications. NsCDE is invented to provide "blast from the past" which is perfectly usable for professionals and people tring to recover from PTSD syndrome after beeing in touch with so called "material design" and various toy-like interfaces.

## 1. Introduction

### 1.1. What is NsCDE?

In a nutshell, NsCDE is CDE visual clone built with more moden tools around FVWM window manager. Tehnically, it can also be considered a heavyweight FVWM theme enriched with additional free software tools and applications, combining all this components into something which can be called lightweight hybrid desktop environment. It can even be integrated into existing desktop environments with session management as a window manager wrapper for session handling and additional DE functionality.

NsCDE's main goal is to revive somewhat brutalist look and feel of the Common Desktop Environment found on many UNIX and unix-like systems during nineties and first decade of the 21 century, but with a more polished interface (XFT, unicode, dynamic changes, rich key and mouse bindings, workspace pages, rich menus etc) and a goal to produce comfortable "retro" environment which is not just a eye candy toy, but a real working environment for users who contrary to mainstream trends really like CDE, thus making semi-optimal blend of usability and compatibility with modern tools with look and feel which mainstream abadoned for some new fashion, and ... in a nutshell, giving to user the best of the both worlds.

Main driver behind NsCDE is the excellent FVWM window manager with it's endless options for customization, GUI Script engine, Colorsets, and modules. NsCDE is largely a wrapper around FVWM - something like a heavyweight theme, sort of. The other important pars are FvwmScript GUI in which CDE-like tools are written, GTK2 and GTK3 theme for unifying look and feel, which can also extend to Qt4 and Qt5 with gtk engine of Qt, X settings which are following the same theme rules, icon theme, python programs, converters and generators, korn shell scripts, CDE-compatible backdrops and palettes and misc pieces for integration like CSS theme for Firefox and Thunderbird, and stand alone integrated desktop-making parts like stalonetray, dunst, xsettingsd, xscreensaver etc. Since NsCDE 2.1 for Qt5 there is a experimental Kvantum SVG based NsCDE engine as an alternative for Qt5 gtk2 engine. From NsCDE 2.3 and newer, Kvantum SVG based engine is default choice for Qt5, and the only choice for new Qt6.

### 1.2. Why NsCDE?

Since the 90-ties, I have always liked this environment and it's somewhat crude socrealistic look, described by some people as brutalism in achitecture. All that in a contrast to "modern" Windows and GNOME flat black/white interfaces and Google's "material" design - which are going in the opposite taste direction from what I always liked to see on my screen. I have created this environment for my own usage 8-10 years ago and it was a patchwork, chaotic and not well suited for sharing with someone. While it looked ok on the surface, behind it was a years of ad hoc hacks and senseless configurations and scripts, dysfunctional menus etc. Couple of months in a row I had a time and chance to rewrite this as a more consistent environment, first for myself, and during this process, idea came to do it even better, and put on the web for everyone else who may like this idea of CDE for 21st century. Year by year NsCDE has 3 years now. Many things are added, changed, hardened, debugged.

NsCDE is intended for a people which doesn't like "modern" hypes, interfaces that try to mimic Mac and Windows and reimplementing their (poor) ideas for non-technical user's desktops, and reimplementing them even more poorly. Older and mature system administrators, programmers and generally people from the Unix background are more likely to have attraction to NsCDE. It is probably not well suited for beginners.

Of course, question arises: why not simply use original original CDE now when it is open sourced?

Apart from desirable look, because it has it's own problems: it is a product from 90-ties, based on Motif and time has passed since then. In CDE there is no really smooth out of the box XFT font rendering, no immediate application dynamic changes, there are insecure RPC and obsolete tooltalk procedures even for starting local applications. Beside that, I have found dtwm, CDE's window manager inferior to FVWM and some 3rd party solutions which can be paired with it. So I wanted the best of the two worlds: good old retro look and feel from original CDE, but more flexible, modern and maintained "drivers" behind it, which will allow for individual customizations as one find's them fit for it's own amusement and usage. As it will be seen later, there are some small intentional differences between CDE and NsCDE - a middle line between trying to stay as close as possible to look of the CDE, but with more flexibility and functionality on the second and third look.

### 1.3. Path conventions

In this document, a certain file and directory components of the NsCDE are referred with variables. This variables represents system or user paths. The former can be different on different systems, depending the OS convention for instaling third party software, or if NsCDE was installed from the package or the source tarball. For example, on BSD systems, ports and packages will usually use `/usr/local` as the installation base (reffered by NsCDE as `$NSCDE_ROOT`), while on Linux, this is often `/usr` if installed from the package. On Solaris systems, this can be `/usr/sfw`, while on NetBSD it may default to `/usr/pkg`. Various components of this installarion base, such as share, lib or similar are represented with the following variables:

- `$NSCDE_ROOT` - the base of the installation, such are `/usr/local` or `/usr`

- `$NSCDE_DATADIR` - refers to `share/NsCDE` directory. Probably majority of the stuff is located here. FVWM configurations, defaults, program bits, backdrops, photos, palettes, config templates, non-XDG old style icons, integration templates etc ...

- `$NSCDE_LIBDIR` - refers to `lib/NsCDE` directory. This can often be `lib64/NsCDE` or `lib/<arch>-linux-gnu/NsCDE` directory. Here are FvwmScript, Python and C components, as well as wrappers which may override some FVWM modules.

- `$NSCDE_TOOLSDIR` - refers to `libexec/NsCDE` directory. but it is often the same as `$NSCDE_LIBDIR` specially on Debian and it's clones. Here are the python programs and scripts, as well as shell helpers used by FVWM functions and FvwmScript programs. Altrough not intended to be run manually, it can be used by advanced users to achieve some integration or additional locale functionality. For example, python command palette_colorgen is used in the default `$FVWM_USERDIR/libexec/colormgr.local` to shape Gkrellm, Firefox, Thunderbird and such programs into the CDE palette color scheme. This is never installed in $prefix/bin paths, because it is not of general usage, and therefore to minimize commands in path pollution.

- `$FVWM_USERDIR` refers to `$HOME/.NsCDE`. In an early phase of NsCDE startup, this is defined, so NsCDE never clashes with the default FVWM `$HOME/.fvwm`. User configurations, customizations and preferences are located there.

Outside of this paths, NsCDE installs the following contents on the filesystem:

- `/etc/xdg/menus/nscde-applications.menu` where /etc can be /usr/local/etc or some other install base.

- `$NSCDE_ROOT/share/xsessions/nscde.desktop`: many X Display Managers pick up this. Exact installation depends on the system's defaults for xsession .desktop files.

- `share/icons/NsCDE` - XDG compatible icon theme.

- `share/desktop-directories/nscde-*` - XDG grouping of applications for NsCDE as dekstop environment.

- `share/doc/nscde` - documentation (like this one)

- `share/locale/$LANG/LC_MESSAGES/...` - ".mo" localization files.

- `bin/nscde` - main starting wrapper.

- `bin/nscde_fvwmclnt` - selector of the right FvwmCommand on the systems with multiple versions and paths of the FVWM installations.

|  | Next
|  | 2. Components of the NsCDE