Terminal Customization

I like my terminal to be like this :

uname@hostname:~
$

rather than this :

uname@hostname:~$

and also you can backup your data with this command :

dconf dump /org/gnome/terminal/ > ~/gnome_terminal_settings_backup.txt

Reset (wipe out) the settings before loading a new one (probably not really required):

dconf reset -f /org/gnome/terminal/

Load the saved settings:

dconf load /org/gnome/terminal/ < gnome_terminal_settings_backup.txt

your entire dconf database

it is stored in the single file ~/.config/dconf/user .

My Setup

[legacy/profiles:]
default='b1dcc9dd-5262-4d8d-a863-c897e6d979b9'
list=['b1dcc9dd-5262-4d8d-a863-c897e6d979b9', 'adad0998-8247-48d8-a62b-6b5eb8f27dc9']

[legacy/profiles:/:adad0998-8247-48d8-a62b-6b5eb8f27dc9]
palette=['rgb(23,20,33)', 'rgb(192,28,40)', 'rgb(38,162,105)', 'rgb(162,115,76)', 'rgb(18,72,139)', 'rgb(163,71,186)', 'rgb(42,161,179)', 'rgb(208,207,204)', 'rgb(94,92,100)', 'rgb(246,97,81)', 'rgb(51,209,122)', 'rgb(233,173,12)', 'rgb(42,123,222)', 'rgb(192,97,203)', 'rgb(51,199,222)', 'rgb(255,255,255)']
use-theme-colors=true
visible-name='normal'

[legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9]
audible-bell=true
background-color='rgb(0,1,26)'
background-transparency-percent=51
font='Monospace 14'
foreground-color='rgb(0,172,161)'
highlight-colors-set=false
palette=['rgb(23,20,33)', 'rgb(192,28,40)', 'rgb(38,162,105)', 'rgb(162,115,76)', 'rgb(0,85,190)', 'rgb(163,71,186)', 'rgb(42,161,179)', 'rgb(208,207,204)', 'rgb(94,92,100)', 'rgb(246,97,81)', 'rgb(51,209,122)', 'rgb(233,173,12)', 'rgb(42,123,222)', 'rgb(192,97,203)', 'rgb(51,199,222)', 'rgb(255,255,255)']
use-system-font=false
use-theme-colors=false
use-theme-transparency=true
use-transparent-background=false
visible-name='mahdic200'

here is a shell script to import my color palette for yourself automatically :

#!/bin/bash
# Function to convert rgb(r, g, b) to hex format
rgb_to_hex() {
    # Extract numbers from rgb(r, g, b) format
    rgb=$1
    numbers=$(echo $rgb | grep -o '[0-9]\+')
    r=$(echo "$numbers" | sed -n '1p')
    g=$(echo "$numbers" | sed -n '2p')
    b=$(echo "$numbers" | sed -n '3p')
    
    # Convert to hex
    printf "#%02X%02X%02X" "$r" "$g" "$b"
}

# Function to get the profile UUID
get_profile_uuid() {
    # First try the Mint/Cinnamon specific path
    local uuid=$(gsettings get org.gnome.Terminal.ProfilesList default | tr -d "'")
    
    if [ -z "$uuid" ]; then
        # If that fails, try getting list of profiles
        local profile_list=$(gsettings get org.gnome.Terminal.ProfilesList list)
        # Get the first profile from the list if it exists
        uuid=$(echo "$profile_list" | grep -o "'[^']*'" | head -1 | tr -d "'")
    fi
    
    if [ -z "$uuid" ]; then
        # If still no UUID found, check alternative location
        uuid=$(dconf list /org/gnome/terminal/legacy/profiles:/ | grep '^:' | head -1 | tr -d '/:')
    fi

    echo "$uuid"
}

# Function to update color setting
update_color_setting() {
    local profile_uuid=$1
    local setting_name=$2
    local color_value=$3
    
    # Try gsettings first
    gsettings set "org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:$profile_uuid/" "$setting_name" "$color_value"
    
    # If gsettings fails, try dconf
    if [ $? -ne 0 ]; then
        dconf write "/org/gnome/terminal/legacy/profiles:/:$profile_uuid/$setting_name" "'$color_value'"
    fi
}

# Get the profile UUID
profile_uuid=$(get_profile_uuid)
if [ -z "$profile_uuid" ]; then
    echo "Error: Could not find terminal profile UUID"
    exit 1
fi

echo "Found profile UUID: $profile_uuid"

colors=("rgb(0,172,161)" "rgb(0,1,26)" "rgb(23,20,33)" "rgb(192,28,40)" "rgb(38,162,105)" "rgb(162,115,76)" "rgb(0,85,190)" "rgb(163,71,186)" "rgb(42,161,179)" "rgb(208,207,204)" "rgb(94,92,100)" "rgb(246,97,81)" "rgb(51,209,122)" "rgb(233,173,12)" "rgb(42,123,222)" "rgb(192,97,203)" "rgb(51,199,222)" "rgb(255,255,255)")

