diff options
Diffstat (limited to 'sbin/chksession')
-rw-r--r-- | sbin/chksession | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/sbin/chksession b/sbin/chksession deleted file mode 100644 index 37108a4..0000000 --- a/sbin/chksession +++ /dev/null @@ -1,131 +0,0 @@ -#!/usr/bin/perl -# (c) MandrakeSoft, Chmouel Boudjnah <chmouel@mandrakesoft.com> -# Copyright under GPL blah blah blah. -## you'll don't find much info here, see --help. - -my @lf; - -sub usage { - my $e = shift @_; - $0 =~ s|.*/||; - print { $e ? STDERR : STDOUT } << "EOF"; -Usage: $0 [OPTION]... - - -F --first: Print only first available entry. - -t, --test: Go in test mode. - -l, --list: List window-managers. - -f=FILE, --file=FILE: Specify an alternarte config files other - than /etc/X11/window-manager --x=ENTRY, --xsession=ENTRY: Product window-managers script of ENTRY. - -k, --kdm: Product window-managers list for kdm sessions. - -g, --gdm: Product window-managers script for gdm sessions. - -h, --help: Product this help. - -EOF - exit($e); -} - -sub parse_file { - my $f=shift @_; - open F, $f or die "Can't open $f\n"; - local $/ = ""; - while (<F>) { - $n = $1 if /^NAME=(.*)/m; - $e = $1 if /^EXEC=(.*)/m; - $d = $1 if /^DESC=(.*)/m; - $i = $1 if /^ICON=(.*)/m; - $s = $1 while /SCRIPT:(.*?)$/gs; chomp $s; - if (-x $e) { $script{$n} = $s; $exec{$n} = $e; $desc{$n} = $d; $icon{$n} = $i; push @lf, $n; } - } -} - -usage(1) - if @ARGV < 1; - -while ($ARGV[0] =~ /^--/ || $ARGV[0] =~ /^-/) { - $_ = shift; - if (/^--xsession=([^ ]+)/ || /^-x=([^ ]+)/) { - $xsession = $1; - } elsif (/^--first/ || /^-F/) { - $first++; - } elsif (/^--gdm/ || /^-g/) { - die "You should be root to build gdm session\n" if $< != 0; - $gdm++; - } elsif (/^--list/ || /^-l/) { - $list++; - } elsif (/^--kdmsess/ || /^-k/) { - $kdm++; - } elsif (/^--test/ || /^-t/) { - $test++; - } elsif (/^--dir=([^ ]+)/ || /^-d=([^ ]+)/) { - $dir = $1; - } elsif (/^--help/ || /^-h/ || /^-\?/) { - usage(0); - } else { - print STDERR "Unrecognized switch: $_\n"; - usage(1); - } -} - -$dir = $test ? './wmsession.d/' : '/etc/X11/wmsession.d/' unless $dir; -chdir $dir; parse_file ("$dir/$_") for <*>; - -sub cat { my ($f) = @_; local *F; open F, $f; join '', <F> } -my ($e) = cat("/etc/sysconfig/desktop") =~ /(\S+)/; -@lf = sort { $b =~ /$e/i <=> $a =~ /$e/i } @lf; - -if ($kdm) { - $session="SessionTypes="; - for(@lf) { $session .= /$lf[-1]/ ? "$_,failsafe,default" : "$_," } - print "$session\n"; - exit(0); -} - - -if ($gdm) { - my $d = '/etc/X11/gdm/Sessions/'; - chdir $d; - - #Any better way ? - opendir D, $d or die "Can't open $d\n"; - for ( readdir(D)) { next if /^\.\.?/;next if /^Failsafe/; chmod 0644, $_; } - closedir D; - - for my $file (@lf) { - open FH, ">/etc/X11/gdm/Sessions/$file" or die "Can't write to /etc/X11/gdm/Sessions/$file\n"; - print FH "#!/bin/sh\n"; - print FH "exec /etc/X11/xdm/Xsession $file\n"; - close FH; - chmod 0755, $file; - } - unlink 'Default'; - symlink shift @lf, 'Default'; -} - -if ($xsession) { - if ($script{$xsession}) { - print "#!/bin/sh\n"; - print $script{$xsession} - } else { - print "xterm -geometry 100x25+0+0 &\n"; - if ( -x '/usr/X11R6/bin/icewm' ) { - print "icewm\n"; - } elsif ( -x '/usr/X11R6/bin/twm' ) { - print "twm\n"; - } else { - print "xterm -geometry 67x14+384+446\n"; - } - } - exit (0); -} - -@lf ? print shift @lf, "\n" : print "Default\n" - if $first; - -if ($list) { - if (@lf) { - my $p; for(@lf) { $p .= /$lf[-1]/ ? "$_ default failsafe" : "$_ " } print "$p\n"; - } else { - print "Default\n"; - } -} |