Difference between revisions of "CDE"

From NixOS Wiki
Jump to: navigation, search
m (rollback unauthorized mass edits)
Tag: Rollback
 
(34 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 41: Line 36:
  
 
{{file|~/.dt/sessions/sessionetc|bash|<nowiki>
 
{{file|~/.dt/sessions/sessionetc|bash|<nowiki>
autorandr -l docked
+
#!/usr/bin/env nix-shell
xcompmgr -c &
+
#!nix-shell -i sh -p xcompmgr xosview2
 +
 
 +
xcompmgr -c &
 +
xosview2 &
 
</nowiki>}}
 
</nowiki>}}
 
 
   chmod +x ~/.dt/sessions/sessionetc
 
   chmod +x ~/.dt/sessions/sessionetc
  
Line 64: Line 61:
 
== Creating an own program icon ==
 
== Creating an own program icon ==
  
Use Desktop_Apps/Create Action tool. Save actions under ~/.dt/appmanager. Save icons under ~/.dt/icons
+
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
  
The icons must be in XPM or XBM format and they need to be in three sizes: 48x48, 32x32 and 16x16. Create three separate icons as each will be "consumed" when you use them in Create Action. I used The Gimp to create the three icons I needed. Examples are under ${pkgs.cdesktopenv}/opt/dt/appconfig/icons/C
+
  cde-icons /run/current-system/sw/share/icons/hicolor/512x512/apps/qutebrowser.png
  
== Own wallpapers ==
+
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
 
Put .jpg or .png under ~/.dt/backdrops then select it in Style Manager / Backdrop
  
== Useful sources ==
+
== 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/
 
* 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