Difference between revisions of "CDE"

From NixOS Wiki
Jump to: navigation, search
m (rollback unauthorized mass edits)
Tag: Rollback
 
(27 intermediate revisions by 6 users not shown)
Line 1: Line 1:
[[File:CDE.png]]
+
[[File:CDE.png|frameless|right]]
  
 
Aka '''cdesktopenv''' or '''Common Desktop Environment''' is a vintage desktop environment.
 
Aka '''cdesktopenv''' or '''Common Desktop Environment''' is a vintage desktop environment.
  
== Enabling ==
+
{{Note|this wiki article contains pseudo code which will not work out of the box and usage of stateful configuration (e.g. imperatively writing to /etc ). As of now, use this article as a blueprint for your own configuration}}
 
 
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
 
  services.xserver.desktopManager.cde.enable = true;
 
</nowiki>}}
 
 
 
 
== Changing fonts ==
 
== Changing fonts ==
 
   sudo mkdir -p /etc/dt/config/xfonts
 
   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/config/xfonts/$LANG /etc/dt/config/xfonts
   sudo cp -r ${pkgs.cdesktopenv}/opt/dt/appconfig/types/en_US.UTF-8 /etc/dt/config/xfonts
+
   sudo sed -i '/dt-interface/d' /etc/dt/config/xfonts/$LANG/fonts.alias
  
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.
+
Now add the following to /etc/dt/config/xfonts/$LANG/fonts.alias file. 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-xxs sans-10-100-72-72-p-61-iso8859-1"  "-adobe-helvetica-medium-r-normal--10-*-75-75-p-56-iso8859-1"
Line 47: Line 42:
 
xosview2 &
 
xosview2 &
 
</nowiki>}}
 
</nowiki>}}
 
 
   chmod +x ~/.dt/sessions/sessionetc
 
   chmod +x ~/.dt/sessions/sessionetc
  
Line 66: Line 60:
  
 
== Creating an own program icon ==
 
== 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
 
Icons should be in XPM or XBM format. Use the following configuration to convert from png icons
Line 90: Line 82:
  
 
   cde-icons /run/current-system/sw/share/icons/hicolor/512x512/apps/qutebrowser.png
 
   cde-icons /run/current-system/sw/share/icons/hicolor/512x512/apps/qutebrowser.png
 +
 +
Then select it in Desktop_Apps/Create Action tool. Save actions under ~/.dt/appmanager
  
 
== Setting icons on minimized programs ==
 
== Setting icons on minimized programs ==
 
+
Please note that not all programs support this
 
{{file|~/.Xdefaults|bash|<nowiki>
 
{{file|~/.Xdefaults|bash|<nowiki>
 
Dtwm*qutebrowser*iconImage:  qutebrowser
 
Dtwm*qutebrowser*iconImage:  qutebrowser
 
</nowiki>}}
 
</nowiki>}}
 
+
== Setting wallpaper ==
== Own wallpapers ==
 
  
 
Put .jpg or .png under ~/.dt/backdrops then select it in Style Manager / Backdrop
 
Put .jpg or .png under ~/.dt/backdrops then select it in Style Manager / Backdrop
Line 122: Line 115:
 
   };
 
   };
 
</nowiki>}}
 
</nowiki>}}
Now copy the theme to home directory and adjust the colors to match your main CDE palette
+
Now copy the theme to home directory. Instead of Arizona.dp pick the palette you currently use in CDE for the match
 
   mkdir -p ~/.themes
 
   mkdir -p ~/.themes
 
   cp -Lr --no-preserve=mode /run/current-system/sw/share/themes/cdetheme ~/.themes/
 
   cp -Lr --no-preserve=mode /run/current-system/sw/share/themes/cdetheme ~/.themes/
Line 129: Line 122:
 
   ./switchtheme ../palettes/Arizona.dp 8 3 22 false true false
 
   ./switchtheme ../palettes/Arizona.dp 8 3 22 false true false
  
== Useful sources ==
+
== Changing volume and brightness with media keys ==
 +
