diff --git a/bin/omakub-sub/font-size.sh b/bin/omakub-sub/font-size.sh index bcb255809..860926da6 100644 --- a/bin/omakub-sub/font-size.sh +++ b/bin/omakub-sub/font-size.sh @@ -4,6 +4,13 @@ choice=$(gum choose {7..14} "<< Back" --height 11 --header "Choose your terminal if [[ $choice =~ ^[0-9]+$ ]]; then sed -i "s/^size = .*$/size = $choice/g" ~/.config/alacritty/font-size.toml + + OMAKUB_CURRENT_FONT=$(gsettings get org.gnome.desktop.interface font-name | tr -d "'") + OMAKUB_FONT_NAME="${OMAKUB_CURRENT_FONT% [0-9]*}" + gsettings set org.gnome.desktop.interface font-name "'$OMAKUB_FONT_NAME $choice'" + gsettings set org.gnome.desktop.interface monospace-font-name "'$OMAKUB_FONT_NAME Mono $choice'" + source "$OMAKUB_PATH/themes/set-qt6-theme.sh" + source $OMAKUB_PATH/bin/omakub-sub/font-size.sh else source $OMAKUB_PATH/bin/omakub-sub/font.sh diff --git a/bin/omakub-sub/font.sh b/bin/omakub-sub/font.sh index 50559ddfe..f8d8d159b 100644 --- a/bin/omakub-sub/font.sh +++ b/bin/omakub-sub/font.sh @@ -18,7 +18,11 @@ set_font() { source $OMAKUB_PATH/ascii.sh fi - gsettings set org.gnome.desktop.interface monospace-font-name "$font_name 10" + OMAKUB_CURRENT_FONT_SIZE=$(gsettings get org.gnome.desktop.interface font-name | tr -d "'" | awk '{print $NF}') + gsettings set org.gnome.desktop.interface font-name "$font_name $OMAKUB_CURRENT_FONT_SIZE" + gsettings set org.gnome.desktop.interface monospace-font-name "$font_name Mono $OMAKUB_CURRENT_FONT_SIZE" + source "$OMAKUB_PATH/themes/set-qt6-theme.sh" + cp "$OMAKUB_PATH/configs/alacritty/fonts/$file_name.toml" ~/.config/alacritty/font.toml sed -i "s/\"editor.fontFamily\": \".*\"/\"editor.fontFamily\": \"$font_name\"/g" ~/.config/Code/User/settings.json } diff --git a/bin/omakub-sub/theme.sh b/bin/omakub-sub/theme.sh index 8d628ead1..c44ba3e32 100644 --- a/bin/omakub-sub/theme.sh +++ b/bin/omakub-sub/theme.sh @@ -19,7 +19,6 @@ if [ -n "$THEME" ] && [ "$THEME" != "<<-back" ]; then fi source $OMAKUB_PATH/themes/$THEME/gnome.sh - source $OMAKUB_PATH/themes/$THEME/tophat.sh source $OMAKUB_PATH/themes/$THEME/vscode.sh # Forgo setting the Chrome theme until we might find a less disruptive way of doing it. diff --git a/defaults/bash/shell b/defaults/bash/shell index b27935758..ef69fc1db 100644 --- a/defaults/bash/shell +++ b/defaults/bash/shell @@ -4,6 +4,8 @@ HISTCONTROL=ignoreboth HISTSIZE=32768 HISTFILESIZE="${HISTSIZE}" +export QT_QPA_PLATFORMTHEME="qt6ct" + # Autocompletion source /usr/share/bash-completion/bash_completion diff --git a/install/desktop/set-gnome-theme.sh b/install/desktop/set-gnome-theme.sh index 2b267e409..09015bec3 100644 --- a/install/desktop/set-gnome-theme.sh +++ b/install/desktop/set-gnome-theme.sh @@ -1,4 +1,26 @@ #!/bin/bash +# Adding support for QT themes in the style of the main theme +sudo apt-get install -y qt6ct adwaita-qt + +cd /tmp +rm -f gtk.deb icons.deb + +wget -O gtk.deb http://ftp.debian.org/debian/pool/main/y/yaru-theme/yaru-theme-gtk_24.04.3-1_all.deb +dpkg-deb -x gtk.deb ./yaru-theme/ + +wget -O icons.deb http://ftp.debian.org/debian/pool/main/y/yaru-theme/yaru-theme-icon_24.04.3-1_all.deb +dpkg-deb -x icons.deb ./yaru-icons/ + +mkdir -p ~/.local/share/{themes,icons} + +for theme in bark viridian; do + cp -R ./yaru-theme/usr/share/themes/Yaru-$theme{,-dark} ~/.local/share/themes/ 2>/dev/null || true + cp -R ./yaru-icons/usr/share/icons/Yaru-$theme{,-dark} ~/.local/share/icons/ 2>/dev/null || true +done + +rm -f gtk.deb icons.deb +rm -rf yaru-theme yaru-icons +cd - + source ~/.local/share/omakub/themes/tokyo-night/gnome.sh -source ~/.local/share/omakub/themes/tokyo-night/tophat.sh diff --git a/themes/catppuccin/gnome.sh b/themes/catppuccin/gnome.sh index 3f305bd27..5b0d9472b 100644 --- a/themes/catppuccin/gnome.sh +++ b/themes/catppuccin/gnome.sh @@ -1,5 +1,7 @@ #!/bin/bash -OMAKUB_THEME_COLOR="magenta" +OMAKUB_THEME_PEFER="dark" +OMAKUB_THEME_STYLE="magenta" +OMAKUB_THEME_ACCENT=("magenta" "pink") OMAKUB_THEME_BACKGROUND="catppuccin/background.png" -source $OMAKUB_PATH/themes/set-gnome-theme.sh +source "$OMAKUB_PATH/themes/set-gnome-theme.sh" diff --git a/themes/catppuccin/tophat.sh b/themes/catppuccin/tophat.sh deleted file mode 100644 index b3846688b..000000000 --- a/themes/catppuccin/tophat.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -gsettings set org.gnome.shell.extensions.tophat meter-fg-color "#e920a3" diff --git a/themes/everforest/gnome.sh b/themes/everforest/gnome.sh index 8fdd6e603..5e8b5382b 100644 --- a/themes/everforest/gnome.sh +++ b/themes/everforest/gnome.sh @@ -1,5 +1,7 @@ #!/bin/bash -OMAKUB_THEME_COLOR="bark" +OMAKUB_THEME_PEFER="dark" +OMAKUB_THEME_STYLE="bark" +OMAKUB_THEME_ACCENT=("bark" "slate") OMAKUB_THEME_BACKGROUND="everforest/background.jpg" -source $OMAKUB_PATH/themes/set-gnome-theme.sh +source "$OMAKUB_PATH/themes/set-gnome-theme.sh" diff --git a/themes/everforest/tophat.sh b/themes/everforest/tophat.sh deleted file mode 100644 index 8aade8922..000000000 --- a/themes/everforest/tophat.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -gsettings set org.gnome.shell.extensions.tophat meter-fg-color "#78ab50" diff --git a/themes/gruvbox/gnome.sh b/themes/gruvbox/gnome.sh index 00793bb95..a46f08d6a 100644 --- a/themes/gruvbox/gnome.sh +++ b/themes/gruvbox/gnome.sh @@ -1,5 +1,7 @@ #!/bin/bash -OMAKUB_THEME_COLOR="sage" +OMAKUB_THEME_PEFER="dark" +OMAKUB_THEME_STYLE="sage" +OMAKUB_THEME_ACCENT=("sage" "yellow") OMAKUB_THEME_BACKGROUND="gruvbox/background.jpg" -source $OMAKUB_PATH/themes/set-gnome-theme.sh +source "$OMAKUB_PATH/themes/set-gnome-theme.sh" diff --git a/themes/gruvbox/tophat.sh b/themes/gruvbox/tophat.sh deleted file mode 100644 index 8aade8922..000000000 --- a/themes/gruvbox/tophat.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -gsettings set org.gnome.shell.extensions.tophat meter-fg-color "#78ab50" diff --git a/themes/kanagawa/gnome.sh b/themes/kanagawa/gnome.sh index f066b6221..35c5f8a31 100644 --- a/themes/kanagawa/gnome.sh +++ b/themes/kanagawa/gnome.sh @@ -1,5 +1,7 @@ #!/bin/bash -OMAKUB_THEME_COLOR="purple" +OMAKUB_THEME_PEFER="dark" +OMAKUB_THEME_STYLE="" +OMAKUB_THEME_ACCENT=("bark" "yellow") OMAKUB_THEME_BACKGROUND="kanagawa/background.jpg" -source $OMAKUB_PATH/themes/set-gnome-theme.sh +source "$OMAKUB_PATH/themes/set-gnome-theme.sh" diff --git a/themes/kanagawa/tophat.sh b/themes/kanagawa/tophat.sh deleted file mode 100644 index 8c4585ebb..000000000 --- a/themes/kanagawa/tophat.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -gsettings set org.gnome.shell.extensions.tophat meter-fg-color "#924d8b" diff --git a/themes/matte-black/gnome.sh b/themes/matte-black/gnome.sh index 531b68c6e..f4afdc568 100644 --- a/themes/matte-black/gnome.sh +++ b/themes/matte-black/gnome.sh @@ -1,5 +1,7 @@ #!/bin/bash -OMAKUB_THEME_COLOR="orange" +OMAKUB_THEME_PEFER="dark" +OMAKUB_THEME_STYLE="" +OMAKUB_THEME_ACCENT=("orange" "yellow") OMAKUB_THEME_BACKGROUND="matte-black/background.jpg" -source $OMAKUB_PATH/themes/set-gnome-theme.sh +source "$OMAKUB_PATH/themes/set-gnome-theme.sh" diff --git a/themes/matte-black/tophat.sh b/themes/matte-black/tophat.sh deleted file mode 100644 index c8e7a5483..000000000 --- a/themes/matte-black/tophat.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -gsettings set org.gnome.shell.extensions.tophat meter-fg-color "#FFFFFF" diff --git a/themes/nord/gnome.sh b/themes/nord/gnome.sh index ef9be63d3..362f1fa00 100644 --- a/themes/nord/gnome.sh +++ b/themes/nord/gnome.sh @@ -1,5 +1,7 @@ #!/bin/bash -OMAKUB_THEME_COLOR="blue" +OMAKUB_THEME_PEFER="dark" +OMAKUB_THEME_STYLE="blue" +OMAKUB_THEME_ACCENT=("slate" "blue") OMAKUB_THEME_BACKGROUND="nord/background.png" -source $OMAKUB_PATH/themes/set-gnome-theme.sh +source "$OMAKUB_PATH/themes/set-gnome-theme.sh" diff --git a/themes/nord/tophat.sh b/themes/nord/tophat.sh deleted file mode 100644 index e8cd819b0..000000000 --- a/themes/nord/tophat.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -gsettings set org.gnome.shell.extensions.tophat meter-fg-color "#208fe9" diff --git a/themes/osaka-jade/gnome.sh b/themes/osaka-jade/gnome.sh index 73c17e0c5..1d053d617 100644 --- a/themes/osaka-jade/gnome.sh +++ b/themes/osaka-jade/gnome.sh @@ -1,5 +1,7 @@ #!/bin/bash -OMAKUB_THEME_COLOR="green" +OMAKUB_THEME_PEFER="dark" +OMAKUB_THEME_STYLE="viridian" +OMAKUB_THEME_ACCENT=("viridian" "green") OMAKUB_THEME_BACKGROUND="osaka-jade/background.jpg" -source $OMAKUB_PATH/themes/set-gnome-theme.sh \ No newline at end of file +source "$OMAKUB_PATH/themes/set-gnome-theme.sh" diff --git a/themes/osaka-jade/tophat.sh b/themes/osaka-jade/tophat.sh deleted file mode 100644 index 634d6cddd..000000000 --- a/themes/osaka-jade/tophat.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -gsettings set org.gnome.shell.extensions.tophat meter-fg-color "#214237" \ No newline at end of file diff --git a/themes/ristretto/gnome.sh b/themes/ristretto/gnome.sh index 275190676..293f3dcfb 100644 --- a/themes/ristretto/gnome.sh +++ b/themes/ristretto/gnome.sh @@ -1,5 +1,7 @@ #!/bin/bash -OMAKUB_THEME_COLOR="grey" +OMAKUB_THEME_PEFER="dark" +OMAKUB_THEME_STYLE="" +OMAKUB_THEME_ACCENT=("orange" "yellow") OMAKUB_THEME_BACKGROUND="ristretto/background.jpg" -source $OMAKUB_PATH/themes/set-gnome-theme.sh +source "$OMAKUB_PATH/themes/set-gnome-theme.sh" diff --git a/themes/ristretto/tophat.sh b/themes/ristretto/tophat.sh deleted file mode 100644 index 730aba8a1..000000000 --- a/themes/ristretto/tophat.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -gsettings set org.gnome.shell.extensions.tophat meter-fg-color "#2c2525" diff --git a/themes/rose-pine/gnome.sh b/themes/rose-pine/gnome.sh index 0c165eb1e..a67c1192f 100644 --- a/themes/rose-pine/gnome.sh +++ b/themes/rose-pine/gnome.sh @@ -1,6 +1,7 @@ #!/bin/bash -OMAKUB_THEME_COLOR="red" +OMAKUB_THEME_PEFER="light" +OMAKUB_THEME_STYLE="red" +OMAKUB_THEME_ACCENT=("red") OMAKUB_THEME_BACKGROUND="rose-pine/background.jpg" -source $OMAKUB_PATH/themes/set-gnome-theme.sh -gsettings set org.gnome.desktop.interface color-scheme 'prefer-light' +source "$OMAKUB_PATH/themes/set-gnome-theme.sh" diff --git a/themes/rose-pine/tophat.sh b/themes/rose-pine/tophat.sh deleted file mode 100644 index 7bbd0eda6..000000000 --- a/themes/rose-pine/tophat.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -gsettings set org.gnome.shell.extensions.tophat meter-fg-color "#e92020" diff --git a/themes/set-gnome-theme.sh b/themes/set-gnome-theme.sh index 0df937162..d5835b116 100644 --- a/themes/set-gnome-theme.sh +++ b/themes/set-gnome-theme.sh @@ -1,18 +1,63 @@ #!/bin/bash -gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' -gsettings set org.gnome.desktop.interface cursor-theme 'Yaru' -gsettings set org.gnome.desktop.interface gtk-theme "Yaru-$OMAKUB_THEME_COLOR-dark" -gsettings set org.gnome.desktop.interface icon-theme "Yaru-$OMAKUB_THEME_COLOR" -gsettings set org.gnome.desktop.interface accent-color "$OMAKUB_THEME_COLOR" 2>/dev/null || true +omaku_get_accent() { + local -a PREFERRED_COLORS=("$@") + get_system_accent_colors() { + local range_output + range_output=$(gsettings range org.gnome.desktop.interface accent-color 2>/dev/null) + + if [[ -z "$range_output" || "$range_output" == *"type is not an enumeration"* ]]; then + echo "" + return + fi + echo "$range_output" | tr -d "[]'" | tr ',' '\n' | awk 'NF' + } + + local -a SYSTEM_COLORS + readarray -t SYSTEM_COLORS < <(get_system_accent_colors) + + declare -A SYSTEM_SET + for c in "${SYSTEM_COLORS[@]}"; do + SYSTEM_SET["$c"]=1 + done + + local SELECTED="default" + for color in "${PREFERRED_COLORS[@]}"; do + if [[ -n "${SYSTEM_SET[$color]}" ]]; then + SELECTED="$color" + break + fi + done + + echo "$SELECTED" +} + +OMAKUB_THEME_SUFFIX="" +if [[ "$OMAKUB_THEME_PEFER" == "dark" ]]; then + OMAKUB_THEME_SUFFIX="-dark" +fi +if [ "$OMAKUB_THEME_STYLE" ]; then + OMAKUB_THEME_STYLE="-${OMAKUB_THEME_STYLE}" +fi + +gsettings set org.gnome.desktop.interface color-scheme "prefer-${OMAKUB_THEME_PEFER}" +gsettings set org.gnome.desktop.interface cursor-theme "Yaru" +gsettings set org.gnome.desktop.interface gtk-theme "Yaru${OMAKUB_THEME_STYLE}${OMAKUB_THEME_SUFFIX}" +gsettings set org.gnome.desktop.interface icon-theme "Yaru${OMAKUB_THEME_STYLE}${OMAKUB_THEME_SUFFIX}" + +GNOME_CURRENT_ACCENTS=$(omaku_get_accent "${OMAKUB_THEME_ACCENT[@]}") +gsettings set org.gnome.desktop.interface accent-color "$GNOME_CURRENT_ACCENTS" 2>/dev/null || true + BACKGROUND_ORG_PATH="$HOME/.local/share/omakub/themes/$OMAKUB_THEME_BACKGROUND" BACKGROUND_DEST_DIR="$HOME/.local/share/backgrounds" -BACKGROUND_DEST_PATH="$BACKGROUND_DEST_DIR/$(echo $OMAKUB_THEME_BACKGROUND | tr '/' '-')" +BACKGROUND_DEST_PATH="$BACKGROUND_DEST_DIR/$(echo "$OMAKUB_THEME_BACKGROUND" | tr '/' '-')" if [ ! -d "$BACKGROUND_DEST_DIR" ]; then mkdir -p "$BACKGROUND_DEST_DIR"; fi -[ ! -f $BACKGROUND_DEST_PATH ] && cp $BACKGROUND_ORG_PATH $BACKGROUND_DEST_PATH -gsettings set org.gnome.desktop.background picture-uri $BACKGROUND_DEST_PATH -gsettings set org.gnome.desktop.background picture-uri-dark $BACKGROUND_DEST_PATH +[ ! -f "$BACKGROUND_DEST_PATH" ] && install "$BACKGROUND_ORG_PATH" "$BACKGROUND_DEST_PATH" +gsettings set org.gnome.desktop.background picture-uri "$BACKGROUND_DEST_PATH" +gsettings set org.gnome.desktop.background picture-uri-dark "$BACKGROUND_DEST_PATH" gsettings set org.gnome.desktop.background picture-options 'zoom' + +source "$OMAKUB_PATH/themes/set-qt6-theme.sh" diff --git a/themes/set-qt6-theme.sh b/themes/set-qt6-theme.sh new file mode 100644 index 000000000..4218e2210 --- /dev/null +++ b/themes/set-qt6-theme.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +mkdir -p ~/.config/qt6ct +OMAKUB_THEME_PEFER=$(gsettings get org.gnome.desktop.interface color-scheme | tr -d "'") +if [[ "$OMAKUB_THEME_PEFER" == "prefer-dark" ]]; then + OMAKUB_THEME_SUFFIX="-Dark" +fi + +OMAKUB_THEME_FONTANDSIZE='"'$(gsettings get org.gnome.desktop.interface font-name | tr -d "'" | awk '{ + size = $NF; + name = ""; + for (i = 1; i < NF; i++) { + if (i > 1) name = name " "; + name = name $i; + } + print name "," size; +}')'"' +OMAKUB_THEME_FONTANDSIZE_MONO='"'$(gsettings get org.gnome.desktop.interface monospace-font-name | tr -d "'" | awk '{ + size = $NF; + name = ""; + for (i = 1; i < NF; i++) { + if (i > 1) name = name " "; + name = name $i; + } + print name "," size; +}')'"' + +printf "%s\n" \ + "[Appearance]" \ + "custom_palette=false" \ + "icon_theme=$(gsettings get org.gnome.desktop.interface gtk-theme | tr -d "'")" \ + "standard_dialogs=gtk3" \ + "style=Adwaita${OMAKUB_THEME_SUFFIX}" \ + "" \ + "[Fonts]" \ + "general=$OMAKUB_THEME_FONTANDSIZE" \ + "fixed=$OMAKUB_THEME_FONTANDSIZE_MONO" \ + "" | + tee ~/.config/qt6ct/qt6ct.conf >/dev/null diff --git a/themes/tokyo-night/gnome.sh b/themes/tokyo-night/gnome.sh index d33f1eb0a..e3333d30f 100644 --- a/themes/tokyo-night/gnome.sh +++ b/themes/tokyo-night/gnome.sh @@ -1,5 +1,7 @@ #!/bin/bash -OMAKUB_THEME_COLOR="purple" +OMAKUB_THEME_PEFER="dark" +OMAKUB_THEME_STYLE="purple" +OMAKUB_THEME_ACCENT=("purple") OMAKUB_THEME_BACKGROUND="tokyo-night/background.jpg" -source $OMAKUB_PATH/themes/set-gnome-theme.sh +source "$OMAKUB_PATH/themes/set-gnome-theme.sh" diff --git a/themes/tokyo-night/tophat.sh b/themes/tokyo-night/tophat.sh deleted file mode 100644 index 8c4585ebb..000000000 --- a/themes/tokyo-night/tophat.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -gsettings set org.gnome.shell.extensions.tophat meter-fg-color "#924d8b"