CDE: Difference between revisions
imported>User No edit summary  | 
				|||
| (41 intermediate revisions by 6 users not shown) | |||
| Line 1: | Line 1: | ||
{{low quality|This page contains pseudo-code which will not work out of the box.}}  | |||
{{warning|This article makes use of precarious stateful system manipulations (imperatively writing to <code>/etc</code>).}}  | |||
[[File:CDE.png|frameless|right]]  | |||
Aka '''cdesktopenv''' or '''Common Desktop Environment''' is a vintage desktop environment.  | |||
== 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/  |    sudo cp -r ${pkgs.cdesktopenv}/opt/dt/config/xfonts/$LANG /etc/dt/config/xfonts  | ||
   sudo   |    sudo sed -i '/dt-interface/d' /etc/dt/config/xfonts/$LANG/fonts.alias  | ||
Now   | 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 39: | Line 39: | ||
{{file|~/.dt/sessions/sessionetc|bash|<nowiki>  | {{file|~/.dt/sessions/sessionetc|bash|<nowiki>  | ||
#!/usr/bin/env nix-shell  | |||
#!nix-shell -i sh -p xcompmgr xosview2  | |||
xcompmgr -c &  | |||
xosview2 &  | |||
</nowiki>}}  | </nowiki>}}  | ||
   chmod +x ~/.dt/sessions/sessionetc  |    chmod +x ~/.dt/sessions/sessionetc  | ||
| Line 52: | Line 54: | ||
To disable system control, add a '''delete''' property like this  | To disable system control, add a '''delete''' property like this  | ||
CONTROL Trash  | |||
  CONTROL Trash  | |||
  {  |   {  | ||
   CONTAINER_NAME  Top  |    CONTAINER_NAME  Top  | ||
| Line 61: | Line 64: | ||
== 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  | ||
{{file|/etc/nixos/configuration.nix|nix|<nowiki>  | |||
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  | |||
    ];  | |||
}  | |||
</nowiki>}}  | |||
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  | |||
{{file|~/.Xdefaults|bash|<nowiki>  | |||
Dtwm*qutebrowser*iconImage:   qutebrowser  | |||
</nowiki>}}  | |||
== Setting wallpaper ==  | |||
Put .jpg or .png under ~/.dt/backdrops then select it in Style Manager / Backdrop  | |||
== Gtk and Qt theme ==  | |||
Add to your configuration  | |||
{{file|/etc/nixos/configuration.nix|nix|<nowiki>  | |||
  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";  | |||
  };  | |||
</nowiki>}}  | |||
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 ==  | |||
{{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/  | |||
[[Category:Cookbook]]  | |||
[[Category:Desktop environment]]  | |||
Latest revision as of 20:02, 19 April 2024
/etc).
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/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
#!/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
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
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
  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
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
#!/bin/sh
cde-battery &
Please read Editing panel section
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
{ 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";
  };
}