# Check if we have exactly 18 colors
if [ ${#colors[@]} -ne 18 ]; then
    echo "Error: Expected 18 colors, but found ${#colors[@]}"
    echo "Format should be: foreground, background, followed by 16 palette colors"
    exit 1
fi

# Convert and set foreground color
foreground=$(rgb_to_hex "${colors[0]}")
echo "Setting foreground color to $foreground"
update_color_setting "$profile_uuid" "foreground-color" "$foreground"

# Convert and set background color
background=$(rgb_to_hex "${colors[1]}")
echo "Setting background color to $background"
update_color_setting "$profile_uuid" "background-color" "$background"

# Process palette colors (remaining 16 colors)
palette_colors=()
for i in {2..17}; do
    hex=$(rgb_to_hex "${colors[$i]}")
    palette_colors+=("'$hex'")
done

# Set the palette
color_array="[$(IFS=,; echo "${palette_colors[*]}")]"
echo "Setting color palette"
update_color_setting "$profile_uuid" "palette" "$color_array"

echo "Color settings updated successfully!"

here is the ai generated bash script for reading a color.txt palette dynamically :

#!/bin/bash

# Function to convert rgb(r, g, b) to hex format
rgb_to_hex() {
    # Extract numbers from rgb(r, g, b) format
    rgb=$1
    numbers=$(echo $rgb | grep -o '[0-9]\+')
    r=$(echo "$numbers" | sed -n '1p')
    g=$(echo "$numbers" | sed -n '2p')
    b=$(echo "$numbers" | sed -n '3p')
    
    # Convert to hex
    printf "#%02X%02X%02X" "$r" "$g" "$b"
}

# Function to get the profile UUID
get_profile_uuid() {
    # First try the Mint/Cinnamon specific path
    local uuid=$(gsettings get org.gnome.Terminal.ProfilesList default | tr -d "'")
    
    if [ -z "$uuid" ]; then
        # If that fails, try getting list of profiles
        local profile_list=$(gsettings get org.gnome.Terminal.ProfilesList list)
        # Get the first profile from the list if it exists
        uuid=$(echo "$profile_list" | grep -o "'[^']*'" | head -1 | tr -d "'")
    fi
    
    if [ -z "$uuid" ]; then
        # If still no UUID found, check alternative location
        uuid=$(dconf list /org/gnome/terminal/legacy/profiles:/ | grep '^:' | head -1 | tr -d '/:')
    fi

    echo "$uuid"
}

# Function to update color setting
update_color_setting() {
    local profile_uuid=$1
    local setting_name=$2
    local color_value=$3
    
    # Try gsettings first
    gsettings set "org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:$profile_uuid/" "$setting_name" "$color_value"
    
    # If gsettings fails, try dconf
    if [ $? -ne 0 ]; then
        dconf write "/org/gnome/terminal/legacy/profiles:/:$profile_uuid/$setting_name" "'$color_value'"
    fi
}

# Check if file is provided
if [ $# -ne 1 ]; then
    echo "Usage: $0 <color_file>"
    echo "File should contain 18 colors in rgb(r,g,b) format, one per line:"
    echo "Line 1: foreground color"
    echo "Line 2: background color"
    echo "Lines 3-18: palette colors"
    exit 1
fi

# Check if file exists
if [ ! -f "$1" ]; then
    echo "Error: File $1 does not exist"
    exit 1
fi

# Get the profile UUID
profile_uuid=$(get_profile_uuid)
if [ -z "$profile_uuid" ]; then
    echo "Error: Could not find terminal profile UUID"
    exit 1
fi

echo "Found profile UUID: $profile_uuid"

# Read all colors
mapfile -t colors < "$1"

# Check if we have exactly 18 colors
if [ ${#colors[@]} -ne 18 ]; then
    echo "Error: Expected 18 colors, but found ${#colors[@]}"
    echo "Format should be: foreground, background, followed by 16 palette colors"
    exit 1
fi

# Convert and set foreground color
foreground=$(rgb_to_hex "${colors[0]}")
echo "Setting foreground color to $foreground"
update_color_setting "$profile_uuid" "foreground-color" "$foreground"

# Convert and set background color
background=$(rgb_to_hex "${colors[1]}")
echo "Setting background color to $background"
update_color_setting "$profile_uuid" "background-color" "$background"

# Process palette colors (remaining 16 colors)
palette_colors=()
for i in {2..17}; do
    hex=$(rgb_to_hex "${colors[$i]}")
    palette_colors+=("'$hex'")
done

# Set the palette
color_array="[$(IFS=,; echo "${palette_colors[*]}")]"
echo "Setting color palette"
update_color_setting "$profile_uuid" "palette" "$color_array"

echo "Color settings updated successfully!"