summaryrefslogtreecommitdiffstats
path: root/os-plugins/plugins/desktop/OpenSLX
diff options
context:
space:
mode:
authorSebastian Schmelzer2010-09-02 17:50:49 +0200
committerSebastian Schmelzer2010-09-02 17:50:49 +0200
commit416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5 (patch)
tree4715f7d742fec50931017f38fe6ff0a89d4ceccc /os-plugins/plugins/desktop/OpenSLX
parentFix for the problem reported on the list (sed filter forgotten for the (diff)
downloadcore-416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5.tar.gz
core-416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5.tar.xz
core-416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5.zip
change dir structure
Diffstat (limited to 'os-plugins/plugins/desktop/OpenSLX')
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Base.pm432
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Debian.pm63
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Fedora.pm30
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Gentoo.pm30
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm132
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm162
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm54
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm169
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm161
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_9_04.pm161
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/OSPlugin/desktop.pm712
11 files changed, 0 insertions, 2106 deletions
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Base.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Base.pm
deleted file mode 100644
index 316448bb..00000000
--- a/os-plugins/plugins/desktop/OpenSLX/Distro/Base.pm
+++ /dev/null
@@ -1,432 +0,0 @@
-# Copyright (c) 2008 - OpenSLX GmbH
-#
-# This program is free software distributed under the GPL version 2.
-# See http://openslx.org/COPYING
-#
-# If you have any feedback please consult http://openslx.org/feedback and
-# send your suggestions, praise, or complaints to feedback@openslx.org
-#
-# General information about OpenSLX can be found at http://openslx.org/
-# -----------------------------------------------------------------------------
-# desktop/OpenSLX/Distro/Base.pm
-# - provides base implementation of the Distro API for the desktop plugin.
-# -----------------------------------------------------------------------------
-package desktop::OpenSLX::Distro::Base;
-
-use strict;
-use warnings;
-
-our $VERSION = 1.01; # API-version . implementation-version
-
-use File::Basename;
-use Scalar::Util qw( weaken );
-
-use OpenSLX::Basics;
-use OpenSLX::Utils;
-
-################################################################################
-### interface methods
-################################################################################
-sub new
-{
- my $class = shift;
- my $self = {};
- return bless $self, $class;
-}
-
-sub initialize
-{
- my $self = shift;
- $self->{engine} = shift;
- weaken($self->{'engine'});
- # avoid circular reference between distro and its engine
-
- return 1;
-}
-
-sub getDefaultDesktopManager
-{
- my $self = shift;
-
- # the default implementation prefers KDM over GDM over XDM
- return $self->isKDMInstalled() ? 'kdm'
- : $self->isGDMInstalled() ? 'gdm'
- : $self->isXDMInstalled() ? 'xdm' : undef;
-}
-
-sub getDefaultDesktopKind
-{
- my $self = shift;
-
- # the default implementation prefers GNOME over KDE over XFCE
- return $self->isGNOMEInstalled() ? 'gnome'
- : $self->isKDEInstalled() ? 'kde'
- : $self->isXFCEInstalled() ? 'xfce' : undef;
-}
-
-sub isGNOMEInstalled
-{
- my $self = shift;
-
- return isInPath('gnome-session');
-}
-
-sub installGNOME
-{
- my $self = shift;
-
- $self->{engine}->installPackages(
- $self->{engine}->getInstallablePackagesForSelection('gnome')
- );
-
- return 1;
-}
-
-sub isGDMInstalled
-{
- my $self = shift;
-
- return isInPath('gdm');
-}
-
-sub installGDM
-{
- my $self = shift;
-
- $self->{engine}->installPackages('gdm');
-
- return 1;
-}
-
-sub GDMPathInfo
-{
- my $self = shift;
-
- my $pathInfo = {
- config => '/etc/gdm/gdm.conf',
- paths => [
- '/var/lib/gdm',
- '/var/log/gdm',
- ],
- };
-
- return $pathInfo;
-}
-
-sub setupGDMScript
-{
- my $self = shift;
- my $repoPath = shift;
-
- my $pathInfo = $self->GDMPathInfo();
- my $configFile = $pathInfo->{config};
-
- my $paths
- = join(
- ' ',
- map { '/mnt' . $_ } ( dirname($configFile), @{$pathInfo->{paths}} )
- );
- my $script = unshiftHereDoc(<<" End-of-Here");
- # written by OpenSLX-plugin 'desktop'
-
- for i in $paths; do
- testmkd \$i
- done
-
- cp /mnt$repoPath/gdm/\$desktop_mode/gdm.conf /mnt$configFile
-
- # activate theme only if the corresponding xml file is found
- # (otherwise fall back to default theme of vendor-OS)
- if [ -n "\$desktop_theme" ]; then
- thdir=/opt/openslx/plugin-repo/desktop/themes/gdm
- theme=\$desktop_theme
- if [ -e /mnt\$thdir/\$theme/*.xml ]; then
- sed -i "s,\\[greeter\\],[greeter]\\nGraphicalThemedColor=," \\
- /mnt$configFile
- sed -i "s,\\[greeter\\],[greeter]\\nGraphicalThemeDir=\$thdir," \\
- /mnt$configFile
- sed -i "s,\\[greeter\\],[greeter]\\nGraphicalTheme=\$theme," \\
- /mnt$configFile
- fi
- fi
- case "\${desktop_allowshutdown}" in
- none)
- ;;
- root)
- sed "s|AllowShutdown.*|AllowShutdown=true|;\\
- s|SecureShutdown.*|SecureShutdown=true|" \\
- -i /mnt$configFile
- ;;
- users)
- sed "s|AllowShutdown.*|AllowShutdown=true|;\\
- s|SecureShutdown.*|SecureShutdown=false|" \\
- -i /mnt$configFile
- ;;
- esac
- [ "\${desktop_rootlogin}" -ne 0 ] && \\
- sed "s|AllowRoot.*|AllowRoot=true|" -i /mnt$configFile
- End-of-Here
-
- return $script;
-}
-
-sub GDMConfigHashForWorkstation
-{
- my $self = shift;
-
- return {
- 'chooser' => {
- },
- 'daemon' => {
- AutomaticLoginEnable => 'false',
- Group => 'gdm',
- User => 'gdm',
- DefaultSession => 'default.desktop',
- },
- 'debug' => {
- Enable => 'false',
- },
- 'greeter' => {
- AllowShutdown => 'false',
- Browser => 'false',
- MinimalUID => '500',
- SecureShutdown => 'false',
- ShowDomain => 'false',
- DefaultWelcome => 'false',
- Welcome => 'OpenSLX Workstation (%n)',
- },
- 'gui' => {
- },
- 'security' => {
- AllowRoot => 'false',
- AllowRemoteRoot => 'false',
- DisallowTCP => 'true',
- SupportAutomount => 'true',
- },
- 'server' => {
- },
- 'xdmcp' => {
- Enable => 'false',
- },
- };
-}
-
-sub GDMConfigHashForKiosk
-{
- my $self = shift;
-
- my $configHash = $self->GDMConfigHashForWorkstation();
- $configHash->{daemon}->{AutomaticLoginEnable} = 'true';
- $configHash->{daemon}->{AutomaticLogin} = 'nobody';
-
- return $configHash;
-}
-
-sub GDMConfigHashForChooser
-{
- my $self = shift;
-
- my $configHash = $self->GDMConfigHashForWorkstation();
- $configHash->{xdmcp}->{Enable} = 'true';
-
- return $configHash;
-}
-
-sub isKDEInstalled
-{
- my $self = shift;
-
- return isInPath('startkde');
-}
-
-sub installKDE
-{
- my $self = shift;
-
- $self->{engine}->installPackages(
- $self->{engine}->getInstallablePackagesForSelection('kde')
- );
-
- return 1;
-}
-
-sub isKDMInstalled
-{
- my $self = shift;
-
- return isInPath('kdm');
-}
-
-sub installKDM
-{
- my $self = shift;
-
- $self->{engine}->installPackages('kdm');
-
- return 1;
-}
-
-sub KDMPathInfo
-{
- my $self = shift;
-
- my $pathInfo = {
- config => '/etc/opt/kdm/kdmrc',
- paths => [
- '/var/lib/kdm',
- ],
- };
-
- return $pathInfo;
-}
-
-sub setupKDMScript
-{
- my $self = shift;
- my $repoPath = shift;
-
- my $pathInfo = $self->KDMPathInfo();
- my $configFile = $pathInfo->{config};
-
- my $paths
- = join(
- ' ',
- map { '/mnt' . $_ } ( dirname($configFile), @{$pathInfo->{paths}} )
- );
- my $script = unshiftHereDoc(<<" End-of-Here");
- #!/bin/sh
- # written by OpenSLX-plugin 'desktop'
-
- for i in $paths; do
- testmkd \$i
- done
-
- cp /mnt$repoPath/kdm/\$desktop_mode/kdmrc /mnt$configFile
-
- # activate theme only if the corresponding xml file is found
- # (otherwise fall back to default theme of vendor-OS)
- if [ -n "\$desktop_theme" ]; then
- theme=\$desktop_theme
- thdir=/opt/openslx/plugin-repo/desktop/themes/kdm/\$theme
- if [ -e /mnt\$thdir/*.xml ]; then
- sed -i "s,\\[X-\\*-Greeter\\],[X-*-Greeter]\\nUseBackground=false," \\
- /mnt$configFile
- sed -i "s,\\[X-\\*-Greeter\\],[X-*-Greeter]\\nTheme=\$thdir," \\
- /mnt$configFile
- sed -i "s,\\[X-\\*-Greeter\\],[X-*-Greeter]\\nUseTheme=true," \\
- /mnt$configFile
- fi
- fi
- case "\${desktop_allowshutdown}" in
- none)
- sed "s|AllowShutdown.*|AllowShutdown=None|" \\
- -i /mnt$configFile
- ;;
- root)
- sed "s|AllowShutdown.*|AllowShutdown=Root|" \\
- -i /mnt$configFile
- ;;
- users)
- sed "s|AllowShutdown.*|AllowShutdown=All|" \\
- -i /mnt$configFile
- ;;
- esac
- [ "\${desktop_rootlogin}" -ne 0 ] && \\
- sed "s|AllowRootLogin.*|AllowRootLogin=true|" -i /mnt$configFile
- End-of-Here
-
- return $script;
-}
-
-sub KDMConfigHashForWorkstation
-{
- my $self = shift;
-
- return {
-# 'General' => {
-# StaticServers => ':0',
-# ReserveServers => ':1,:2,:3',
-# ServerVTs => '-7',
-# ConsoleTTYs => 'tty1,tty2,tty3,tty4,tty5,tty6',
-# },
- 'X-:0-Core' => {
- AutoLoginEnable => 'false',
- AllowRootLogin => 'false',
- AllowShutdown => 'All',
- },
- 'X-*-Greeter' => {
- GreetString => 'OpenSLX Workstation (%h)',
- SelectedUsers => '',
- UserList => 'false',
- },
- 'X-:*-Greeter' => {
- AllowClose => 'false',
- UseAdminSession => 'true',
- },
- 'X-:0-Greeter' => {
- LogSource => '/dev/xconsole',
- UseAdminSession => 'false',
- PreselectUser => 'None',
- },
- 'xdmcp' => {
- Enable => 'false',
- },
- };
-}
-
-sub KDMConfigHashForKiosk
-{
- my $self = shift;
-
- my $configHash = $self->KDMConfigHashForWorkstation();
- $configHash->{'X-:0-Core'}->{AutoLoginEnable} = 'true';
- $configHash->{'X-:0-Core'}->{AutoLoginUser} = 'nobody';
-
- return $configHash;
-}
-
-sub KDMConfigHashForChooser
-{
- my $self = shift;
-
- my $configHash = $self->KDMConfigHashForWorkstation();
- $configHash->{xdmcp}->{Enable} = 'true';
-
- return $configHash;
-}
-
-sub isXFCEInstalled
-{
- my $self = shift;
-
- return isInPath('startxfce4');
-}
-
-sub installXFCE
-{
- my $self = shift;
-
- $self->{engine}->installPackages(
- $self->{engine}->getInstallablePackagesForSelection('xfce')
- );
-
- return 1;
-}
-
-sub isXDMInstalled
-{
- my $self = shift;
-
- return isInPath('xdm');
-}
-
-sub installXDM
-{
- my $self = shift;
-
- $self->{engine}->installPackages('xdm');
-
- return 1;
-}
-
-1;
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Debian.pm
deleted file mode 100644
index c212b3ef..00000000
--- a/os-plugins/plugins/desktop/OpenSLX/Distro/Debian.pm
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright (c) 2006..2009 - OpenSLX GmbH
-#
-# This program is free software distributed under the GPL version 2.
-# See http://openslx.org/COPYING
-#
-# If you have any feedback please consult http://openslx.org/feedback and
-# send your suggestions, praise, or complaints to feedback@openslx.org
-#
-# General information about OpenSLX can be found at http://openslx.org/
-# -----------------------------------------------------------------------------
-# desktop/OpenSLX/Distro/Debian.pm
-# - provides Debian-specific overrides of the Distro API for the desktop
-# plugin.
-# -----------------------------------------------------------------------------
-package desktop::OpenSLX::Distro::Debian;
-
-use strict;
-use warnings;
-
-use base qw(desktop::OpenSLX::Distro::Base);
-
-use OpenSLX::Basics;
-use OpenSLX::Utils;
-
-################################################################################
-### interface methods
-################################################################################
-
-sub setupGDMScript
-{
- my $self = shift;
- my $repoPath = shift;
-
- my $script = $self->SUPER::setupGDMScript($repoPath);
-
- $script .= unshiftHereDoc(<<' End-of-Here');
- rllinker gdm 1 1
- echo '/usr/bin/gdm' > /mnt/etc/X11/default-display-manager
- # gdm does not like AUFS/UnionFS on its var directory
- rm -rf /mnt/var/lib/gdm
- mkdir -m 1770 /mnt/var/lib/gdm
- chown root:gdm /mnt/var/lib/gdm
- End-of-Here
-
- return $script;
-}
-
-sub setupKDMScript
-{
- my $self = shift;
- my $repoPath = shift;
-
- my $script = $self->SUPER::setupKDMScript($repoPath);
-
- $script .= unshiftHereDoc(<<' End-of-Here');
- rllinker kdm 1 1
- echo '/usr/bin/kdm' > /mnt/etc/X11/default-display-manager
- End-of-Here
-
- return $script;
-}
-
-1;
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Fedora.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Fedora.pm
deleted file mode 100644
index f9428aab..00000000
--- a/os-plugins/plugins/desktop/OpenSLX/Distro/Fedora.pm
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (c) 2006, 2007 - OpenSLX GmbH
-#
-# This program is free software distributed under the GPL version 2.
-# See http://openslx.org/COPYING
-#
-# If you have any feedback please consult http://openslx.org/feedback and
-# send your suggestions, praise, or complaints to feedback@openslx.org
-#
-# General information about OpenSLX can be found at http://openslx.org/
-# -----------------------------------------------------------------------------
-# desktop/OpenSLX/Distro/Fedora.pm
-# - provides Fedora-specific overrides of the Distro API for the desktop
-# plugin.
-# -----------------------------------------------------------------------------
-package desktop::OpenSLX::Distro::Fedora;
-
-use strict;
-use warnings;
-
-use base qw(desktop::OpenSLX::Distro::Base);
-
-use OpenSLX::Basics;
-
-################################################################################
-### interface methods
-################################################################################
-
-# TODO: implement!
-
-1; \ No newline at end of file
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Gentoo.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Gentoo.pm
deleted file mode 100644
index 129f4d08..00000000
--- a/os-plugins/plugins/desktop/OpenSLX/Distro/Gentoo.pm
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (c) 2006, 2007 - OpenSLX GmbH
-#
-# This program is free software distributed under the GPL version 2.
-# See http://openslx.org/COPYING
-#
-# If you have any feedback please consult http://openslx.org/feedback and
-# send your suggestions, praise, or complaints to feedback@openslx.org
-#
-# General information about OpenSLX can be found at http://openslx.org/
-# -----------------------------------------------------------------------------
-# desktop/OpenSLX/Distro/Gentoo.pm
-# - provides Gentoo-specific overrides of the Distro API for the desktop
-# plugin.
-# -----------------------------------------------------------------------------
-package desktop::OpenSLX::Distro::Gentoo;
-
-use strict;
-use warnings;
-
-use base qw(desktop::OpenSLX::Distro::Base);
-
-use OpenSLX::Basics;
-
-################################################################################
-### interface methods
-################################################################################
-
-# TODO: implement!
-
-1;
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm
deleted file mode 100644
index 1dc0482c..00000000
--- a/os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm
+++ /dev/null
@@ -1,132 +0,0 @@
-# Copyright (c) 2006..2009 - OpenSLX GmbH
-#
-# This program is free software distributed under the GPL version 2.
-# See http://openslx.org/COPYING
-#
-# If you have any feedback please consult http://openslx.org/feedback and
-# send your suggestions, praise, or complaints to feedback@openslx.org
-#
-# General information about OpenSLX can be found at http://openslx.org/
-# -----------------------------------------------------------------------------
-# desktop/OpenSLX/Distro/Scilin.pm
-# - provides Scilin-specific overrides of the Distro API for the desktop
-# plugin.
-# -----------------------------------------------------------------------------
-package desktop::OpenSLX::Distro::Scilin;
-
-use strict;
-use warnings;
-
-use base qw(desktop::OpenSLX::Distro::Base);
-
-use File::Path;
-
-use OpenSLX::Basics;
-use OpenSLX::Utils;
-
-################################################################################
-### interface methods
-################################################################################
-
-sub GDMPathInfo
-{
- my $self = shift;
-
- my $pathInfo = $self->SUPER::GDMPathInfo();
-
- # create gdm.conf-custom instead of gdm.conf
- $pathInfo->{config} = '/etc/gdm/custom.conf';
-
- return $pathInfo;
-}
-
-sub setupGDMScript
-{
- my $self = shift;
- my $repoPath = shift;
-
- my $script = $self->SUPER::setupGDMScript($repoPath);
-
- my $configFile = $self->GDMPathInfo->{config};
-
- # include common stuff (independent of display manager used)
- $script = _setupCommonDmScript($script);
-
- $script .= unshiftHereDoc(<<' End-of-Here');
- echo "DISPLAYMANAGER=GNOME" \
- >/mnt/etc/sysconfig/desktop
- # gdm does not like AUFS/UnionFS on its var directory
- mkdir -m 1770 /mnt/var/lib/gdm
- chown root:gdm /mnt/var/lib/gdm
- End-of-Here
-
- return $script;
-}
-
-sub GDMConfigHashForWorkstation
-{
- my $self = shift;
-
- my $configHash = $self->SUPER::GDMConfigHashForWorkstation();
- $configHash->{'daemon'}->{SessionDesktopDir} =
- '/etc/X11/session/:/usr/share/xsessions/:/usr/share/gdm/BuiltInSessions';
- $configHash->{'daemon'}->{Greeter} =
- '/usr/libexec/gdmgreeter';
-
- return $configHash;
-}
-
-sub setupKDMScript
-{
- my $self = shift;
- my $repoPath = shift;
-
- # SUSE reads /var/adm/kdm/kdmrc.sysconfig, so we link that to
- # our config file
- my $pathInfo = $self->KDMPathInfo();
- my $configFile = $pathInfo->{config};
- mkpath("/etc/opt/kdm");
- mkpath("/var/adm/kdm");
- # maybe backup kdmrc.sysconfig sometimes
- unlink("/var/adm/kdm/kdmrc.sysconfig");
- # the config file gets overwritten if this script is present
- unlink("/opt/kde3/share/apps/kdm/read_sysconfig.sh");
- symlink("/etc/opt/kdm/kdmrc", "/var/adm/kdm/kdmrc.sysconfig");
-
- my $script = $self->SUPER::setupKDMScript($repoPath);
-
- # include common stuff (independent of display manager used)
- $script = _setupCommonDmScript($script);
-
- $script .= unshiftHereDoc(<<' End-of-Here');
- echo "DISPLAYMANAGER=KDE" \
- >/mnt/etc/sysconfig/desktop
- End-of-Here
-
- return $script;
-}
-
-sub _setupCommonDmScript
-{
- my $script = shift;
-
- $script .= unshiftHereDoc(<<' End-of-Here');
- # cleanup after users Xorg session
- sed 's,^#!.*,,' /mnt/etc/X11/xdm/Xreset \
- > /mnt/etc/X11/xdm/Xreset.system
- echo -e '#!/bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n
- # remove safely any remaining files of the leaving user in /tmp
- ( su -c "rm -rf /tmp/*" - $USER
- echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null ) &
- . /etc/X11/xdm/Xreset.system' >/mnt/etc/X11/xdm/Xreset
- chmod a+x /mnt/etc/X11/xdm/Xreset*
-
- # enable the inittab entry again (incomplete)
- # sed -e "s,# line deleted.*,x:5:respawn:/etc/X11/prefdm -nodaemon," \
- # -i /mnt/etc/inittab
- End-of-Here
-
- return $script;
-}
-
-1;
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm
deleted file mode 100644
index 433ed7e1..00000000
--- a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm
+++ /dev/null
@@ -1,162 +0,0 @@
-# Copyright (c) 2006..2010 - OpenSLX GmbH
-#
-# This program is free software distributed under the GPL version 2.
-# See http://openslx.org/COPYING
-#
-# If you have any feedback please consult http://openslx.org/feedback and
-# send your suggestions, praise, or complaints to feedback@openslx.org
-#
-# General information about OpenSLX can be found at http://openslx.org/
-# -----------------------------------------------------------------------------
-# desktop/OpenSLX/Distro/Suse.pm
-# - provides SUSE-specific overrides of the Distro API for the desktop
-# plugin.
-# -----------------------------------------------------------------------------
-package desktop::OpenSLX::Distro::Suse;
-
-use strict;
-use warnings;
-
-use base qw(desktop::OpenSLX::Distro::Base);
-
-use File::Path;
-
-use OpenSLX::Basics;
-use OpenSLX::Utils;
-
-################################################################################
-### interface methods
-################################################################################
-
-sub GDMPathInfo
-{
- my $self = shift;
-
- my $pathInfo = $self->SUPER::GDMPathInfo();
-
- # create gdm.conf-custom instead of gdm.conf
- $pathInfo->{config} = '/etc/gdm/custom.conf';
-
- return $pathInfo;
-}
-
-sub setupGDMScript
-{
- my $self = shift;
- my $repoPath = shift;
-
- my $script = $self->SUPER::setupGDMScript($repoPath);
-
- my $configFile = $self->GDMPathInfo->{config};
-
- # include common stuff (independent of display manager used)
- $script = _setupCommonDmScript($script);
-
- $script .= unshiftHereDoc(<<' End-of-Here');
- echo -e '# changed by $0 during stage3 setup\nDISPLAYMANAGER="gdm"' \
- >/mnt/etc/sysconfig/displaymanager
- sed -i "s/DEFAULT_WM=.*/DEFAULT_WM=\"$desktop_kind\"/" \
- /mnt/etc/sysconfig/windowmanager
- #sed "s|XSESSION|/etc/xdm/Xsession|" -i /mnt$configFile
- # gdm does not like AUFS/UnionFS on its var directory
- rm -rf /mnt/var/lib/gdm
- mkdir -m 1770 /mnt/var/lib/gdm
- chown root:gdm /mnt/var/lib/gdm
- # no use for this configuration info file
- rm /mnt/etc/gdm/gdm_sysconfig.* 2>/dev/null
- End-of-Here
-
- return $script;
-}
-
-sub GDMConfigHashForWorkstation
-{
- my $self = shift;
-
- my $configHash = $self->SUPER::GDMConfigHashForWorkstation();
- $configHash->{'daemon'}->{SessionDesktopDir} =
- '/etc/X11/session/:/usr/share/xsessions/';
- $configHash->{'daemon'}->{DefaultSession} = 'default.desktop';
- $configHash->{'daemon'}->{Greeter} =
- '/usr/lib/gdm/gdmgreeter';
-
- return $configHash;
-}
-
-sub setupKDMScript
-{
- my $self = shift;
- my $repoPath = shift;
-
- # check for kdm version
- my $kdmVer;
- my $kdmPath;
- if (-e "/usr/bin/kdm") {
- $kdmVer = "4";
- $kdmPath = "/usr/share/kde4";
- }
- else {
- $kdmVer = "";
- $kdmPath = "/opt/kde3/share";
- # change default theme to openslx-legacy if kdm3
- print " * Please change to openslx-legacy theme when using kdm3\n";
- }
-
- # SUSE reads /var/adm/kdm/kdmrc.sysconfig, so we link that to
- # our config file
- my $pathInfo = $self->KDMPathInfo();
- my $configFile = $pathInfo->{config};
- mkpath("/etc/opt/kdm");
- mkpath("/var/adm/kdm");
- # maybe backup kdmrc.sysconfig sometimes
- unlink("/var/adm/kdm/kdmrc.sysconfig");
- # the config file gets overwritten if this script is present
- unlink("$kdmPath/apps/kdm/read_sysconfig.sh");
- symlink("/etc/opt/kdm/kdmrc", "/var/adm/kdm/kdmrc.sysconfig");
-
- my $script = $self->SUPER::setupKDMScript($repoPath);
-
- # include common stuff (independent of display manager used)
- $script = _setupCommonDmScript($script);
-
- $script .= "kdmver=$kdmVer\n";
- $script .= unshiftHereDoc(<<' End-of-Here');
- sed -i "s/DISPLAYMANAGER=.*/DISPLAYMANAGER=\"kdm$kdmver\"/" \
- /mnt/etc/sysconfig/displaymanager
- [ $(grep -q DISPLAYMANAGER /mnt/etc/sysconfig/displaymanager) ] && \
- echo "DISPLAYMANAGER=\"kdm$kdmver\"" >>/mnt/etc/sysconfig/displaymanager
- sed -i "s/DEFAULT_WM=.*/DEFAULT_WM=\"$desktop_kind\"/" \
- /mnt/etc/sysconfig/windowmanager
- # needed for compatibility X11/session(s)
- ln -s /etc/X11/session /mnt/etc/X11/sessions
- End-of-Here
-
- return $script;
-}
-
-sub _setupCommonDmScript
-{
- my $script = shift;
-
- $script .= unshiftHereDoc(<<' End-of-Here');
- rllinker xdm 1 10
- # cleanup after users Xorg session
- sed 's,^#!.*,,' /mnt/etc/X11/xdm/Xreset \
- > /mnt/etc/X11/xdm/Xreset.system
- echo -e '#!/bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n
- # avoid annoying messages on removed sound devices
- ( su -c "rm ~/.kde4/share/config/phonondevicesrc" - $USER ) &
-
- # remove safely any remaining files of the leaving user in /tmp
- ( su -c "rm -rf /tmp/*" - $USER
- echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null
- chmod 0400 /tmp/files.removed ) &
- . /etc/X11/xdm/Xreset.system' >/mnt/etc/X11/xdm/Xreset
- chmod a+x /mnt/etc/X11/xdm/Xreset*
-
- End-of-Here
-
- return $script;
-}
-
-1;
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm
deleted file mode 100644
index ac14b2a5..00000000
--- a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (c) 2006..2010 - OpenSLX GmbH
-#
-# This program is free software distributed under the GPL version 2.
-# See http://openslx.org/COPYING
-#
-# If you have any feedback please consult http://openslx.org/feedback and
-# send your suggestions, praise, or complaints to feedback@openslx.org
-#
-# General information about OpenSLX can be found at http://openslx.org/
-# -----------------------------------------------------------------------------
-# desktop/OpenSLX/Distro/Suse_10_2.pm
-# - provides SUSE-10.2-specific overrides of the Distro API for the desktop
-# plugin.
-# -----------------------------------------------------------------------------
-package desktop::OpenSLX::Distro::Suse_10_2;
-
-use strict;
-use warnings;
-
-use base qw(desktop::OpenSLX::Distro::Suse);
-
-use OpenSLX::Basics;
-use OpenSLX::Utils;
-
-################################################################################
-### interface methods
-################################################################################
-
-sub GDMPathInfo
-{
- my $self = shift;
-
- my $pathInfo = $self->SUPER::GDMPathInfo();
-
- # link gdm.conf-custom instead of gdm.conf
- $pathInfo->{config} = '/etc/opt/gnome/gdm/custom.conf';
-
- return $pathInfo;
-}
-
-sub GDMConfigHashForWorkstation
-{
- my $self = shift;
-
- my $configHash = $self->SUPER::GDMConfigHashForWorkstation();
- $configHash->{'daemon'}->{SessionDesktopDir} =
- '/etc/X11/session/:/usr/share/xsessions/';
- $configHash->{'daemon'}->{Greeter} =
- '/opt/gnome/lib/gdm/gdmgreeter';
-
- return $configHash;
-}
-
-1;
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm
deleted file mode 100644
index d222c102..00000000
--- a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm
+++ /dev/null
@@ -1,169 +0,0 @@
-# Copyright (c) 2006..2010 - OpenSLX GmbH
-#
-# This program is free software distributed under the GPL version 2.
-# See http://openslx.org/COPYING
-#
-# If you have any feedback please consult http://openslx.org/feedback and
-# send your suggestions, praise, or complaints to feedback@openslx.org
-#
-# General information about OpenSLX can be found at http://openslx.org/
-# -----------------------------------------------------------------------------
-# desktop/OpenSLX/Distro/Ubuntu.pm
-# - provides Ubuntu-specific overrides of the distro API for the desktop
-# plugin.
-# -----------------------------------------------------------------------------
-package desktop::OpenSLX::Distro::Ubuntu;
-
-use strict;
-use warnings;
-
-use base qw(desktop::OpenSLX::Distro::Base);
-
-use OpenSLX::Basics;
-use OpenSLX::Utils;
-
-################################################################################
-### interface methods
-################################################################################
-
-sub GDMPathInfo
-{
- my $self = shift;
-
- my $pathInfo = $self->SUPER::GDMPathInfo();
-
- # link gdm.conf-custom instead of gdm.conf
- $pathInfo->{config} = '/etc/gdm/custom.conf';
-
- return $pathInfo;
-}
-
-sub setupGDMScript
-{
- my $self = shift;
- my $repoPath = shift;
-
- my $script = $self->SUPER::setupGDMScript($repoPath);
-
- my $configFile = $self->GDMPathInfo->{config};
-
- $script .= unshiftHereDoc(<<' End-of-Here');
- # cleanup after users Xorg session
- sed 's,^#!.*,,' /mnt/etc/gdm/PostSession/Default \
- >/mnt/etc/gdm/PostSession/Default.system
- echo -e '#! /bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n
- # remove safely any remaining files of the leaving user in /tmp
- ( su -c "rm -rf /tmp/*"
- echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null ) &
- . /etc/gdm/PostSession/Default.system' >/mnt/etc/gdm/PostSession/Default
- chmod a+x /mnt/etc/gdm/PostSession/Default*
- # gdm should be started via upstart mechanism
- mv /mnt/etc/init.inactive/gdm.conf /mnt/etc/init
- echo '/usr/sbin/gdm' >/mnt/etc/X11/default-display-manager
- # possible to do this directly?
- chroot /mnt update-alternatives --set x-window-manager /usr/bin/metacity
- chroot /mnt update-alternatives --set x-session-manager \
- /usr/bin/gnome-session
- # gdm does not like AUFS/UnionFS on its var directory
- rm -rf /mnt/var/lib/gdm
- mkdir -m 1770 /mnt/var/lib/gdm
- chown root:gdm /mnt/var/lib/gdm
- #sed '/^\\[daemon\\]/ a\\BaseXsession=/etc/gdm/Xsession' \
- # -i /mnt$configFile
- End-of-Here
-
- return $script;
-}
-
-sub KDMPathInfo
-{
- my $self = shift;
-
- my $pathInfo = $self->SUPER::KDMPathInfo();
-
- $pathInfo = {
- config => "/etc/kde4/kdm/kdmrc",
- paths => [
- '/var/lib/kdm',
- '/var/run/kdm',
- ],
- };
-
- return $pathInfo;
-}
-
-sub GDMConfigHashForWorkstation
-{
- my $self = shift;
-
- return {
- 'chooser' => {
- Multicast => 'false',
- },
- 'daemon' => {
- AutomaticLoginEnable => 'false',
- Group => 'gdm',
- User => 'gdm',
- DefaultSession => 'default.desktop',
- },
- 'security' => {
- DisallowTCP => 'true',
- },
- 'xdmcp' => {
- Enable => 'false',
- },
- };
-}
-
-sub KDMConfigHashForWorkstation
-{
- my $self = shift;
-
- my $kdmVer = "4";
- my $configHash = $self->SUPER::KDMConfigHashForWorkstation();
- $configHash->{'General'}->{PidFile} = "/var/run/kdm.pid";
- $configHash->{'General'}->{ServerVTs} = "-7";
- $configHash->{'X-:0-Core'}->{Setup} = "/etc/kde$kdmVer/kdm/Xsetup";
- $configHash->{'X-:0-Core'}->{Startup} = "/etc/kde$kdmVer/kdm/Xstartup";
- $configHash->{'X-:0-Core'}->{Session} = "/etc/kde$kdmVer/kdm/Xsession";
- $configHash->{'X-:0-Core'}->{Reset} = "/etc/kde$kdmVer/kdm/Xreset";
- $configHash->{'X-:0-Core'}->{SessionsDirs} =
- '/etc/X11/session,/usr/share/xsessions,/usr/share/apps/kdm/sessions';
- $configHash->{'X-:0-Core'}->{ServerAttempts} = "2";
-
- return $configHash;
-}
-
-sub setupKDMScript
-{
- my $self = shift;
- my $repoPath = shift;
-
- my $kdmVer = "4";
- my $script = $self->SUPER::setupKDMScript($repoPath);
-
- $script .= "kdmver=$kdmVer\n";
- $script .= unshiftHereDoc(<<' End-of-Here');
-
- # cleanup after users Xorg session
- sed 's,^#!.*,,' /mnt/etc/kde$kdmver/kdm/Xreset \
- >/mnt/etc/kde$kdmver/kdm/Xreset.system
- echo -e '#! /bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n
- # remove safely any remaining files of the leaving user in /tmp
- ( su -c "rm -rf /tmp/*" - $USER
- echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null
- chmod 0400 /tmp/files.removed ) &
- . /etc/kde$kdmver/kdm/Xreset.system' >/mnt/etc/kde$kdmver/kdm/Xreset
- chmod a+x /mnt/etc/kde$kdmver/kdm/Xreset*
-
- mv /mnt/etc/init.inactive/kdm.conf /mnt/etc/init
- echo '/usr/bin/kdm' > /mnt/etc/X11/default-display-manager
- chroot /mnt update-alternatives --set x-window-manager /usr/bin/kwin
- chroot /mnt update-alternatives --set x-session-manager \
- /usr/bin/startkde
- End-of-Here
-
- return $script;
-}
-
-1;
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm
deleted file mode 100644
index 6f00f181..00000000
--- a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm
+++ /dev/null
@@ -1,161 +0,0 @@
-# Copyright (c) 2006..2010 - OpenSLX GmbH
-#
-# This program is free software distributed under the GPL version 2.
-# See http://openslx.org/COPYING
-#
-# If you have any feedback please consult http://openslx.org/feedback and
-# send your suggestions, praise, or complaints to feedback@openslx.org
-#
-# General information about OpenSLX can be found at http://openslx.org/
-# -----------------------------------------------------------------------------
-# desktop/OpenSLX/Distro/Ubuntu_8.pm
-# - provides Ubuntu-specific overrides of the distro API for the desktop
-# plugin.
-# -----------------------------------------------------------------------------
-package desktop::OpenSLX::Distro::Ubuntu_8;
-
-use strict;
-use warnings;
-
-use base qw(desktop::OpenSLX::Distro::Base);
-
-use OpenSLX::Basics;
-use OpenSLX::Utils;
-
-################################################################################
-### interface methods
-################################################################################
-
-sub GDMPathInfo
-{
- my $self = shift;
-
- my $pathInfo = $self->SUPER::GDMPathInfo();
-
- # link gdm.conf-custom instead of gdm.conf
- $pathInfo->{config} = '/etc/gdm/gdm.conf-custom';
-
- return $pathInfo;
-}
-
-sub setupGDMScript
-{
- my $self = shift;
- my $repoPath = shift;
-
- my $script = $self->SUPER::setupGDMScript($repoPath);
-
- my $configFile = $self->GDMPathInfo->{config};
-
- $script .= unshiftHereDoc(<<' End-of-Here');
- # cleanup after users Xorg session
- sed 's,^#!.*,,' /mnt/etc/gdm/PostSession/Default \
- >/mnt/etc/gdm/PostSession/Default.system
- echo -e '#! /bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n
- # remove safely any remaining files of the leaving user in /tmp
- ( su -c "rm -rf /tmp/*"
- echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null ) &
- . /etc/gdm/PostSession/Default.system' >/mnt/etc/gdm/PostSession/Default
- chmod a+x /mnt/etc/gdm/PostSession/Default*
- # gdm should be started after dbus/hal
- rllinker gdm 5 10
- echo '/usr/sbin/gdm' >/mnt/etc/X11/default-display-manager
- chroot /mnt update-alternatives --set x-window-manager /usr/bin/metacity
- chroot /mnt update-alternatives --set x-session-manager \
- /usr/bin/gnome-session
- # gdm does not like AUFS/UnionFS on its var directory
- rm -rf /mnt/var/lib/gdm
- mkdir -m 1770 /mnt/var/lib/gdm
- chown root:gdm /mnt/var/lib/gdm
- sed '/^\\[daemon\\]/ a\\BaseXsession=/etc/gdm/Xsession' \
- -i /mnt$configFile
- End-of-Here
-
- return $script;
-}
-
-sub KDMPathInfo
-{
- my $self = shift;
-
- my $pathInfo = $self->SUPER::KDMPathInfo();
- my $kdmVer = "3";
-
- $pathInfo = {
- config => "/etc/kde$kdmVer/kdm/kdmrc",
- paths => [
- '/var/lib/kdm',
- '/var/run/kdm',
- ],
- };
-
- return $pathInfo;
-}
-
-sub GDMConfigHashForWorkstation
-{
- my $self = shift;
-
- my $configHash = $self->SUPER::GDMConfigHashForWorkstation();
- $configHash->{'daemon'}->{SessionDesktopDir} =
- '/etc/X11/session/:/usr/share/xsessions/:/usr/share/gdm/BuiltInSessions/';
-
- return $configHash;
-}
-
-sub KDMConfigHashForWorkstation
-{
- my $self = shift;
-
- my $kdmVer = "4";
- my $configHash = $self->SUPER::KDMConfigHashForWorkstation();
- $configHash->{'General'}->{PidFile} = "/var/run/kdm.pid";
- $configHash->{'X-:0-Core'}->{Setup} = "/etc/kde$kdmVer/kdm/Xsetup";
- $configHash->{'X-:0-Core'}->{Startup} = "/etc/kde$kdmVer/kdm/Xstartup";
- $configHash->{'X-:0-Core'}->{Session} = "/etc/kde$kdmVer/kdm/Xsession";
- $configHash->{'X-:0-Core'}->{Reset} = "/etc/kde$kdmVer/kdm/Xreset";
- $configHash->{'X-:0-Core'}->{SessionsDirs} =
- '/etc/X11/session,/usr/share/xsessions,/usr/share/apps/kdm/sessions';
- $configHash->{'X-:0-Core'}->{ServerAttempts} = "2";
-
- return $configHash;
-}
-
-sub setupKDMScript
-{
- my $self = shift;
- my $repoPath = shift;
-
- my $kdmVer = "4";
- my $script = $self->SUPER::setupKDMScript($repoPath);
-
- # change default theme to openslx-legacy if kdm3
- if ( $kdmVer == "3" ) {
- print " * Please change to openslx-legacy theme when using kdm3\n";
- }
-
- $script .= "kdmver=$kdmVer\n";
- $script .= unshiftHereDoc(<<' End-of-Here');
-
- # cleanup after users Xorg session
- sed 's,^#!.*,,' /mnt/etc/kde$kdmver/kdm/Xreset \
- >/mnt/etc/kde$kdmver/kdm/Xreset.system
- echo -e '#! /bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n
- # remove safely any remaining files of the leaving user in /tmp
- ( su -c "rm -rf /tmp/*" - $USER
- echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null
- chmod 0400 /tmp/files.removed ) &
- . /etc/kde$kdmver/kdm/Xreset.system' >/mnt/etc/kde$kdmver/kdm/Xreset
- chmod a+x /mnt/etc/kde$kdmver/kdm/Xreset*
-
- rllinker kdm 1 10
- echo '/usr/bin/kdm' > /mnt/etc/X11/default-display-manager
- chroot /mnt update-alternatives --set x-window-manager /usr/bin/kwin
- chroot /mnt update-alternatives --set x-session-manager \
- /usr/bin/startkde
- End-of-Here
-
- return $script;
-}
-
-1;
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_9_04.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_9_04.pm
deleted file mode 100644
index 1022d6e8..00000000
--- a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_9_04.pm
+++ /dev/null
@@ -1,161 +0,0 @@
-# Copyright (c) 2006..2010 - OpenSLX GmbH
-#
-# This program is free software distributed under the GPL version 2.
-# See http://openslx.org/COPYING
-#
-# If you have any feedback please consult http://openslx.org/feedback and
-# send your suggestions, praise, or complaints to feedback@openslx.org
-#
-# General information about OpenSLX can be found at http://openslx.org/
-# -----------------------------------------------------------------------------
-# desktop/OpenSLX/Distro/Ubuntu_9_04.pm
-# - provides Ubuntu-specific overrides of the distro API for the desktop
-# plugin.
-# -----------------------------------------------------------------------------
-package desktop::OpenSLX::Distro::Ubuntu_9_04;
-
-use strict;
-use warnings;
-
-use base qw(desktop::OpenSLX::Distro::Base);
-
-use OpenSLX::Basics;
-use OpenSLX::Utils;
-
-################################################################################
-### interface methods
-################################################################################
-
-sub GDMPathInfo
-{
- my $self = shift;
-
- my $pathInfo = $self->SUPER::GDMPathInfo();
-
- # link gdm.conf-custom instead of gdm.conf
- $pathInfo->{config} = '/etc/gdm/gdm.conf-custom';
-
- return $pathInfo;
-}
-
-sub setupGDMScript
-{
- my $self = shift;
- my $repoPath = shift;
-
- my $script = $self->SUPER::setupGDMScript($repoPath);
-
- my $configFile = $self->GDMPathInfo->{config};
-
- $script .= unshiftHereDoc(<<' End-of-Here');
- # cleanup after users Xorg session
- sed 's,^#!.*,,' /mnt/etc/gdm/PostSession/Default \
- >/mnt/etc/gdm/PostSession/Default.system
- echo -e '#! /bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n
- # remove safely any remaining files of the leaving user in /tmp
- ( su -c "rm -rf /tmp/*"
- echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null ) &
- . /etc/gdm/PostSession/Default.system' >/mnt/etc/gdm/PostSession/Default
- chmod a+x /mnt/etc/gdm/PostSession/Default*
- # gdm should be started after dbus/hal
- rllinker gdm 5 10
- echo '/usr/sbin/gdm' >/mnt/etc/X11/default-display-manager
- chroot /mnt update-alternatives --set x-window-manager /usr/bin/metacity
- chroot /mnt update-alternatives --set x-session-manager \
- /usr/bin/gnome-session
- # gdm does not like AUFS/UnionFS on its var directory
- rm -rf /mnt/var/lib/gdm
- mkdir -m 1770 /mnt/var/lib/gdm
- chown root:gdm /mnt/var/lib/gdm
- sed '/^\\[daemon\\]/ a\\BaseXsession=/etc/gdm/Xsession' \
- -i /mnt$configFile
- End-of-Here
-
- return $script;
-}
-
-sub KDMPathInfo
-{
- my $self = shift;
-
- my $pathInfo = $self->SUPER::KDMPathInfo();
- my $kdmVer = "4";
-
- $pathInfo = {
- config => "/etc/kde$kdmVer/kdm/kdmrc",
- paths => [
- '/var/lib/kdm',
- '/var/run/kdm',
- ],
- };
-
- return $pathInfo;
-}
-
-sub GDMConfigHashForWorkstation
-{
- my $self = shift;
-
- my $configHash = $self->SUPER::GDMConfigHashForWorkstation();
- $configHash->{'daemon'}->{SessionDesktopDir} =
- '/etc/X11/session/:/usr/share/xsessions/:/usr/share/gdm/BuiltInSessions/';
-
- return $configHash;
-}
-
-sub KDMConfigHashForWorkstation
-{
- my $self = shift;
-
- my $kdmVer = "4";
- my $configHash = $self->SUPER::KDMConfigHashForWorkstation();
- $configHash->{'General'}->{PidFile} = "/var/run/kdm.pid";
- $configHash->{'X-:0-Core'}->{Setup} = "/etc/kde$kdmVer/kdm/Xsetup";
- $configHash->{'X-:0-Core'}->{Startup} = "/etc/kde$kdmVer/kdm/Xstartup";
- $configHash->{'X-:0-Core'}->{Session} = "/etc/kde$kdmVer/kdm/Xsession";
- $configHash->{'X-:0-Core'}->{Reset} = "/etc/kde$kdmVer/kdm/Xreset";
- $configHash->{'X-:0-Core'}->{SessionsDirs} =
- '/etc/X11/session,/usr/share/xsessions,/usr/share/apps/kdm/sessions';
- $configHash->{'X-:0-Core'}->{ServerAttempts} = "2";
-
- return $configHash;
-}
-
-sub setupKDMScript
-{
- my $self = shift;
- my $repoPath = shift;
-
- my $kdmVer = "4";
- my $script = $self->SUPER::setupKDMScript($repoPath);
-
- # change default theme to openslx-legacy if kdm3
- if ( $kdmVer == "3" ) {
- print " * Please change to openslx-legacy theme when using kdm3\n";
- }
-
- $script .= "kdmver=$kdmVer\n";
- $script .= unshiftHereDoc(<<' End-of-Here');
-
- # cleanup after users Xorg session
- sed 's,^#!.*,,' /mnt/etc/kde$kdmver/kdm/Xreset \
- >/mnt/etc/kde$kdmver/kdm/Xreset.system
- echo -e '#! /bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n
- # remove safely any remaining files of the leaving user in /tmp
- ( su -c "rm -rf /tmp/*" - $USER
- echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null
- chmod 0400 /tmp/files.removed ) &
- . /etc/kde$kdmver/kdm/Xreset.system' >/mnt/etc/kde$kdmver/kdm/Xreset
- chmod a+x /mnt/etc/kde$kdmver/kdm/Xreset*
-
- rllinker kdm 1 10
- echo '/usr/bin/kdm' > /mnt/etc/X11/default-display-manager
- chroot /mnt update-alternatives --set x-window-manager /usr/bin/kwin
- chroot /mnt update-alternatives --set x-session-manager \
- /usr/bin/startkde
- End-of-Here
-
- return $script;
-}
-
-1;
diff --git a/os-plugins/plugins/desktop/OpenSLX/OSPlugin/desktop.pm b/os-plugins/plugins/desktop/OpenSLX/OSPlugin/desktop.pm
deleted file mode 100644
index 7d496483..00000000
--- a/os-plugins/plugins/desktop/OpenSLX/OSPlugin/desktop.pm
+++ /dev/null
@@ -1,712 +0,0 @@
-# Copyright (c) 2008..2010 - OpenSLX GmbH
-#
-# This program is free software distributed under the GPL version 2.
-# See http://openslx.org/COPYING
-#
-# If you have any feedback please consult http://openslx.org/feedback and
-# send your suggestions, praise, or complaints to feedback@openslx.org
-#
-# General information about OpenSLX can be found at http://openslx.org/
-# -----------------------------------------------------------------------------
-# desktop.pm
-# - implementation of the 'desktop' plugin, which installs
-# all needed information for a displaymanager and for the desktop.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSPlugin::desktop;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSPlugin::Base);
-
-use File::Basename;
-use File::Path;
-
-use OpenSLX::Basics;
-use OpenSLX::Utils;
-
-sub new
-{
- my $class = shift;
-
- my $self = {
- name => 'desktop',
- };
-
- my $localGDMThemesDir
- = "$openslxConfig{'config-path'}/plugins/desktop/themes/gdm";
- mkpath($localGDMThemesDir) unless -e $localGDMThemesDir;
- my $localKDMThemesDir
- = "$openslxConfig{'config-path'}/plugins/desktop/themes/kdm";
- mkpath($localKDMThemesDir) unless -e $localKDMThemesDir;
-
- return bless $self, $class;
-}
-
-sub getInfo
-{
- my $self = shift;
-
- return {
- description => unshiftHereDoc(<<' End-of-Here'),
- Sets a desktop and creates needed configs, theme can be set as well.
- End-of-Here
- precedence => 40,
- # not really required e.g. for modern autoconfiguring systems like Ubuntu
- # 10.04
- # required => [ qw( xserver ) ],
- };
-}
-
-sub getAttrInfo
-{
- my $self = shift;
-
- return {
- # stage3
- 'desktop::active' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- should the 'desktop'-plugin be executed during boot?
- End-of-Here
- content_regex => qr{^(0|1)$},
- content_descr => '1 means active - 0 means inactive',
- default => '1',
- },
- 'desktop::kind' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- which desktop environment shall be used: gnome, kde, or xfce?
- End-of-Here
- content_regex => qr{^(gnome|kde|xfce)$},
- content_descr => '"gnome", "kde" or "xfce"',
- default => undef,
- },
- 'desktop::manager' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- which display manager to start: gdm, kdm or xdm?
- End-of-Here
- content_regex => qr{^(gdm|kdm|xdm)$},
- content_descr => '"gdm", "kdm" or "xdm"',
- default => undef,
- },
- 'desktop::mode' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- which type of operation mode shall be activated:
- workstattion, kiosk or chooser?
- End-of-Here
- content_regex => qr{^(workstation|kiosk|chooser)$},
- content_descr => '"workstation", "kiosk" or "chooser"',
- default => 'workstation',
- },
- 'desktop::theme' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- name of the theme to apply to the desktop (unset for no theme)
- End-of-Here
- content_descr => 'one of the entries in "supported_themes"',
- default => 'openslx',
- },
- 'desktop::allowshutdown' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- allow shutdown of the SLX client via gdm/kdm. "none" disables
- this functionality, "root" allows only the sysadmin and
- "users" means free4all.
- End-of-Here
- content_regex => qr{^(none|root|users)$},
- content_descr => 'possible entries "none", "root" or "users"',
- default => 'users',
- },
- 'desktop::rootlogin' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- allow the system administrator to logon to the graphical
- user interface (1 allow, 0 disallow).
- End-of-Here
- content_descr => '1 means allowed - 0 means forbidden',
- content_regex => qr{^(0|1)$},
- default => '1',
- },
- # kiosk mode just has the option to logon user nobody
- #'desktop::auto-login' => {
- # applies_to_systems => 1,
- # applies_to_clients => 1,
- # description => unshiftHereDoc(<<' End-of-Here'),
- # set an arbitrary user which is logged in automatically into
- # the graphical user interface (none disables, default).
- # End-of-Here
- # content_descr => 'none disables - <user> logins in that userid',
- # default => 'none',
- #},
-
- # stage1
- 'desktop::gdm' => {
- applies_to_vendor_os => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- should gdm be available (installed in vendor-OS)?
- End-of-Here
- content_regex => qr{^0|1$},
- content_descr => '"0", "1" or "-" (for unset)',
- default => undef,
- },
- 'desktop::gnome' => {
- applies_to_vendor_os => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- should gnome be available (installed in vendor-OS)?
- End-of-Here
- content_regex => qr{^0|1$},
- content_descr => '"0", "1" or "-" (for unset)',
- default => undef,
- },
- 'desktop::kde' => {
- applies_to_vendor_os => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- should kde be available (installed in vendor-OS)?
- End-of-Here
- content_regex => qr{^0|1$},
- content_descr => '"0", "1" or "-" (for unset)',
- default => undef,
- },
- 'desktop::kdm' => {
- applies_to_vendor_os => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- should kdm be available (installed in vendor-OS)?
- End-of-Here
- content_regex => qr{^0|1$},
- content_descr => '"0", "1" or "-" (for unset)',
- default => undef,
- },
- 'desktop::supported_themes' => {
- applies_to_vendor_os => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- name of all themes that shall be installed in vendor-OS (such
- that they can be selected via 'desktop::theme' in stage 3).
- End-of-Here
- content_descr => 'a comma-separated list of theme names',
- default => undef,
- },
- 'desktop::xdm' => {
- applies_to_vendor_os => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- should xdm be available (installed in vendor-OS)?
- End-of-Here
- content_regex => qr{^0|1$},
- content_descr => '"0", "1" or "-" (for unset)',
- default => undef,
- },
- 'desktop::xfce' => {
- applies_to_vendor_os => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- should xfce be available (installed in vendor-OS)?
- End-of-Here
- content_regex => qr{^0|1$},
- content_descr => '"0", "1" or "-" (for unset)',
- default => undef,
- },
- };
-}
-
-sub getDefaultAttrsForVendorOS
-{
- my $self = shift;
- my $vendorOSName = shift;
-
- my $attrs = $self->getAttrInfo();
-
- if ($vendorOSName =~ m{kde}) {
- $attrs->{'desktop::manager'}->{default} = 'kdm';
- $attrs->{'desktop::kind'}->{default} = 'kde';
- }
- elsif ($vendorOSName =~ m{gnome}) {
- $attrs->{'desktop::manager'}->{default} = 'gdm';
- $attrs->{'desktop::kind'}->{default} = 'gnome';
- }
- elsif ($vendorOSName =~ m{xfce}) {
- $attrs->{'desktop::manager'}->{default} = 'xdm';
- $attrs->{'desktop::kind'}->{default} = 'xcfe';
- }
- else {
- $attrs->{'desktop::manager'}->{default}
- = $self->{distro}->getDefaultDesktopManager();
- $attrs->{'desktop::kind'}->{default}
- = $self->{distro}->getDefaultDesktopKind();
- }
- return $attrs;
-}
-
-sub checkStage3AttrValues
-{
- my $self = shift;
- my $stage3Attrs = shift;
- my $vendorOSAttrs = shift;
-
- my @problems;
-
- my $manager = $stage3Attrs->{'desktop::manager'} || '';
- if ($manager eq 'kdm') {
- if (!defined $vendorOSAttrs->{'desktop::kdm'}
- || $vendorOSAttrs->{'desktop::kdm'} == 1) {
- if (!$self->{distro}->isKDMInstalled()) {
- push @problems, _tr(
- "KDM is not installed in vendor-OS, so using it as desktop manager wouldn't work!"
- );
- }
- }
- elsif ($vendorOSAttrs->{'desktop::kdm'} == 0) {
- push @problems, _tr(
- "desktop::kdm is 0, so using KDM as desktop manager is not allowed for this vendor-OS!"
- );
- }
- }
- elsif ($manager eq 'gdm') {
- if (!defined $vendorOSAttrs->{'desktop::gdm'}
- || $vendorOSAttrs->{'desktop::gdm'} == 1) {
- if (!$self->{distro}->isGDMInstalled()) {
- push @problems, _tr(
- "GDM is not installed in vendor-OS, so using it as desktop manager wouldn't work!"
- );
- }
- }
- elsif ($vendorOSAttrs->{'desktop::gdm'} == 0) {
- push @problems, _tr(
- "desktop::gdm is 0, so using GDM as desktop manager is not allowed for this vendor-OS!"
- );
- }
- }
- elsif ($manager eq 'xdm') {
- if (!defined $vendorOSAttrs->{'desktop::xdm'}
- || $vendorOSAttrs->{'desktop::xdm'} == 1) {
- if (!$self->{distro}->isXDMInstalled()) {
- push @problems, _tr(
- "XDM is not installed in vendor-OS, so using it as desktop manager wouldn't work!"
- );
- }
- }
- elsif ($vendorOSAttrs->{'desktop::xdm'} == 0) {
- push @problems, _tr(
- "desktop::xdm is 0, so using XDM as desktop manager is not allowed for this vendor-OS!"
- );
- }
- }
-
- my $kind = $stage3Attrs->{'desktop::kind'} || '';
- if ($kind eq 'kde') {
- if (!defined $vendorOSAttrs->{'desktop::kde'}
- || $vendorOSAttrs->{'desktop::kde'} == 1) {
- if (!$self->{distro}->isKDEInstalled()) {
- push @problems, _tr(
- "KDE is not installed in vendor-OS, so using it as desktop kind wouldn't work!"
- );
- }
- }
- elsif ($vendorOSAttrs->{'desktop::kde'} == 0) {
- push @problems, _tr(
- "desktop::kde is 0, so using KDE as desktop kind is not allowed for this vendor-OS!"
- );
- }
- }
- elsif ($kind eq 'gnome') {
- if (!defined $vendorOSAttrs->{'desktop::gnome'}
- || $vendorOSAttrs->{'desktop::gnome'} == 1) {
- if (!$self->{distro}->isGNOMEInstalled()) {
- push @problems, _tr(
- "GNOME is not installed in vendor-OS, so using it as desktop kind wouldn't work!"
- );
- }
- }
- elsif ($vendorOSAttrs->{'desktop::gnome'} == 0) {
- push @problems, _tr(
- "desktop::gnome is 0, so using GNOME as desktop kind is not allowed for this vendor-OS!"
- );
- }
- }
- elsif ($kind eq 'xfce') {
- if (!defined $vendorOSAttrs->{'desktop::xfce'}
- || $vendorOSAttrs->{'desktop::xfce'} == 1) {
- if (!$self->{distro}->isXFCEInstalled()) {
- push @problems, _tr(
- "XFCE is not installed in vendor-OS, so using it as desktop kind wouldn't work!"
- );
- }
- }
- elsif ($vendorOSAttrs->{'desktop::xfce'} == 0) {
- push @problems, _tr(
- "desktop::xfce is 0, so using XFCE as desktop kind is not allowed for this vendor-OS!"
- );
- }
- }
-
- my @supportedThemes
- = split ',', $vendorOSAttrs->{'desktop::supported_themes'} || '';
- my $theme = $stage3Attrs->{'desktop::theme'};
- if (defined $theme && !grep { $_ eq $theme } @supportedThemes) {
- push @problems, _tr(
- "desktop::theme '%s' does not refer to a supported theme!\nSupported themes are: %s",
- $theme, $vendorOSAttrs->{'desktop::supported_themes'} || ''
- );
- }
-
- return if !@problems;
-
- return \@problems;
-}
-
-sub installationPhase
-{
- my $self = shift;
- my $info = shift;
-
- $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'};
- $self->{pluginTempPath} = $info->{'plugin-temp-path'};
- $self->{openslxBasePath} = $info->{'openslx-base-path'};
- $self->{openslxConfigPath} = $info->{'openslx-config-path'};
- $self->{attrs} = $info->{'plugin-attrs'};
-
- # We are going to change some of the stage1 attributes during installation
- # (basically we are filling the ones that are not defined). Since the result
- # of these changes might change between invocations, we do not want to store
- # the resulting values, but we want to store the original (undef).
- # In order to do so, we copy all stage1 attributes directly into the
- # object hash and change them there.
- $self->{gdm} = $self->{attrs}->{'desktop::gdm'};
- $self->{kdm} = $self->{attrs}->{'desktop::kdm'};
- $self->{xdm} = $self->{attrs}->{'desktop::xdm'};
- $self->{gnome} = $self->{attrs}->{'desktop::gnome'};
- $self->{kde} = $self->{attrs}->{'desktop::kde'};
- $self->{xcfe} = $self->{attrs}->{'desktop::xfce'};
- $self->{supported_themes} = $self->{attrs}->{'desktop::supported_themes'};
-
- $self->_installRequiredPackages();
- $self->_fillUnsetStage1Attrs();
- $self->_ensureSensibleStage3Attrs();
-
- # start to actually do something - according to current stage1 attributes
- if ($self->{gdm}) {
- $self->_setupGDM();
- }
- if ($self->{kdm}) {
- $self->_setupKDM();
- }
- if ($self->{xdm}) {
- $self->_setupXDM();
- }
- $self->_setupSupportedThemes();
-
- return;
-}
-
-sub removalPhase
-{
- my $self = shift;
- my $info = shift;
-
- return;
-}
-
-sub copyRequiredFilesIntoInitramfs
-{
- my $self = shift;
- my $targetPath = shift;
- my $attrs = shift;
- my $makeInitRamFSEngine = shift;
-
- my $desktopTheme = $attrs->{'desktop::theme'} || '<none>';
-
- vlog(1, _tr("desktop-plugin: desktop=%s", $desktopTheme));
-
- return;
-}
-
-sub _installRequiredPackages
-{
- my $self = shift;
-
- my $engine = $self->{'os-plugin-engine'};
-
- if ($self->{'gnome'} && !$self->{distro}->isGNOMEInstalled()) {
- $self->{distro}->installGNOME();
- }
- if ($self->{'gdm'} && !$self->{distro}->isGDMInstalled()) {
- $self->{distro}->installGDM();
- }
- if ($self->{'kde'} && !$self->{distro}->isKDEInstalled()) {
- $self->{distro}->installKDE();
- }
- if ($self->{'kdm'} && !$self->{distro}->isKDMInstalled()) {
- $self->{distro}->installKDM();
- }
- if ($self->{'xfce'} && !$self->{distro}->isXFCEInstalled()) {
- $self->{distro}->installXFCE();
- }
- if ($self->{'xdm'} && !$self->{distro}->isXDMInstalled()) {
- $self->{distro}->installXDM();
- }
-
- return 1;
-}
-
-sub _fillUnsetStage1Attrs
-{
- my $self = shift;
-
- if (!defined $self->{'gnome'}) {
- $self->{'gnome'} = $self->{distro}->isGNOMEInstalled();
- }
- if (!defined $self->{'gdm'}) {
- $self->{'gdm'} = $self->{distro}->isGDMInstalled();
- }
- if (!defined $self->{'kde'}) {
- $self->{'kde'} = $self->{distro}->isKDEInstalled();
- }
- if (!defined $self->{'kdm'}) {
- $self->{'kdm'} = $self->{distro}->isKDMInstalled();
- }
- if (!defined $self->{'xfce'}) {
- $self->{'xfce'} = $self->{distro}->isXFCEInstalled();
- }
- if (!defined $self->{'xdm'}) {
- $self->{'xdm'} = $self->{distro}->isXDMInstalled();
- }
- if (!defined $self->{'supported_themes'}) {
- $self->{attrs}->{'desktop::supported_themes'}
- = $self->{'supported_themes'}
- = join ",", $self->_getAvailableThemes();
- }
-
- return 1;
-}
-
-sub _ensureSensibleStage3Attrs
-{
- my $self = shift;
-
- # check if current desktop kind is enabled at all and select another
- # one, if it isn't
- my $kind = $self->{attrs}->{'desktop::kind'} || '';
- if (!$self->{$kind}) {
- my @desktops = map { $self->{$_} ? $_ : () } qw( gnome kde xfce );
- if (!@desktops) {
- die _tr(
- "no desktop kind is possible, plugin 'desktop' wouldn't work!"
- );
- }
- vlog(0, _tr("selecting %s as desktop kind\n", $desktops[0]));
- $self->{attrs}->{'desktop::kind'} = $desktops[0];
- }
-
- # check if current desktop manager is enabled at all and select another
- # one, if it isn't
- my $manager = $self->{attrs}->{'desktop::manager'} || '';
- if (!$self->{$manager}) {
- my @managers = map { $self->{$_} ? $_ : () } qw( kdm gdm xdm );
- if (!@managers) {
- die _tr(
- "no desktop manager is possible, plugin 'desktop' wouldn't work!"
- );
- }
- vlog(0, _tr("selecting %s as desktop manager\n", $managers[0]));
- $self->{attrs}->{'desktop::manager'} = $managers[0];
- }
-
- # check if current theme is supported at all and select another one, if it
- # isn't
- my $theme = $self->{attrs}->{'desktop::theme'} || '';
- my @supportedThemes = split ",", $self->{'supported_themes'} || '';
- if (!grep { $_ eq $theme } @supportedThemes) {
- if (!@supportedThemes) {
- vlog( 0, _tr("no themes are supported, using no theme!"));
- $self->{attrs}->{'desktop::theme'} = undef;
- }
- else {
- vlog(0, _tr("selecting %s as theme\n", $supportedThemes[0]));
- $self->{attrs}->{'desktop::theme'} = $supportedThemes[0];
- }
- }
-
- return 1;
-}
-
-sub _setupGDM
-{
- my $self = shift;
-
- my $repoPath = $self->{pluginRepositoryPath};
- mkpath([
- "$repoPath/gdm/workstation",
- "$repoPath/gdm/kiosk",
- "$repoPath/gdm/chooser",
- ]);
-
- $self->_setupGDMScript();
-
- my $configHash = $self->{distro}->GDMConfigHashForWorkstation();
- $self->_writeConfigHash($configHash, "$repoPath/gdm/workstation/gdm.conf");
-
- $configHash = $self->{distro}->GDMConfigHashForKiosk();
- $self->_writeConfigHash($configHash, "$repoPath/gdm/kiosk/gdm.conf");
-
- $configHash = $self->{distro}->GDMConfigHashForChooser();
- $self->_writeConfigHash($configHash, "$repoPath/gdm/chooser/gdm.conf");
-
- return;
-}
-
-sub _setupGDMScript
-{
- my $self = shift;
-
- my $repoPath = $self->{pluginRepositoryPath};
- my $script = $self->{distro}->setupGDMScript($repoPath);
-
- spitFile("$repoPath/gdm/desktop.sh", $script);
-
- return;
-}
-
-sub _setupKDM
-{
- my $self = shift;
-
- my $repoPath = $self->{pluginRepositoryPath};
- mkpath([
- "$repoPath/kdm/workstation",
- "$repoPath/kdm/kiosk",
- "$repoPath/kdm/chooser",
- ]);
-
- $self->_setupKDMScript();
-
- my $configHash = $self->{distro}->KDMConfigHashForWorkstation();
- $self->_writeConfigHash($configHash, "$repoPath/kdm/workstation/kdmrc");
-
- $configHash = $self->{distro}->KDMConfigHashForKiosk();
- $self->_writeConfigHash($configHash, "$repoPath/kdm/kiosk/kdmrc");
-
- $configHash = $self->{distro}->KDMConfigHashForChooser();
- $self->_writeConfigHash($configHash, "$repoPath/kdm/chooser/kdmrc");
-
- return;
-}
-
-sub _setupKDMScript
-{
- my $self = shift;
-
- my $repoPath = $self->{pluginRepositoryPath};
- my $script = $self->{distro}->setupKDMScript($repoPath);
-
- spitFile("$repoPath/kdm/desktop.sh", $script);
-
- return;
-}
-
-sub _setupXDM
-{
- my $self = shift;
-}
-
-sub _writeConfigHash
-{
- my $self = shift;
- my $hash = shift || {};
- my $file = shift;
-
- my $content = '';
- for my $domain (sort keys %$hash) {
- $content .= "[$domain]\n";
- for my $key (sort keys %{$hash->{$domain}}) {
- my $value
- = defined $hash->{$domain}->{$key}
- ? $hash->{$domain}->{$key}
- : '';
- $content .= "$key=$value\n";
- }
- $content .= "\n";
- }
- spitFile($file, $content);
-
- return;
-}
-
-sub _setupSupportedThemes
-{
- my $self = shift;
-
- my $supportedThemes = $self->{attrs}->{'desktop::supported_themes'} || '';
- my @supportedThemes = split m{\s*,\s*}, $supportedThemes;
- return if !@supportedThemes;
-
- # Every theme is copied from the folder where it is found first, such that
- # themes in the config folder will be preferred to a theme with the same
- # name living in the base folder
- my @themeBaseDirs = (
- "$self->{openslxConfigPath}/plugins/desktop/themes",
- "$self->{openslxBasePath}/lib/plugins/desktop/themes",
- );
- THEME:
- for my $theme (@supportedThemes) {
- THEME_DIR:
- foreach my $themeBaseDir (@themeBaseDirs) {
- my $gdmThemeDir = "$themeBaseDir/gdm/$theme";
- my $kdmThemeDir = "$themeBaseDir/kdm/$theme";
- next THEME_DIR if !-d $gdmThemeDir && !-d $kdmThemeDir;
- # any of both dirs is enough
-
- # copy theme into plugin-repo folder
- vlog(1, "installing theme '$theme'...");
- my $gdmThemeTargetPath = "$self->{pluginRepositoryPath}/themes/gdm";
- mkpath($gdmThemeTargetPath);
- slxsystem(
- "cp -a $gdmThemeDir $gdmThemeTargetPath/$theme 2>/dev/null"
- ) == 0
- or die _tr('unable to copy GDM-theme %s (%s)', $theme, $!);
- my $kdmThemeTargetPath = "$self->{pluginRepositoryPath}/themes/kdm";
- mkpath($kdmThemeTargetPath);
- slxsystem(
- "cp -a $kdmThemeDir $kdmThemeTargetPath/$theme 2>/dev/null"
- ) == 0
- or die _tr('unable to copy KDM-theme %s (%s)', $theme, $!);
- next THEME;
- }
- warn _tr('theme "%s" not found - skipped!', $theme);
- }
-
- return;
-}
-
-sub _getAvailableThemes
-{
- my $self = shift;
-
- my %availableThemes;
-
- # return all themes found in any of these two folders
- my @themeBaseDirs = (
- "$self->{openslxConfigPath}/plugins/desktop/themes",
- "$self->{openslxBasePath}/lib/plugins/desktop/themes",
- );
- for my $themeBaseDir (@themeBaseDirs) {
- my @foundGDMThemes
- = map { basename $_ } grep { -d $_ } glob("$themeBaseDir/gdm/*");
- @availableThemes{@foundGDMThemes} = ();
- my @foundKDMThemes
- = map { basename $_ } grep { -d $_ } glob("$themeBaseDir/kdm/*");
- @availableThemes{@foundKDMThemes} = ();
- }
-
- vlog(1, _tr("available themes: %s", join ",", keys %availableThemes));
-
- return keys %availableThemes;
-}
-
-1;