Add the following to ~/.dt/dtwmrc
 +
  Keys DtKeyBindings
 +
  {
 +
    <Key>XF86AudioLowerVolume  root|icon|window|ifkey  f.exec "amixer set Master -q 5%-"
 +
    <Key>XF86AudioRaiseVolume  root|icon|window|ifkey  f.exec "amixer set Master -q 5%+"
 +
    <Key>XF86AudioMute          root|icon|window|ifkey  f.exec "amixer set Master -q toggle"
 +
    <Key>XF86MonBrightnessUp    root|icon|window|ifkey  f.exec "xbacklight -inc 1"
 +
    <Key>XF86MonBrightnessDown  root|icon|window|ifkey  f.exec "xbacklight -dec 1"
 +
  }
 +
== Battery widget ==
 +
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
 +
let
 +
  cde-battery = pkgs.writeScriptBin "cde-battery" ''
 +
    #!${pkgs.cdesktopenv}/opt/dt/bin/dtksh
 +
    ${pkgs.lib.readFile (pkgs.fetchurl {
 +
      url = "https://raw.githubusercontent.com/edorig/dtksh/5f49e402b391c81ebea9609bdec9c7716e70a8c0/battery";
 +
      sha256 = "0zjn9zl1as9xbk2845bbdy2xfj29b4hvvalcz8kf2llkndbfswvl";
 +
    })}
 +
  '';
 +
in {
 +
  services.xserver.desktopManager.cde.extraPackages = with pkgs;
 +
    options.services.xserver.desktopManager.cde.extraPackages.default ++ [
 +
      cde-battery
 +
    ];
 +
}
 +
</nowiki>}}
 +
Please read [[#Adding programs to autolaunch|Adding programs to autolaunch section]]
 +
{{file|~/.dt/sessions/sessionetc|bash|<nowiki>
 +
#!/bin/sh
 +
cde-battery &
 +
</nowiki>}}
 +
Please read [[#Editing panel|Editing panel section]]
 +
{{file|~/.dt/types/dtwm.fp||<nowiki>
 +
CONTROL Battery
 +
{
 +
POSITION_HINTS  14
 +
TYPE client
 +
CONTAINER_NAME Top
 +
CONTAINER_TYPE BOX
 +
CLIENT_NAME cde-battery
 +
CLIENT_GEOMETRY 97x58 
 +
HELP_STRING "Battery indicator"
 +
}
 +
</nowiki>}}
 +
== Example configuration ==
 +
 
 +
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
 +
{ pkgs, options, ... }
  
 +
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
 +
  '';
 +
  cde-battery = pkgs.writeScriptBin "cde-battery" ''
 +
    #!${pkgs.cdesktopenv}/opt/dt/bin/dtksh
 +
    ${pkgs.lib.readFile (pkgs.fetchurl {
 +
      url = "https://raw.githubusercontent.com/edorig/dtksh/5f49e402b391c81ebea9609bdec9c7716e70a8c0/battery";
 +
      sha256 = "0zjn9zl1as9xbk2845bbdy2xfj29b4hvvalcz8kf2llkndbfswvl";
 +
    })}
 +
  '';
 +
in {
 +
  # CDE has a limited number of locales
 +
  i18n.defaultLocale = "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 cde-battery
 +
    ];
 +
  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";
 +
  };
 +
}
 +
 +
</nowiki>}}
 +
== Useful links ==
 
* https://sourceforge.net/p/cdesktopenv/wiki/CustomisingCDE/
 
* https://sourceforge.net/p/cdesktopenv/wiki/CustomisingCDE/
  
 +
[[Category:Cookbook]]
 
[[Category:Configuration]]
 
[[Category:Configuration]]
[[Category:Guide]]
+
[[Category:Desktop environment]]
[[Category:Tutorial]]
+
[[Category:Applications]]
[[Category:Desktop]]
 

Latest revision as of 11:01, 6 April 2024

CDE.png

Aka cdesktopenv or Common Desktop Environment is a vintage desktop environment.

Note: this wiki article contains pseudo code which will not work out of the box and usage of stateful configuration (e.g. imperatively writing to /etc ). As of now, use this article as a blueprint for your own configuration

Changing fonts

 sudo mkdir -p /etc/dt/config/xfonts
 sudo cp -r ${pkgs.cdesktopenv}/opt/dt/config/xfonts/$LANG /etc/dt/config/xfonts
 sudo sed -i '/dt-interface/d' /etc/dt/config/xfonts/$LANG/fonts.alias

Now add the following to /etc/dt/config/xfonts/$LANG/fonts.alias file. 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

Breeze-text-x-plain.png
~/.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

Icons should be in XPM or XBM format. Use the following configuration to convert from png icons

Breeze-text-x-plain.png
/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

Then select it in Desktop_Apps/Create Action tool. Save actions under ~/.dt/appmanager

Setting icons on minimized programs

Please note that not all programs support this

Breeze-text-x-plain.png
~/.Xdefaults
Dtwm*qutebrowser*iconImage:   qutebrowser

Setting wallpaper

Put .jpg or .png under ~/.dt/backdrops then select it in Style Manager / Backdrop

Gtk and Qt theme

Add to your configuration

Breeze-text-x-plain.png
/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. Instead of Arizona.dp pick the palette you currently use in CDE for the match

 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

Changing volume and brightness with media keys

Add the following to ~/.dt/dtwmrc

 Keys DtKeyBindings
 {
   <Key>XF86AudioLowerVolume   root|icon|window|ifkey  f.exec "amixer set Master -q 5%-"
   <Key>XF86AudioRaiseVolume   root|icon|window|ifkey  f.exec "amixer set Master -q 5%+"
   <Key>XF86AudioMute          root|icon|window|ifkey  f.exec "amixer set Master -q toggle"
   <Key>XF86MonBrightnessUp    root|icon|window|ifkey  f.exec "xbacklight -inc 1"
   <Key>XF86MonBrightnessDown  root|icon|window|ifkey  f.exec "xbacklight -dec 1"
 }

Battery widget

Breeze-text-x-plain.png
/etc/nixos/configuration.nix
let
  cde-battery = pkgs.writeScriptBin "cde-battery" ''
    #!${pkgs.cdesktopenv}/opt/dt/bin/dtksh
    ${pkgs.lib.readFile (pkgs.fetchurl {
      url = "https://raw.githubusercontent.com/edorig/dtksh/5f49e402b391c81ebea9609bdec9c7716e70a8c0/battery";
      sha256 = "0zjn9zl1as9xbk2845bbdy2xfj29b4hvvalcz8kf2llkndbfswvl";
    })}
  '';
in {
  services.xserver.desktopManager.cde.extraPackages = with pkgs;
    options.services.xserver.desktopManager.cde.extraPackages.default ++ [
      cde-battery
    ];
}

Please read Adding programs to autolaunch section

Breeze-text-x-plain.png
~/.dt/sessions/sessionetc
#!/bin/sh
cde-battery &

Please read Editing panel section

Breeze-text-x-plain.png
~/.dt/types/dtwm.fp
CONTROL Battery 
{
POSITION_HINTS  14
TYPE client
CONTAINER_NAME Top
CONTAINER_TYPE BOX
CLIENT_NAME cde-battery
CLIENT_GEOMETRY 97x58  
HELP_STRING "Battery indicator"
}

Example configuration

Breeze-text-x-plain.png
/etc/nixos/configuration.nix
{ pkgs, options, ... }

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
  '';
  cde-battery = pkgs.writeScriptBin "cde-battery" ''
    #!${pkgs.cdesktopenv}/opt/dt/bin/dtksh
    ${pkgs.lib.readFile (pkgs.fetchurl {
      url = "https://raw.githubusercontent.com/edorig/dtksh/5f49e402b391c81ebea9609bdec9c7716e70a8c0/battery";
      sha256 = "0zjn9zl1as9xbk2845bbdy2xfj29b4hvvalcz8kf2llkndbfswvl";
    })}
  '';
in {
  # CDE has a limited number of locales
  i18n.defaultLocale = "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 cde-battery
    ];
  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";
  };
}

Useful links