aboutsummaryrefslogtreecommitdiff
path: root/terminals/gnome-terminal/bliss.sh
diff options
context:
space:
mode:
Diffstat (limited to 'terminals/gnome-terminal/bliss.sh')
-rw-r--r--terminals/gnome-terminal/bliss.sh123
1 files changed, 123 insertions, 0 deletions
diff --git a/terminals/gnome-terminal/bliss.sh b/terminals/gnome-terminal/bliss.sh
new file mode 100644
index 0000000..31fb6fe
--- /dev/null
+++ b/terminals/gnome-terminal/bliss.sh
@@ -0,0 +1,123 @@
+#!/usr/bin/env bash
+# Base16 - Gnome Terminal color scheme install script
+
+[[ -z "$PROFILE_NAME" ]] && PROFILE_NAME="terminal.sexy"
+[[ -z "$PROFILE_SLUG" ]] && PROFILE_SLUG="terminal-dot-sexy"
+[[ -z "$DCONF" ]] && DCONF=dconf
+[[ -z "$UUIDGEN" ]] && UUIDGEN=uuidgen
+
+dset() {
+ local key="$1"; shift
+ local val="$1"; shift
+
+ if [[ "$type" == "string" ]]; then
+ val="'$val'"
+ fi
+
+ "$DCONF" write "$PROFILE_KEY/$key" "$val"
+}
+
+# because dconf still doesn't have "append"
+dlist_append() {
+ local key="$1"; shift
+ local val="$1"; shift
+
+ local entries="$(
+ {
+ "$DCONF" read "$key" | tr -d '[]' | tr , "\n" | fgrep -v "$val"
+ echo "'$val'"
+ } | head -c-1 | tr "\n" ,
+ )"
+
+ "$DCONF" write "$key" "[$entries]"
+}
+
+# Newest versions of gnome-terminal use dconf
+if which "$DCONF" > /dev/null 2>&1; then
+ [[ -z "$BASE_KEY_NEW" ]] && BASE_KEY_NEW=/org/gnome/terminal/legacy/profiles:
+
+ if [[ -n "`$DCONF list $BASE_KEY_NEW/`" ]]; then
+ if which "$UUIDGEN" > /dev/null 2>&1; then
+ PROFILE_SLUG=`uuidgen`
+ fi
+
+ if [[ -n "`$DCONF read $BASE_KEY_NEW/default`" ]]; then
+ DEFAULT_SLUG=`$DCONF read $BASE_KEY_NEW/default | tr -d \'`
+ else
+ DEFAULT_SLUG=`$DCONF list $BASE_KEY_NEW/ | grep '^:' | head -n1 | tr -d :/`
+ fi
+
+ DEFAULT_KEY="$BASE_KEY_NEW/:$DEFAULT_SLUG"
+ PROFILE_KEY="$BASE_KEY_NEW/:$PROFILE_SLUG"
+
+ # copy existing settings from default profile
+ $DCONF dump "$DEFAULT_KEY/" | $DCONF load "$PROFILE_KEY/"
+
+ # add new copy to list of profiles
+ dlist_append $BASE_KEY_NEW/list "$PROFILE_SLUG"
+
+ # update profile values with theme options
+ dset visible-name "'$PROFILE_NAME'"
+ dset palette "['#1c1b1d', '#de9dac', '#9ddeaf', '#dedd9d', '#9dacde', '#af9dde', '#9dccde', '#f4e0d8', '#262427', '#f7afc0', '#aff7c3', '#f7f6af', '#afc0f7', '#c3aff7', '#afe3f7', '#f9ece8']"
+ dset background-color "'#121213'"
+ dset foreground-color "'#fdf9f7'"
+ dset bold-color "'#fdf9f7'"
+ dset bold-color-same-as-fg "true"
+ dset use-theme-colors "false"
+ dset use-theme-background "false"
+
+ unset PROFILE_NAME
+ unset PROFILE_SLUG
+ unset DCONF
+ unset UUIDGEN
+ exit 0
+ fi
+fi
+
+# Fallback for Gnome 2 and early Gnome 3
+[[ -z "$GCONFTOOL" ]] && GCONFTOOL=gconftool
+[[ -z "$BASE_KEY" ]] && BASE_KEY=/apps/gnome-terminal/profiles
+
+PROFILE_KEY="$BASE_KEY/$PROFILE_SLUG"
+
+gset() {
+ local type="$1"; shift
+ local key="$1"; shift
+ local val="$1"; shift
+
+ "$GCONFTOOL" --set --type "$type" "$PROFILE_KEY/$key" -- "$val"
+}
+
+# Because gconftool doesn't have "append"
+glist_append() {
+ local type="$1"; shift
+ local key="$1"; shift
+ local val="$1"; shift
+
+ local entries="$(
+ {
+ "$GCONFTOOL" --get "$key" | tr -d '[]' | tr , "\n" | fgrep -v "$val"
+ echo "$val"
+ } | head -c-1 | tr "\n" ,
+ )"
+
+ "$GCONFTOOL" --set --type list --list-type $type "$key" "[$entries]"
+}
+
+# Append the Base16 profile to the profile list
+glist_append string /apps/gnome-terminal/global/profile_list "$PROFILE_SLUG"
+
+gset string visible_name "$PROFILE_NAME"
+gset string palette "#1c1b1d:#de9dac:#9ddeaf:#dedd9d:#9dacde:#af9dde:#9dccde:#f4e0d8:#262427:#f7afc0:#aff7c3:#f7f6af:#afc0f7:#c3aff7:#afe3f7:#f9ece8"
+gset string background_color "#121213"
+gset string foreground_color "#fdf9f7"
+gset string bold_color "#fdf9f7"
+gset bool bold_color_same_as_fg "true"
+gset bool use_theme_colors "false"
+gset bool use_theme_background "false"
+
+unset PROFILE_NAME
+unset PROFILE_SLUG
+unset DCONF
+unset UUIDGEN
+