#!/bin/bash

    # 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 3 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, see <http://www.gnu.org/licenses/>.

# Tweaks a default MATE desktop to my liking.  Works on Debian
# Buster/Sid.  Should be distro-agnostic, though your mileage may vary.
#
# This script is part of my dotfiles:
# https://gitlab.com/protesilaos/dotfiles
#
# There still are a few things I set up manually, such as changing the
# panel layout, adding a few custom key bindings, and the like.  Note
# though that the purpose of this setup script is to make MATE useable
# enough as a fallback DE for those rare instances where I choose not
# to run my BSPWM session.  This is especially true for the size of the
# fonts, the keyboard layouts, the keybindings, and the themes.
#
# I retrieved the information about each setting by first doing things
# manually and then using the `dconf-editor` to figure out what changed
# in the backend.

# Keyboard settings
# -----------------
gsettings set org.mate.peripherals-keyboard numlock-state 'off'
gsettings set org.mate.peripherals-keyboard-xkb.kbd layouts "['us','gr']"
gsettings set org.mate.peripherals-keyboard-xkb.kbd options "['grp\tgrp:alt_caps_toggle', 'Compose key\tcompose:menu']"

# Key bindings
# ------------
gsettings set org.mate.Marco.window-keybindings tile-to-side-e '<Shift><Mod4>l'
gsettings set org.mate.Marco.window-keybindings tile-to-side-w '<Shift><Mod4>h'
gsettings set org.mate.Marco.window-keybindings toggle-fullscreen '<Mod4>f'
gsettings set org.mate.Marco.window-keybindings toggle-maximized '<Mod4>m'
gsettings set org.mate.Marco.window-keybindings close '<Mod4>q'
gsettings set org.mate.Marco.global-keybindings switch-to-workspace-1 '<Mod4>1'
gsettings set org.mate.Marco.global-keybindings switch-to-workspace-2 '<Mod4>2'
gsettings set org.mate.Marco.global-keybindings switch-to-workspace-3 '<Mod4>3'
gsettings set org.mate.Marco.global-keybindings switch-to-workspace-4 '<Mod4>4'
gsettings set org.mate.Marco.window-keybindings move-to-workspace-1 '<Shift><Mod4>exclam'
gsettings set org.mate.Marco.window-keybindings move-to-workspace-2 '<Shift><Mod4>at'
gsettings set org.mate.Marco.window-keybindings move-to-workspace-3 '<Shift><Mod4>numbersign'
gsettings set org.mate.Marco.window-keybindings move-to-workspace-4 '<Shift><Mod4>dollar'
gsettings set org.mate.Marco.global-keybindings run-command-window-screenshot 'Print'
gsettings set org.mate.Marco.global-keybindings run-command-screenshot '<Mod4>Print'
gsettings set org.mate.SettingsDaemon.plugins.media-keys logout '<Primary><Alt>Delete'
gsettings set org.mate.SettingsDaemon.plugins.media-keys power '<Primary><Alt>End'

# Font settings
# -------------
gsettings set org.mate.caja.desktop font 'Sans 10'
gsettings set org.mate.interface font-name 'Sans 10'
gsettings set org.mate.Marco.general titlebar-font 'Sans 10'
gsettings set org.mate.interface document-font-name 'Sans 10'
gsettings set org.mate.interface monospace-font-name 'Monospace 10'

# Theme settings
# --------------
# Dependencies:
# 	apt install materia-gtk-theme papirus-icon-theme

if [ -d /usr/share/themes/Materia ]; then
	gsettings set org.mate.interface gtk-theme 'Materia-dark'
fi

if [ -d /usr/share/icons/Papirus ]; then
	gsettings set org.mate.interface icon-theme 'Papirus-Dark'
fi

if [ -d /usr/share/icons/Adwaita ]; then
	gsettings set org.mate.peripherals-mouse cursor-theme 'Adwaita'
fi

gsettings set org.mate.peripherals-mouse cursor-size '24'

# The notification daemon is replaced by `dunst` so this does not have
# any effect.
gsettings set org.mate.NotificationDaemon theme 'coco'

# Desktop settings
# ----------------
gsettings set org.mate.background show-desktop-icons 'true'
gsettings set org.mate.caja.desktop home-icon-visible 'false'
gsettings set org.mate.Marco.general num-workspaces '4'

# Panel settings
# --------------
gsettings set org.mate.panel toplevel-id-list "['top']"
gsettings set org.mate.panel.toplevel.background:/org/mate/panel/toplevels/top/background/ color 'rgba(0,0,0,0.6)'
gsettings set org.mate.panel.toplevel.background:/org/mate/panel/toplevels/top/background/ type 'color'

# Window manager settings
# -----------------------
gsettings set org.mate.session.required-components windowmanager 'marco'
gsettings set org.mate.Marco.general center-new-windows 'false'
gsettings set org.mate.Marco.general compositing-manager 'true'

# App settings
# ------------

# Eye of MATE
gsettings set org.mate.eom.ui image-collection 'false'
gsettings set org.mate.eom.ui sidebar 'false'
gsettings set org.mate.eom.ui toolbar 'false'
gsettings set org.mate.eom.view background-color 'rgb(0,0,0)'
gsettings set org.mate.eom.view use-background-color 'true'

# Pluma (the colour schme is installed with my dotfiles: `stow gtk`)
gsettings set org.mate.pluma active-plugins "['time', 'modelines', 'spell', 'docinfo']"
gsettings set org.mate.pluma color-scheme 'tempus-classic'
gsettings set org.mate.pluma display-line-numbers 'false'
gsettings set org.mate.pluma right-margin-position '72'
gsettings set org.mate.pluma side-pane-visible 'false'
gsettings set org.mate.pluma statusbar-visible 'false'
gsettings set org.mate.pluma toolbar-visible 'false'
gsettings set org.mate.pluma use-default-font 'true'

# Power Manager
gsettings set org.mate.power-manager action-critical-battery 'hibernate'
gsettings set org.mate.power-manager button-lid-ac 'suspend'
gsettings set org.mate.power-manager button-lid-battery 'suspend'
gsettings set org.mate.power-manager button-power 'interactive'
gsettings set org.mate.power-manager button-suspend 'suspend'

# Screensaver
gsettings set org.mate.screensaver idle-activation-enabled 'false'
gsettings set org.mate.screensaver lock-enabled 'false'
gsettings set org.mate.screensaver mode 'single'

# Settings daemon
gsettings set org.mate.SettingsDaemon.plugins.media-keys enable-osd 'false'
gsettings set org.mate.SettingsDaemon.plugins.media-keys screensaver 'disabled'
