Hi all,
I got this problem sorted out. It had (of course) nothing to do with
Solaris but with wrong file permissions. Here is the long story:
************************************************************************
***************************************************
Note, I am installing as root for Etoile to be used by all users:
cd /usr/src
ls -l
total 104704
-rw-r--r-- 1 root root 53565440 Aug 3 09:01 etoile-0.2.tar
I didn' t see in the first place that these file permissions are
rather uncommon (never seen this before in any sources tar archive I
downloaded).
tar xvf etoile-0.2.tar
ls -l
total 104706
drwx--x--x 8 502 502 512 Jul 28 21:43 Etoile-0.2
-rw-r--r-- 1 root root 53565440 Aug 3 09:01 etoile-0.2.tar
ls -l Etoile-0.2/
-rw------- 1 502 502 2672 Jul 28 21:38 ANNOUNCE
drwx--x--x 3 502 502 512 Jul 28 19:18 Build
drwx--x--x 8 502 502 512 Jul 28 19:19 Bundles
-rw------- 1 502 502 16902 Jul 28 19:19 ChangeLog
drwx--x--x 19 502 502 512 Jul 28 19:18 Frameworks
-rw------- 1 502 502 1406 Jul 28 19:19 GNUmakefile
-rw------- 1 502 502 5800 Jul 28 19:19 INSTALL
-rw------- 1 502 502 1527 Jul 28 19:19 INSTALL.Ubuntu
drwx--x--x 4 502 502 512 Jul 28 19:19 Languages
-rw------- 1 502 502 2179 Jul 28 19:19 README
drwx--x--x 5 502 502 512 Jul 28 19:19 Services
-rw------- 1 502 502 9167 Jul 28 19:19 etoile.make
-rwx------ 1 502 502 6138 Jul 28 19:19 setdown.sh
-rwx------ 1 502 502 9819 Jul 28 19:19 setup.sh
Someone has a rather uncommon umask here. :-) This made some of the
files/resources of the installed stuff unreadable by a normal user.
NSApplication.m:
- (void) _init
{
...
initialize_gnustep_backend();
/* Load user-defined bundles */
gsapp_user_bundles();
/* Connect to our window server. */
srv = [GSDisplayServer serverWithAttributes: nil];
RETAIN(srv);
[GSDisplayServer setCurrentServer: srv];
...
}
[GSDisplayServer setCurrentServer: srv] was never called since
gsapp_user_bundles() raised an exception.
gsapp_user_bundles(void)
{
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
NSArray *array = [defs arrayForKey:@"GSAppKitUserBundles"];
int i, c = [array count];
if (array == nil || c == 0) return;
NSLog(@"Loading %d user defined AppKit bundles", c);
for (i = 0; i < c; i++)
{
NSString *path = [array objectAtIndex:i];
NSLog(@"Trying %@ ...", path);
NS_DURING
NSBundle *bundle = [NSBundle bundleWithPath:path];
if (bundle)
{
NSLog(@"Loading...");
[[[bundle principalClass] alloc] init]; // <----- Camaelon
raised an exception when accessing resources (unreadable by normal user)
NSLog(@"Loaded '%@'\n", path);
NSLog(@" ");
}
else NSLog(@"* Unable to load '%@'", path);
NS_HANDLER
NSLog(@"Warning (gsapp): %@", [localException reason]);
NS_ENDHANDLER
}
}
Some method in the process of loading the bundles
("/opt/GNUstep/System/Library/Bundles/Camaelon.themeEngine","/opt/
GNUstep/System/Library/Bundles/EtoileMenus.bundle","/opt/GNUstep/
System/Library/Bundles/EtoileBehavior.bundle")
called [NSScreen screens] which raised another exception since
GSCurrentServer() could not be set.
NSScreen.m
+ (NSArray *)screens
{
...
srv = GSCurrentServer();
screens = [srv screenList];
count = [screens count];
if (count == 0)
{
// something is wrong. This shouldn't happen.
[NSException raise: NSWindowServerCommunicationException format:
@"Unable to retrieve list of screens from window server."];
return nil;
}
...
}
and Etoile fun was over.
************************************************************************
***************************************************
My hints for installing Etoile on Solaris:
• Forget setup.sh and set things up manually (see below)
• Check file permissions; do chmod -R a+r to the Etoile source tree
after deflating Etoile-0.2.tar
• You need a bunch of fixes to the source tree to get Etoile-0.2
compiled under Solaris (too many for this mail). If anyone is
interested drop me a note.
• Etoile can't be installed with make, make install on a fresh system
due to many self-reflexive dependencies. Here is my list of commands
that more or less successfully gets stuff installed.
cd /usr/src/Etoile-0.2
cd ./Frameworks/OgreKit
make
make install
Temporär auskommentieren
pico ./Source/GNUmakefile
# FindPanel \
make
make install
cd ..
cd ..
cd ./Frameworks/PaneKit
make
make install
cd ..
cd ..
cd ./Frameworks/IconKit
make
make install
cd ..
cd ..
cd ./Frameworks/InspectorKit
make
make install
cd ..
cd ..
cd ./Services/User
make
make install
cd ..
cd ..
Temporär auskommentieren
pico GNUmakefile
#InspectorKit_SUBPROJECTS += Source
make
make install
cd ..
cd ..
pico
/usr/src/Etoile-0.2/Frameworks/AddressesKit/Frameworks/GNUmakefile
# Addresses \
cd ./Frameworks
make OBJCFLAGS="-Dtypeof=__typeof__"
make install
cd ..
make OBJCFLAGS="-Dtypeof=__typeof__"
make install
After installing Etoile-0.2 you probably want to install Yen-Ju's
latest fix to Azalea (broken arrow for edited documents). Thanks a lot
to Yen-Ju for this fix.
cd /usr/src
svn co
http://svn.gna.org/svn/etoile/trunk/Etoile/Services/Private/Azalea
cd Azalea
rm -rf /opt/GNUstep/System/Applications/Azalea.app
rm -rf /opt/GNUstep/Local/Applications/Azalea.app
make OBJCFLAGS="-Dtypeof=__typeof__"
make install
cd ..
As mentioned above I don't recommend to use setup. It at least did
nothing good to me and I was better off using the following list of
commands to set things up manually.
Settings defaults
We need to set some user defaults (for each user).
defaults write NSGlobalDomain GSAppKitUserBundles
'("/opt/GNUstep/System/Library/Bundles/Camaelon.themeEngine","/opt/
GNUstep/System/Library/Bundles/EtoileMenus.bundle","/opt/GNUstep/
System/Library/Bundles/EtoileBehavior.bundle")'
defaults write NSGlobalDomain NSUseRunningCopy YES
defaults write Camaelon Theme "Nesedah"
defaults write GWorkspace NoWarnOnQuit YES
defaults write NSGlobalDomain GSWorkspaceApplication "Finder.app"
defaults write NSGlobalDomain XWindowBufferUseXShm NO
Etoile startup script
We probably could use /opt/GNUstep/System/Tools/etoile_system directly.
But it can't hurt to have a wrapper script that sources GNUstep.sh
first.
pico /usr/local/bin/etoile
#!/bin/sh
. /opt/GNUstep/System/Library/Makefiles/GNUstep.sh
etoile_system
chmod a+x /usr/local/bin/etoile
Session management
Under Linux we setup a file /usr/share/xsessions/etoile.desktop with
the contents
[Desktop Entry]
Encoding=UTF-8
Name=Étoilé
Comment=Use this session to log in Étoilé environment
Comment[fr]=Utilisez cette session pour vous logguez dans
l'environnement Étoilé
Exec=/usr/local/bin/etoile
# No icon for now
Icon=
Type=Application
This file has no meaning under Solaris. We setup corresponding dlogin
files instead. To make Etoile/Azalea selectable in dtlogin create the
following files by duplicating the jds templates and modifying them
accordingly (--> file permissions).
cp -Ppr /usr/dt/config/C/Xresources.d/Xresources.jds
/usr/dt/config/C/Xresources.d/Xresources.aza
cp -Ppr /usr/dt/config/Xsession2.jds /usr/dt/config/Xsession.aza
cp -Ppr /usr/dt/config/Xinitrc.jds /usr/dt/config/Xinitrc.aza
ls /opt/GNUstep/System/Applications/Azalea.app/Azalea
ls /opt/GNUstep/System/Tools/etoile_system
ls /usr/local/bin/etoile
pico /usr/dt/config/C/Xresources.d/Xresources.aza
Dtlogin*altDtsIncrement: True
Dtlogin*altDtName: Etoile Desktop
Dtlogin*altDtKey: /usr/local/bin/etoile
Dtlogin*altDtStart: /usr/dt/config/Xsession.aza
Dtlogin*altDtLogo: JDS_s10
pico /usr/dt/config/Xsession.aza
#!/bin/ksh
#####################################################################
### File: Xsession2.jds Version 0.21 $Revision: 1.4 $
###
### Default Location: /usr/dt/config/Xsession2.jds
###
### Purpose: GNOME Desktop start script
###
### Invoked by: /usr/dt/bin/Xsession
###
#####################################################################
# First a little namespace cleanup of vars associated with this
# (and /usr/dt/bin/Xsession.ow) scripts.
unset SDT_ALT_SESSION
unset SDT_ALT_HELLO
unset SDT_NO_DSDM
XINITRC="/usr/dt/config/Xinitrc.aza"
if [ -x /usr/dt/bin/xmbind ]; then
/usr/dt/bin/xmbind
fi
echo 'GNOME Desktop Environment'
if [ -f $XINITRC ]; then
echo "using xinitrc file: $XINITRC"
/bin/ksh $XINITRC
else
echo "xinitrc file: $XINITRC not found"
fi
pico /usr/dt/config/Xinitrc.aza
#!/bin/ksh
#####################################################################
### File: Xinitrc.jds Version 0.23 $Revision: 1.19 $
###
### Default Location: /usr/dt/config/Xinitrc.jds
###
### Purpose: X session startup script
###
### Invoked by: /usr/dt/bin/Xsession
###
#####################################################################
if [ "x$LC_ALL" = x -a "x$LANG" = x -o "x$LANG" = xC ]; then
export LC_ALL="C"
export LC_CTYPE="C"
else
export LC_MESSAGES=$LANG
fi
export [EMAIL PROTECTED],UTF-8
export G_BROKEN_FILENAMES=yes
/usr/openwin/bin/xrdb -merge << EOF
! Default CDE resources
*WindowColor: #8A008A008A00
!*WindowForeground: #FF0000000000
!*DataBackground: #0000FF000000
*DataForeground: #FF0000000000
*WorkspaceColor: #8A008A008A00
*Color.Background: #FF000000FF00
!*Color.Foreground: #0000FF000000
*foreground: #000000000000
! Hack for Dtmail
*XmText*background: seashell
*XmTextField*background: seashell
*Message_List*background: seashell
*background: #AE00B200C300
Dthello*string: Welcome to the GNOME Desktop Environment
EOF
if [ -f $HOME/.Xdefaults ]; then
xrdb -merge $HOME/.Xdefaults # Load Users X11 resource
database
fi
echo "Starting GNOME"
#/opt/GNUstep/System/Tools/make_services
#openapp AZBackground.app &
#openapp EtoileMenuServer &
#openapp AZDock.app &
#openapp Finder.app &
#exec /opt/GNUstep/System/Applications/Azalea.app/Azalea
exec /usr/local/bin/etoile
SystemTaskList.plist
The file SystemTaskList.plist contains a dictionary with entries of
applications/tools (gpbs, gdnc, Azalea, EtoileMenuServer,...) that are
to be started when a user logs in. This file is read by the
etoile_system tool.
mkdir /opt/GNUstep/System/Library/Etoile
cd /usr/src/Etoile-0.2
cp ./Services/Private/System/SystemTaskList.plist
/opt/GNUstep/System/Library/Etoile
chmod a+r /opt/GNUstep/System/Library/Etoile/SystemTaskList.plist
pico /opt/GNUstep/System/Library/Etoile/SystemTaskList.plist
The Etoile system defines some keys (/etoilesystem/application/azalea,
/etoilesystem/tool/gpbs, /etoilesystem/application/menuserver,...) that
are associated with concrete value sin this dic, e.g.
/etoilesystem/application/menuserver -> EtoileMenuServer
/etoilesystem/application/dock -> AZDock
/etoilesystem/application/dock -> AZDock
/etoilesystem/application/background -> AZBackground
/etoilesystem/application/outerspace -> Finder
/etoilesystem/tool/make_services -> make_services
We probably should have this file in /home/<user>/Library/Etoile as
well.
cd
mkdir ./Library/Etoile
cp /opt/GNUstep/System/Library/Etoile/SystemTaskList.plist
./Library/Etoile
/opt/GNUstep/System/Library/Etoile/SystemTaskList.plist
pico ./Library/Etoile/SystemTaskList.plist
Installing fonts and themes
The Etoile fonts can be installed as follows.
mkdir /opt/GNUstep/System/Library/Fonts
cd /usr/src
wget http://download.gna.org/etoile/etoile-default-fonts.tar.gz
gunzip etoile-default-fonts.tar.gz
tar xvf etoile-default-fonts.tar
cp -R etoile-default-fonts/* /opt/GNUstep/System/Library/Fonts
rm -rf etoile-default-fonts
mkdir /opt/GNUstep/System/Library/Themes
cp -r
/opt/GNUstep/System/Library/Bundles/Camaelon.themeEngine/Resources/
Nesedah.theme /opt/GNUstep/System/Library/Themes
Hopefully this is of help to someone. Thanks to the Etoile team for
this great software. Logout is not working for me yet (still have to do
pkill etoile), but I suppose this is a minor issue and probably easy to
fix. In one of the versions I had tried out I saw tool tips popping up
on the screen (probably to tell me which application my mouse pointer
is hovering over). Unfortunately they never disappeared again. In my
current install they luckily do not popup. However, there is no way for
me to determine which icon in AZDock refers to which application. The
contextual menu has no title as it should according to Yen-Ju. :-( But
this is a rather minor issue. I am a happy user of Etoile now (time to
get rid of Window Maker) and strongly recommend everybody - that not
yet dared - to check it out. :-)
Regards,
Andreas
_______________________________________________
Etoile-discuss mailing list
[email protected]
https://mail.gna.org/listinfo/etoile-discuss