#!/bin/sh
# -*- mode: shell-script; coding: utf-8 -*-
#
# elho-gnome-config
#
# Script to set some sane GNOME GConf settings
#
# Copyright (C) 2010-2012 Elmar Hoffmann
#
# 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 of the License, 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#

set -e

HOMEPAGE_ELHO='http://www.elho.net/'
HOMEPAGE_LUSER='http://www.google.com/'

. /lib/elho/shell-tools

usage ()
{
    echo "Usage: $(basename "$0") [--shared] [--luser]"
}

set +e
commandline=$(getopt --name "$(basename "$0"): Error" \
    --options='?h' --longoptions='help,usage,shared,luser' -- "$@")
if [ $? -ne 0 ]; then
        usage
        exit 2
    exit
fi
set -e
eval set -- "${commandline}"
shared=0
luser=0
while true; do
    case "$1" in
        -\?|-h|--help|--usage)
            usage
            exit
            ;;
        --shared)
            shared=1
            ;;
        --luser)
            luser=1
            ;;
        --)
            shift
            break
            ;;
        *)
            error "Invalid getopt(1) output."
            exit 1
            ;;
    esac
    shift
done
if [ $# -ne 0 ]; then
        usage
        exit 2
    exit
fi

if [ "${luser}" -eq 0 ]; then
    homepage="${HOMEPAGE_ELHO}"
else
    homepage="${HOMEPAGE_LUSER}"
fi

YRESOLUTION=''
if [ -n "${DISPLAY}" ]; then
    YRESOLUTION=$(xdpyinfo | sed --quiet --expression='s/^[[:space:]]\+dimensions:[[:space:]]\+[[:digit:]]\+x\([[:digit:]]\+\) pixels.*$/\1/p')
fi
if [ -z "${YRESOLUTION}" ]; then
    warn 'Unable to determine vertical display resolution!'
fi

# GNOME settings
if [ "${luser}" -eq 0 ]; then
    gconftool-2 --set /apps/gnome_settings_daemon/plugins/xrandr/active --type bool false
else
    gconftool-2 --set /apps/gnome_settings_daemon/plugins/xrandr/active --type bool true
fi

gconftool-2 --set /desktop/gnome/interface/cursor_blink --type bool false
gconftool-2 --set /desktop/gnome/interface/gtk_key_theme --type string 'Emacs'

gconftool-2 --set /desktop/gnome/interface/gtk_theme --type string 'Raleigh'
gconftool-2 --set /desktop/gnome/interface/icon_theme --type string 'gnome'
gconftool-2 --set /desktop/gnome/peripherals/mouse/cursor_theme --type string 'redglass'
gconftool-2 --set /apps/notification-daemon/theme --type string 'standard'

gconftool-2 --set /desktop/gnome/background/picture_filename --type string ''
gconftool-2 --set /desktop/gnome/background/color_shading_type --type string 'vertical-gradient'
gconftool-2 --set /desktop/gnome/background/primary_color --type string '#39374B'
gconftool-2 --set /desktop/gnome/background/secondary_color --type string '#42528F'

if gconftool-2 --dir-exists /desktop/gnome/session/required_components; then
    if [ "${luser}" -eq 0 ]; then
	gconftool-2 --set /desktop/gnome/session/required_components/windowmanager --type string 'sawfish'
    else
	gconftool-2 --set /desktop/gnome/session/required_components/windowmanager --type string 'gnome-wm'
    fi
fi

gconftool-2 --set /desktop/gnome/peripherals/keyboard/general/groupPerWindow --type bool false

/lib/elho/add-gnome-keyboard-shortcut 'Save screen' 'xdg-screensaver activate' '<Control><Alt>s'

# GNOME Keyring settings
gconftool-2 --set /apps/gnome-keyring/daemon-components/ssh --type bool false
gconftool-2 --set /desktop/pgp/keyservers/all_keyservers --type list --list-type=string '[hkp://pool.sks-keyservers.net,hkp://keys.gnupg.net,hkp://subkeys.pgp.net,hkp://pgp.mit.edu,ldap://keyserver.pgp.com]'
gconftool-2 --set /desktop/pgp/keyservers/search_keyservers --type list --list-type=string '[hkp://pool.sks-keyservers.net]'

# seahorse settings
gconftool-2 --set /apps/seahorse/listing/show_trust --type bool true
gconftool-2 --set /apps/seahorse/listing/show_validity --type bool true
gconftool-2 --set /desktop/pgp/ascii_armor --type bool true
gconftool-2 --set /desktop/pgp/encrypt_to_self --type bool true

# GNOME Volume Manager
gconftool-2 --set /desktop/gnome/volume_manager/autobrowse --type bool false
gconftool-2 --set /desktop/gnome/volume_manager/autoipod --type bool false
gconftool-2 --set /desktop/gnome/volume_manager/autoopen --type bool false
gconftool-2 --set /desktop/gnome/volume_manager/autophoto --type bool false
gconftool-2 --set /desktop/gnome/volume_manager/autorun --type bool false
gconftool-2 --set /desktop/gnome/volume_manager/autoscanner --type bool false
gconftool-2 --set /system/storage/default_options/vfat/mount_options --type list --list-type=string '[shortname=mixed,uid=]'

# GNOME Screensaver settings
gconftool-2 --set /apps/gnome-screensaver/lock_delay --type int 5
gconftool-2 --set /apps/gnome-screensaver/cycle_delay --type int 2147483647
gconftool-2 --set /apps/gnome-screensaver/mode --type string 'single'
if [ "${luser}" -eq 0 ]; then
    if [ -n "${YRESOLUTION}" ]; then
	if [ "${YRESOLUTION}" -gt 854 ]; then
	    gconftool-2 --set /apps/gnome-screensaver/themes --type list --list-type=string '[screensavers-phosphor-small]'
	else
	    gconftool-2 --set /apps/gnome-screensaver/themes --type list --list-type=string '[screensavers-phosphor-tiny]'
	fi
    fi
else
    gconftool-2 --set /apps/gnome-screensaver/themes --type list --list-type=string '[screensavers-debian-floaters]'
fi
if [ "${shared}" -eq 0 ]; then
    gconftool-2 --set /apps/gnome-screensaver/user_switch_enabled --type bool false
else
    gconftool-2 --set /apps/gnome-screensaver/user_switch_enabled --type bool true
fi

# metacity settings
for theme in Industrial Metabox; do
    if [ -d "/usr/share/themes/${theme}/metacity-1" ]; then
	gconftool-2 --set /apps/metacity/general/theme --type string "${theme}"
	break
    fi
done

# gksu settings
gconftool-2 --set /apps/gksu/save-to-keyring --type bool false
gconftool-2 --set /apps/gksu/force-grab --type bool true
gconftool-2 --set /apps/gksu/sudo-mode --type bool true

# GNOME Terminal settings
gconftool-2 --set /apps/gnome-terminal/global/use_menu_accelerators --type bool false
gconftool-2 --set /apps/gnome-terminal/global/use_mnemonics --type bool false

gconftool-2 --set /apps/gnome-terminal/keybindings/help --type string 'disabled'
gconftool-2 --set /apps/gnome-terminal/keybindings/switch_to_tab_1 --type string 'disabled'
gconftool-2 --set /apps/gnome-terminal/keybindings/switch_to_tab_2 --type string 'disabled'
gconftool-2 --set /apps/gnome-terminal/keybindings/switch_to_tab_3 --type string 'disabled'
gconftool-2 --set /apps/gnome-terminal/keybindings/switch_to_tab_4 --type string 'disabled'
gconftool-2 --set /apps/gnome-terminal/keybindings/switch_to_tab_5 --type string 'disabled'
gconftool-2 --set /apps/gnome-terminal/keybindings/switch_to_tab_6 --type string 'disabled'
gconftool-2 --set /apps/gnome-terminal/keybindings/switch_to_tab_7 --type string 'disabled'
gconftool-2 --set /apps/gnome-terminal/keybindings/switch_to_tab_8 --type string 'disabled'
gconftool-2 --set /apps/gnome-terminal/keybindings/switch_to_tab_9 --type string 'disabled'
gconftool-2 --set /apps/gnome-terminal/keybindings/zoom_in --type string 'disabled'
gconftool-2 --set /apps/gnome-terminal/keybindings/zoom_normal --type string 'disabled'
gconftool-2 --set /apps/gnome-terminal/keybindings/zoom_out --type string 'disabled'
gconftool-2 --set /apps/gnome-terminal/profiles/Default/background_color --type string '#DCDAD5'
gconftool-2 --set /apps/gnome-terminal/profiles/Default/use_theme_colors --type bool false
gconftool-2 --set /apps/gnome-terminal/profiles/Default/palette --type string '#000000:#AA0000:#008200:#AA5500:#0000A0:#AA00AA:#00AAAA:#AAAAAA:#555555:#FF5555:#42C842:#FFFF55:#4C4CE6:#FF55FF:#55FFFF:#FFFFFF'
gconftool-2 --set /apps/gnome-terminal/profiles/Default/scrollback_lines --type int 2048

# Vino settings
gconftool-2 --set /desktop/gnome/remote_access/local_only --type bool false
gconftool-2 --set /desktop/gnome/remote_access/require_encryption --type bool false

# Nautilus settings
if [ "${luser}" -eq 0 ]; then
    gconftool-2 --set /apps/nautilus/preferences/enable_delete --type bool true
else
    gconftool-2 --set /apps/nautilus/preferences/enable_delete --type bool false
fi
gconftool-2 --set /apps/nautilus/preferences/media_automount_open --type bool false

# Galeon settings
gconftool-2 --set /apps/galeon/Advanced/Network/disk_cache_size --type int 65536
gconftool-2 --set /apps/galeon/Browsing/Bookmarks/Editor/split_view --type bool false
gconftool-2 --set /apps/galeon/Browsing/General/newpage_type --type int 2
gconftool-2 --set /apps/galeon/Browsing/General/startpage --type string "${homepage}"
gconftool-2 --set /apps/galeon/Browsing/History/expire --type int 183
gconftool-2 --set /apps/galeon/UI/Tabs/tabbed --type bool false
gconftool-2 --set /apps/galeon/UI/Toolbar/toolbar_override_style --type string 'icons_only'
gconftool-2 --set /apps/galeon/Rendering/FontsColors/default_font --type int 1
if [ "${luser}" -eq 0 ]; then
    gconftool-2 --set /apps/galeon/Rendering/Language/lang --type list --list-type=string '[en,de]'
fi

# Epiphany settings
gconftool-2 --set /apps/epiphany/directories/downloads_folder --type string '~/Downloads'
gconftool-2 --set /apps/epiphany/general/automatic_downloads --type bool false
gconftool-2 --set /apps/epiphany/general/homepage --type string "${homepage}"
if [ "${luser}" -eq 0 ]; then
    gconftool-2 --set /apps/epiphany/web/language --type list --list-type=string '[en,de]'
fi
gconftool-2 --set /apps/epiphany/web/smooth_scroll --type bool true

# Revelation settings
gconftool-2 --set /apps/revelation/clipboard/chain_username --type bool true
gconftool-2 --set /apps/revelation/file/autoload --type bool true
gconftool-2 --set /apps/revelation/file/autoload_file --type string '/home/elho/logins'
gconftool-2 --set /apps/revelation/file/autolock --type bool false
if [ "${luser}" -eq 0 ]; then
    gconftool-2 --set /apps/revelation/launcher/ftp --type string 'gnome-terminal -x lftp %(-u %u%(,%p%)%) %h%(:%o%)'
fi
gconftool-2 --set /apps/revelation/passwordgen/length --type int 10
gconftool-2 --set /apps/revelation/view/passwords --type bool false

# Totem settings
gconftool-2 --set /apps/totem/autoload_subtitles --type bool true
gconftool-2 --set /apps/totem/auto_resize --type bool true
gconftool-2 --set /apps/totem/repeat --type bool true
gconftool-2 --set /apps/totem/subtitle_font --type string 'Verdana Bold 20'

# Arista settings
gconftool-2 --set /apps/arista/check_updates --type bool false

# Cheese settings
gconftool-2 --set /apps/cheese/enable_delete --type bool true
if [ -n "${YRESOLUTION}" ]; then
    if [ "${YRESOLUTION}" -lt 768 ]; then
	gconftool-2 --set /apps/cheese/wide_mode --type bool true
    else
	gconftool-2 --set /apps/cheese/wide_mode --type bool false
    fi
fi
