#!/usr/bin/perl
# $Id: wrapper 222393 2004-02-12 17:59:51Z tvignaud $

# Copyright (C) 1999-2002 MandrakeSoft
#                         Damien Krotkine
#                         Thierry Vignaud (tvignaud@mandrakesoft.com)
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

# The mcc wrapper goals are :
# - prevent bad gtk bugs if one launches it from the cli and suspends it
# - having less overhead for launching drakxconf if cli version must be used
#
# It's no more needed when using nptl on 2.6.x kernels

use lib qw(/usr/lib/libDrakX);
use common;

if (check_for_xserver()) {
    # Detect whether the current user uses a light or a dark theme.
    my $cmd = 'gdbus call --session --dest org.freedesktop.portal.Desktop --object-path /org/freedesktop/portal/desktop'
            . ' --method org.freedesktop.portal.Settings.ReadOne org.freedesktop.appearance color-scheme';
    my $fallback = 'gsettings get org.gnome.desktop.interface color-scheme';

    my $color_scheme;
    # Possible values: 0 / default, 1 / prefer-dark or 2 / prefer-light.
    $color_scheme = `$cmd` and chomp $color_scheme;
    $color_scheme ||= `$fallback` and chomp $color_scheme;
    $color_scheme = ($color_scheme =~ /uint32\s+1|prefer-dark/) ? 'dark' : 'default';

    system("/usr/bin/pkexec", "/usr/libexec/drakconf", "--color-scheme=$color_scheme", @ARGV);
} else {
    system("/usr/bin/pkexec", "/usr/libexec/drakxconf", @ARGV);
}
