CDE
Aka cdesktopenv or Common Desktop Environment is a vintage desktop environment.
Changing fonts
sudo mkdir -p /etc/dt/config/xfonts sudo cp -r ${pkgs.cdesktopenv}/opt/dt/appconfig/types/C /etc/dt/config/xfonts sudo cp -r ${pkgs.cdesktopenv}/opt/dt/appconfig/types/en_US.UTF-8 /etc/dt/config/xfonts
Now edit /etc/dt/config/xfonts/*/fonts.alias and remove all -dt-interface references. Add these instead. In this example Helvetica and Courier are used instead of fixed fonts.
"-dt-interface system-medium-r-normal-xxs sans-10-100-72-72-p-61-iso8859-1" "-adobe-helvetica-medium-r-normal--10-*-75-75-p-56-iso8859-1" "-dt-interface system-medium-r-normal-xs sans-11-110-72-72-p-64-iso8859-1" "-adobe-helvetica-medium-r-normal--11-80-100-100-p-56-iso8859-1" "-dt-interface system-medium-r-normal-s sans-12-120-72-72-p-73-iso8859-1" "-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1" "-dt-interface system-medium-r-normal-m sans-13-130-72-72-p-87-iso8859-1" "-adobe-helvetica-medium-r-normal--14-140-75-75-p-77-iso8859-1" "-dt-interface system-medium-r-normal-l sans-15-150-72-72-p-100-iso8859-1" "-adobe-helvetica-medium-r-normal--14-140-75-75-p-77-iso8859-1" "-dt-interface system-medium-r-normal-xl sans-18-180-72-72-p-114-iso8859-1" "-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1" "-dt-interface system-medium-r-normal-xxl sans-21-210-72-72-p-123-iso8859-1" "-adobe-helvetica-medium-r-normal--20-140-100-100-p-100-iso8859-1" "-dt-interface user-medium-r-normal-xxs serif-10-100-72-72-m-60-iso8859-1" "-adobe-courier-medium-r-normal--10-100-75-75-m-60-iso8859-1" "-dt-interface user-medium-r-normal-xs serif-11-110-72-72-m-60-iso8859-1" "-adobe-courier-medium-r-normal--11-80-100-100-m-60-iso8859-1" "-dt-interface user-medium-r-normal-s serif-12-120-72-72-m-80-iso8859-1" "-adobe-courier-medium-r-normal--12-120-75-75-m-70-iso8859-1" "-dt-interface user-medium-r-normal-m serif-13-130-72-72-m-90-iso8859-1" "-adobe-courier-medium-r-normal--14-140-75-75-m-90-iso8859-1" "-dt-interface user-medium-r-normal-l serif-15-150-72-72-m-110-iso8859-1" "-adobe-courier-medium-r-normal--14-140-75-75-m-90-iso8859-1" "-dt-interface user-medium-r-normal-xl serif-18-180-72-72-m-120-iso8859-1" "-adobe-courier-medium-r-normal--18-180-75-75-m-110-iso8859-1" "-dt-interface user-medium-r-normal-xxl serif-21-210-72-72-m-140-iso8859-1" "-adobe-courier-medium-r-normal-*-20-140-100-100-m-110-iso8859-1" "-dt-interface user-bold-r-normal-xxs serif-10-100-72-72-m-60-iso8859-1" "-adobe-courier-bold-r-normal--10-100-75-75-m-60-iso8859-1" "-dt-interface user-bold-r-normal-xs serif-11-110-72-72-m-60-iso8859-1" "-adobe-courier-bold-r-normal--11-80-100-100-m-60-iso8859-1" "-dt-interface user-bold-r-normal-s serif-12-120-72-72-m-80-iso8859-1" "-adobe-courier-bold-r-normal--12-120-75-75-m-70-iso8859-1" "-dt-interface user-bold-r-normal-m serif-13-130-72-72-m-90-iso8859-1" "-adobe-courier-bold-r-normal--14-140-75-75-m-90-iso8859-1" "-dt-interface user-bold-r-normal-l serif-15-150-72-72-m-110-iso8859-1" "-adobe-courier-bold-r-normal--14-140-75-75-m-90-iso8859-1" "-dt-interface user-bold-r-normal-xl serif-18-180-72-72-m-120-iso8859-1" "-adobe-courier-bold-r-normal--18-180-75-75-m-110-iso8859-1" "-dt-interface user-bold-r-normal-xxl serif-21-210-72-72-m-140-iso8859-1" "-adobe-courier-bold-r-normal--20-140-100-100-m-110-iso8859-1"
Adding programs to autolaunch
~/.dt/sessions/sessionetc
#!/usr/bin/env nix-shell
#!nix-shell -i sh -p xcompmgr xosview2
xcompmgr -c &
xosview2 &
chmod +x ~/.dt/sessions/sessionetc
Editing panel
cp ${pkgs.cdesktopenv}/opt/dt/appconfig/types/C/dtwm.fp ~/.dt/types chmod +w ~/.dt/types/dtwm.fp
Now edit ~/.dt/types/dtwm.fp
To disable system control, add a delete property like this
CONTROL Trash { CONTAINER_NAME Top CONTAINER_TYPE BOX DELETE True }
Creating an own program icon
Use Desktop_Apps/Create Action tool. Save actions under ~/.dt/appmanager
Icons should be in XPM or XBM format. Use the following configuration to convert from png icons
/etc/nixos/configuration.nix
let
cde-icons = pkgs.writeShellScriptBin "cde-icons" ''
file=`basename ''${1%.*}`
${pkgs.imagemagick}/bin/convert $1 -resize 48x48 ~/.dt/icons/$file.l.pm
${pkgs.imagemagick}/bin/convert $1 -resize 32x32 ~/.dt/icons/$file.m.pm
${pkgs.imagemagick}/bin/convert $1 -resize 24x24 ~/.dt/icons/$file.s.pm
${pkgs.imagemagick}/bin/convert $1 -resize 16x16 ~/.dt/icons/$file.t.pm
'';
in {
services.xserver.desktopManager.cde.extraPackages = with pkgs;
options.services.xserver.desktopManager.cde.extraPackages.default ++ [
cde-icons
];
}
For example
cde-icons /run/current-system/sw/share/icons/hicolor/512x512/apps/qutebrowser.png
Setting icons on minimized programs
~/.Xdefaults
Dtwm*qutebrowser*iconImage: qutebrowser
Own wallpapers
Put .jpg or .png under ~/.dt/backdrops then select it in Style Manager / Backdrop
Gtk and Qt theme
Add to your configuration
/etc/nixos/configuration.nix
services.xserver.desktopManager.cde.extraPackages = with pkgs;
options.services.xserver.desktopManager.cde.extraPackages.default ++ [
cde-gtk-theme
];
environment.etc."xdg/gtk-2.0/gtkrc".text = ''
gtk-theme-name="cdetheme"
'';
environment.etc."xdg/gtk-3.0/settings.ini".text = ''
[Settings]
gtk-theme-name=cdetheme
'';
qt5 = {
enable = true;
platformTheme = "gtk2";
style = "gtk2";
};
Now copy the theme to home directory and adjust the colors to match your main CDE palette
mkdir -p ~/.themes cp -Lr --no-preserve=mode /run/current-system/sw/share/themes/cdetheme ~/.themes/ chmod +x ~/.themes/cdetheme/scripts/switchtheme cd ~/.themes/cdetheme/scripts/ ./switchtheme ../palettes/Arizona.dp 8 3 22 false true false
Example configuration
/etc/nixos/configuration.nix
let
cde-icons = pkgs.writeShellScriptBin "cde-icons" ''
file=`basename ''${1%.*}`
${pkgs.imagemagick}/bin/convert $1 -resize 48x48 ~/.dt/icons/$file.l.pm
${pkgs.imagemagick}/bin/convert $1 -resize 32x32 ~/.dt/icons/$file.m.pm
${pkgs.imagemagick}/bin/convert $1 -resize 24x24 ~/.dt/icons/$file.s.pm
${pkgs.imagemagick}/bin/convert $1 -resize 16x16 ~/.dt/icons/$file.t.pm
'';
in {
# CDE has a limited number of locales
i18n.defaultLocale = lib.mkForce "en_US.UTF-8";
# CDE has no keyboard layout configuration
services.xserver.layout = "us,ru";
services.xserver.xkbOptions = "grp:alt_shift_toggle,grp_led:caps";
services.xserver.desktopManager.cde.enable = true;
services.xserver.desktopManager.cde.extraPackages = with pkgs;
options.services.xserver.desktopManager.cde.extraPackages.default ++ [
fsv cde-icons cde-gtk-theme
];
environment.etc."xdg/gtk-2.0/gtkrc".text = ''
gtk-theme-name="cdetheme"
'';
environment.etc."xdg/gtk-3.0/settings.ini".text = ''
[Settings]
gtk-theme-name=cdetheme
'';
qt5 = {
enable = true;
platformTheme = "gtk2";
style = "gtk2";
};
}