aboutsummaryrefslogtreecommitdiffstats
path: root/trunk/sbin/chksession
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/sbin/chksession')
-rw-r--r--trunk/sbin/chksession160
1 files changed, 0 insertions, 160 deletions
diff --git a/trunk/sbin/chksession b/trunk/sbin/chksession
deleted file mode 100644
index 2d68860..0000000
--- a/trunk/sbin/chksession
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/usr/bin/perl
-# (c) Mandriva, Chmouel Boudjnah <chmouel@mandriva.com>
-# Copyright under GPL blah blah blah.
-## For info, see "chksession --help" or "man chksession"
-
-# Modified by Bernard Lang on August 21, 2003.
-
-
-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.
- -L: List window-managers including the order number
- -d=DIR, --dir=DIR: Specifies a directory of w-m configuration files.
- Default is /etc/X11/wmsession.d/
--x=ENTRY, --xsession=ENTRY: Produce window-managers script of ENTRY.
- -k, --kdm: Produce window-managers list for kdm sessions.
- -g, --gdm: Produce window-managers script for gdm sessions.
- -h, --help: Produce this help.
-
-EOF
- exit($e);
-}
-
-sub cat { # returns content of argument file as a single string
- my ($f) = @_;
- local *F;
- open F, $f or die "Can't open $f\n";
- local $/ = "";
- <F>
- }
-
-sub parse_file { # parse a session descriptor file
- my ($fn) = @_;
- $_ = cat ($fn);
- ($n = $1) =~ s| ||g 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; $exe{$n} = $e; push @lf, $n; ($order{$n}) = $fn =~ m/(^[0-9][0-9])/; }
-# if (-x $e) { $script{$n} = $s; $exec{$n} = $e; $desc{$n} = $d; $icon{$n} = $i; push @lf, $n; }
-}
-
-sub gen_desktops {
- my ($d, $usesession) = @_;
- -d $d or system("mkdir -p $d");
- system("rm -f $d/*");
-
- for my $file (@lf) {
- open FH, ">$d/$order{$file}$file.desktop" or die "Can't write to $d/$order{$file}.desktop\n";
- print FH "[Desktop Entry]\n";
- print FH "Encoding=UTF-8\n";
- print FH "Name=$file\n";
- print FH "Comment=$file\n";
- print FH "TryExec=$exe{$file}\n" if $exe{$file};
- if ($usesession) {
- print FH "Exec=/etc/X11/xdm/Xsession $file\n";
- } else {
- print FH "Exec=$file\n";
- }
- print FH "Icon=\n";
- print FH "Type=Application\n";
- close FH;
- chmod 0755, $file;
- }
-}
-
-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 (/^-L/) {
- $list_order++;
- } 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);
- }
-}
-
-# Parse all relevant files in session directory $dir
-$dir = $test ? './wmsession.d/' : '/etc/X11/wmsession.d/' unless $dir;
-chdir $dir;
-for (<*>) {
- next if /.*~/;
- next if /.*\.rpm(save|old)/;
- parse_file ("$_");
-}
-
-my ($e) = eval {cat("/etc/sysconfig/desktop")} =~ /DESKTOP=(\S+)/;
-# The first string (without spaces) in the file is copied to $e.
-
-# If $e is one of the names in @lf, then it is placed first (leftmost).
-# Order of names in @lf is otherwise unchanged.
-@lf = sort { $b =~ /^$e$/i <=> $a =~ /^$e$/i } @lf;
-
-
-if ($kdm) {
- gen_desktops('/usr/share/apps/kdm/sessions', 0);
-}
-
-if ($gdm) {
- gen_desktops('/etc/X11/dm/Sessions', 1);
-}
-
-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) {
- print join(' ', @lf, 'Default', 'failsafe'), "\n";
- } else {
- print "Default\n";
- }
-} elsif ($list_order) {
- print join(' ', map { "$_=$order{$_}" } @lf), "\n";
-}
-