diff --git a/config/hypr/configs/Keybinds.conf b/config/hypr/configs/Keybinds.conf index b5f565b..ca27a73 100644 --- a/config/hypr/configs/Keybinds.conf +++ b/config/hypr/configs/Keybinds.conf @@ -40,6 +40,7 @@ bind = $mainMod SHIFT, B, exec, $scriptsDir/ChangeBlur.sh # Toggle blur settings bind = $mainMod SHIFT, G, exec, $scriptsDir/GameMode.sh bind = CTRL ALT, W, exec, $scriptsDir/Wallpaper.sh bind = $mainMod, W, exec, $scriptsDir/WallpaperSelect.sh +bind = $mainMod SHIFT, O, exec, $scriptsDir/ChangeTheme.sh # Change oh-my-zsh theme bind = $mainMod ALT, K, exec, $scriptsDir/SwitchKeyboardLayout.sh bind = $mainMod ALT, R, exec, $scriptsDir/Refresh.sh @@ -183,4 +184,4 @@ bind = $mainMod ALT, P, submap, passthru submap = passthru # to unbind bind = $mainMod ALT, P, submap, reset -submap = reset \ No newline at end of file +submap = reset diff --git a/config/hypr/scripts/ZshChangeTheme.sh b/config/hypr/scripts/ZshChangeTheme.sh new file mode 100755 index 0000000..7057ed2 --- /dev/null +++ b/config/hypr/scripts/ZshChangeTheme.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +themes_dir="$HOME/.oh-my-zsh/themes" +file_extension=".zsh-theme" + +themes_array=($(find "$themes_dir" -type f -name "*$file_extension" -exec basename {} \; | sed -e "s/$file_extension//")) + +rofi_command="rofi -dmenu -config ~/.config/rofi/config-zsh-theme.rasi" + +menu() { + for theme in "${themes_array[@]}"; do + echo "$theme" + done +} + +main() { + choice=$(menu | ${rofi_command}) + + # if nothing selected, script wont change anything + if [ -z "$choice" ]; then + exit 0 + fi + + zsh_path="$HOME/.zshrc" + var_name="ZSH_THEME" + for i in "${themes_array[@]}"; do + if [[ "$i" == "$choice"* ]]; then + if [ -f "$zsh_path" ]; then + sed -i "s/^$var_name=.*/$var_name=\"$i\"/" "$zsh_path" + else + echo "File not found" + fi + break + fi + done +} + +main diff --git a/config/rofi/config-zsh-theme.rasi b/config/rofi/config-zsh-theme.rasi new file mode 100644 index 0000000..d669ccf --- /dev/null +++ b/config/rofi/config-zsh-theme.rasi @@ -0,0 +1,218 @@ +/* ---- 💫 https://github.com/JaKooLit 💫 ---- */ +/* zsh theme switch */ +/* -- submitted by https://github.com/hyprhex -- */ + +/* ---- Configuration ---- */ +configuration { + modi: "drun,run"; + font: "Fira Code SemiBold 12"; + show-icons: true; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name}"; + hover-select: true; + me-select-entry: "MouseSecondary"; + me-accept-entry: "MousePrimary"; + window-format: "{w} · {c} · {t}"; + dpi: 1; + +} + +/* ---- Load pywal colors (custom wal template) ---- */ +@import "~/.config/rofi/pywal-color/pywal-theme.rasi" + +/* ---- Window ---- */ +window { + width: 800px; + /*height: 450px;*/ + x-offset: 0px; + y-offset: 0px; + spacing: 0px; + padding: 2px; + margin: 0px; + border: 2px; + border-color: @active-background; + cursor: "default"; + location: center; + anchor: center; + fullscreen: false; + enabled: true; + border-radius: 12px; + border-radius: 12px; + background-color: @background-color; +} + +/* ---- Mainbox ---- */ +mainbox { + enabled: true; + orientation: horizontal; + padding: 8px; + background-image: url("~/.config/rofi/.current_wallpaper", width); + children: [ "imagebox"]; + border-radius: 12px; + background-color: @background; +} + +/* ---- Imagebox ---- */ +imagebox { + background-color: transparent; + orientation: vertical; + children: [ "inputbar", "listbox"]; +} + +/* ---- Listbox ---- */ +listbox { + spacing: 4px; + orientation: vertical; + children: [ "listview" ]; + border-radius: 10px; + border: 1px; + border-color: @active-background; + background-color: @background; +} + +/* ---- Dummy ---- */ +dummy { + background-color: transparent; +} + +/* ---- Inputbar ---- */ +inputbar { + enabled: true; + text-color: @foreground; + spacing: 10px; + padding: 8px; + border-radius: 10px; + border-color: @foreground; + background-color: @background; + children: [ "textbox-prompt-colon", "entry" ]; + border: 1px; + border-color: @active-background; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + str: "󰸉 "; + text-color: inherit; + background-color: transparent; +} + +entry { + enabled: true; + text-color: inherit; + cursor: text; + placeholder: "Choose ZSH theme"; + placeholder-color: inherit; + background-color: transparent; +} + +/* ---- Listview ---- */ +listview { + enabled: true; + columns: 3; + lines: 5; + spacing: 4px; + dynamic: true; + cycle: true; + scrollbar: true; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: false; + background-color: transparent; + border-radius: 10px; +} + +/* ---- Element ---- */ +element { + enabled: true; + padding: 5px; + margin: 2px; + cursor: pointer; + background-color: transparent; + border-radius: 10px; + border: 0px; +} + +element normal.normal { + background-color: inherit; + text-color: @foreground; +} + +element normal.urgent { + background-color: inherit; + text-color: @foreground; +} + +element normal.active { + background-color: inherit; + text-color: @foreground; +} + +element selected.normal { + background-color: @selected-normal-background; + text-color: @foreground; +} + +element selected.urgent { + background-color: inherit; + text-color: @foreground; +} + +element selected.active { + background-color: inherit; + text-color: @foreground; +} + +element alternate.normal { + background-color: inherit; + text-color: @foreground; +} + +element alternate.urgent { + background-color: inherit; + text-color: @foreground; +} + +element alternate.active { + background-color: inherit; + text-color: @foreground; +} + +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} + +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: @background; + margin: 20px 0px 0px 0px; + border-radius: 10px; +} + +textbox { + padding: 15px; + background-color: @background; + text-color: @foreground; +} + +error-message { + padding: 15px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +}