diff --git a/.config/qtile/scripts/Default.sh b/.config/qtile/scripts/Default.sh new file mode 100755 index 0000000..152cb7a --- /dev/null +++ b/.config/qtile/scripts/Default.sh @@ -0,0 +1,308 @@ +#!/usr/bin/env bash + +## Copyright (C) 2020-2021 Aditya Shakya +## Everyone is permitted to copy and distribute copies of this file under GNU-GPL3 + +## Dirs ############################################# +qtile_path="$HOME/.config/qtile" +polybar_path="$HOME/.config/qtile/polybar" +rofi_path="$HOME/.config/qtile/rofi" +terminal_path="$HOME/.config/alacritty" +xfce_term_path="$HOME/.config/xfce4/terminal" +geany_path="$HOME/.config/geany" +dunst_path="$HOME/.config/dunst" + +# wallpaper --------------------------------- +set_wallpaper() { + nitrogen --save --set-zoom-fill /usr/share/backgrounds/"$1" +} + +# polybar ----------------------------------- +change_polybar() { + sed -i -e "s/STYLE=.*/STYLE=\"$1\"/g" ${polybar_path}/launch.sh + sed -i -e "s/font-0 = .*/font-0 = \"$2\"/g" ${polybar_path}/"$1"/config.ini +} + +# rofi -------------------------------------- +change_rofi() { + sed -i -e "s/STYLE=.*/STYLE=\"$1\"/g" ${rofi_path}/bin/music ${rofi_path}/bin/network ${rofi_path}/bin/screenshot ${rofi_path}/bin/runner + sed -i -e "s/DIR=.*/DIR=\"$1\"/g" ${rofi_path}/bin/launcher ${rofi_path}/bin/powermenu + sed -i -e 's/STYLE=.*/STYLE="launcher"/g' ${rofi_path}/bin/launcher + sed -i -e 's/STYLE=.*/STYLE="powermenu"/g' ${rofi_path}/bin/powermenu + sed -i -e "s/font:.*/font: \"$2\";/g" ${rofi_path}/"$1"/font.rasi + + sed -i -e "s/font:.*/font: \"$2\";/g" ${rofi_path}/dialogs/askpass.rasi ${rofi_path}/dialogs/confirm.rasi + sed -i -e "s/border:.*/border: $3;/g" ${rofi_path}/dialogs/askpass.rasi ${rofi_path}/dialogs/confirm.rasi + sed -i -e "s/border-radius:.*/border-radius: $4;/g" ${rofi_path}/dialogs/askpass.rasi ${rofi_path}/dialogs/confirm.rasi + + if [[ -f "$HOME"/.config/rofi/config.rasi ]]; then + sed -i -e "s/icon-theme:.*/icon-theme: \"$5\";/g" "$HOME"/.config/rofi/config.rasi + fi + + cat > ${rofi_path}/dialogs/colors.rasi <<- _EOF_ + /* Color-Scheme */ + + * { + BG: #282C33ff; + FG: #D8D8D8ff; + BDR: #62AEEFff; + } + _EOF_ +} + +# network manager --------------------------- +change_nm() { + sed -i -e "s#dmenu_command = .*#dmenu_command = rofi -dmenu -theme ~/.config/qtile/rofi/$1/networkmenu.rasi#g" "$HOME"/.config/networkmanager-dmenu/config.ini +} + +# terminal ---------------------------------- +change_terminal() { + sed -i -e "s/family: .*/family: \"$1\"/g" ${terminal_path}/fonts.yml + sed -i -e "s/size: .*/size: $2/g" ${terminal_path}/fonts.yml + + cat > ${terminal_path}/colors.yml <<- _EOF_ + ## Colors configuration + colors: + # Default colors + primary: + background: '#1E2128' + foreground: '#ABB2BF' + + # Normal colors + normal: + black: '#32363D' + red: '#E06B74' + green: '#98C379' + yellow: '#E5C07A' + blue: '#62AEEF' + magenta: '#C778DD' + cyan: '#55B6C2' + white: '#ABB2BF' + + # Bright colors + bright: + black: '#50545B' + red: '#EA757E' + green: '#A2CD83' + yellow: '#EFCA84' + blue: '#6CB8F9' + magenta: '#D282E7' + cyan: '#5FC0CC' + white: '#B5BCC9' + _EOF_ +} + +# xfce terminal ----------------------------- +change_xfce_terminal() { + sed -i -e "s/FontName=.*/FontName=$1/g" ${xfce_term_path}/terminalrc + sed -i -e 's/ColorForeground=.*/ColorForeground=#ababb2b2bfbf/g' ${xfce_term_path}/terminalrc + sed -i -e 's/ColorBackground=.*/ColorBackground=#1e1e21212828/g' ${xfce_term_path}/terminalrc + sed -i -e 's/ColorCursor=.*/ColorCursor=#ababb2b2bfbf/g' ${xfce_term_path}/terminalrc + sed -i -e 's/ColorPalette=.*/ColorPalette=#323236363d3d;#e0e06b6b7474;#9898c3c37979;#e5e5c0c07a7a;#6262aeaeefef;#c7c77878dddd;#5555b6b6c2c2;#ababb2b2bfbf;#505054545b5b;#eaea75757e7e;#a2a2cdcd8383;#efefcaca8484;#6c6cb8b8f9f9;#d2d28282e7e7;#5f5fc0c0cccc;#b5b5bcbcc9c9/g' ${xfce_term_path}/terminalrc +} + +# geany ------------------------------------- +change_geany() { + sed -i -e "s/color_scheme=.*/color_scheme=$1.conf/g" ${geany_path}/geany.conf + sed -i -e "s/editor_font=.*/editor_font=$2/g" ${geany_path}/geany.conf +} + +# gtk theme, icons and fonts ---------------- +change_appearance() { + xfconf-query -c xsettings -p /Net/ThemeName -s "$1" + xfconf-query -c xsettings -p /Net/IconThemeName -s "$2" + xfconf-query -c xsettings -p /Gtk/CursorThemeName -s "$3" + xfconf-query -c xsettings -p /Gtk/FontName -s "$4" + + if [[ -f "$HOME"/.icons/default/index.theme ]]; then + sed -i -e "s/Inherits=.*/Inherits=$3/g" "$HOME"/.icons/default/index.theme + fi +} + +# qtile ----------------------------------- +obconfig () { + namespace="http://qtile.org/3.4/rc" + config="$qtile_path/rc.xml" + theme="$1" + layout="$2" + font="$3" + fontsize="$4" + + # Theme + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:name' -v "$theme" "$config" + + # Title + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:titleLayout' -v "$layout" "$config" + + # Fonts + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="ActiveWindow"]/a:name' -v "$font" "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="ActiveWindow"]/a:size' -v "$fontsize" "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="ActiveWindow"]/a:weight' -v Bold "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="ActiveWindow"]/a:slant' -v Normal "$config" + + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="InactiveWindow"]/a:name' -v "$font" "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="InactiveWindow"]/a:size' -v "$fontsize" "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="InactiveWindow"]/a:weight' -v Normal "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="InactiveWindow"]/a:slant' -v Normal "$config" + + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="MenuHeader"]/a:name' -v "$font" "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="MenuHeader"]/a:size' -v "$fontsize" "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="MenuHeader"]/a:weight' -v Bold "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="MenuHeader"]/a:slant' -v Normal "$config" + + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="MenuItem"]/a:name' -v "$font" "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="MenuItem"]/a:size' -v "$fontsize" "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="MenuItem"]/a:weight' -v Normal "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="MenuItem"]/a:slant' -v Normal "$config" + + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="ActiveOnScreenDisplay"]/a:name' -v "$font" "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="ActiveOnScreenDisplay"]/a:size' -v "$fontsize" "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="ActiveOnScreenDisplay"]/a:weight' -v Bold "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="ActiveOnScreenDisplay"]/a:slant' -v Normal "$config" + + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="InactiveOnScreenDisplay"]/a:name' -v "$font" "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="InactiveOnScreenDisplay"]/a:size' -v "$fontsize" "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="InactiveOnScreenDisplay"]/a:weight' -v Normal "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:theme/a:font[@place="InactiveOnScreenDisplay"]/a:slant' -v Normal "$config" + + # qtile Menu Style + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:menu/a:file' -v "$5" "$config" + + # Margins + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:margins/a:top' -v 0 "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:margins/a:bottom' -v 10 "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:margins/a:left' -v 10 "$config" + xmlstarlet ed -L -N a="$namespace" -u '/a:qtile_config/a:margins/a:right' -v 10 "$config" +} + +# dunst ------------------------------------- +change_dunst() { + sed -i -e "s/geometry = .*/geometry = \"$1\"/g" ${dunst_path}/dunstrc + sed -i -e "s/font = .*/font = $2/g" ${dunst_path}/dunstrc + sed -i -e "s/frame_width = .*/frame_width = $3/g" ${dunst_path}/dunstrc + + sed -i '/urgency_low/Q' ${dunst_path}/dunstrc + cat >> ${dunst_path}/dunstrc <<- _EOF_ + [urgency_low] + timeout = 2 + background = "#282C33" + foreground = "#D8D8D8" + frame_color = "#30343B" + + [urgency_normal] + timeout = 5 + background = "#282C33" + foreground = "#D8D8D8" + frame_color = "#30343B" + + [urgency_critical] + timeout = 0 + background = "#282C33" + foreground = "#E06B74" + frame_color = "#30343B" + _EOF_ + + pkill dunst && dunst & +} + +# Plank ------------------------------------- +change_dock() { + cat > "$HOME"/.cache/plank.conf <<- _EOF_ + [dock1] + alignment='center' + auto-pinning=true + current-workspace-only=false + dock-items=['xfce-settings-manager.dockitem', 'Alacritty.dockitem', 'thunar.dockitem', 'firefox.dockitem', 'geany.dockitem'] + hide-delay=0 + hide-mode='intelligent' + icon-size=32 + items-alignment='center' + lock-items=false + monitor='' + offset=0 + pinned-only=false + position='bottom' + pressure-reveal=false + show-dock-item=false + theme='Transparent' + tooltips-enabled=true + unhide-delay=0 + zoom-enabled=true + zoom-percent=120 + _EOF_ +} + +# compositor -------------------------------- +compositor() { + comp_file="$HOME/.config/picom.conf" + + backend="$1" + cradius="$2" + shadow_r="$(echo $3 | cut -d' ' -f1)" + shadow_o="$(echo $3 | cut -d' ' -f2)" + shadow_x="$(echo $3 | cut -d' ' -f3)" + shadow_y="$(echo $3 | cut -d' ' -f4)" + method="$(echo $4 | cut -d' ' -f1)" + strength="$(echo $4 | cut -d' ' -f2)" + + # Rounded Corners + sed -i -e "s/backend = .*/backend = \"$backend\";/g" ${comp_file} + sed -i -e "s/corner-radius = .*/corner-radius = $cradius;/g" ${comp_file} + + # Shadows + sed -i -e "s/shadow-radius = .*/shadow-radius = $shadow_r;/g" ${comp_file} + sed -i -e "s/shadow-opacity = .*/shadow-opacity = $shadow_o;/g" ${comp_file} + sed -i -e "s/shadow-offset-x = .*/shadow-offset-x = $shadow_x;/g" ${comp_file} + sed -i -e "s/shadow-offset-y = .*/shadow-offset-y = $shadow_y;/g" ${comp_file} + + # Blur + sed -i -e "s/backend = .*/backend = \"$backend\";/g" ${comp_file} + sed -i -e "s/method = .*/method = \"$method\";/g" ${comp_file} + sed -i -e "s/strength = .*/strength = $strength;/g" ${comp_file} +} + +# notify ------------------------------------ +notify_user() { + local style=`basename $0` + dunstify -u normal --replace=699 -i /usr/share/archcraft/icons/dunst/themes.png "Applying Style : ${style%.*}" +} + +## Execute Script --------------------------- +notify_user + +# funct WALLPAPER +set_wallpaper 'default.jpg' + +# funct STYLE FONT +change_polybar 'default' 'JetBrains Mono:size=10;3' && "$polybar_path"/launch.sh +"$polybar_path"/launch.sh + +# funct STYLE FONT BORDER BORDER-RADIUS ICON (Change colors in funct) +change_rofi 'default' 'Iosevka 10' '0px 0px 2px 0px' '8px' 'Zafiro' + +# funct STYLE (network manager applet) +change_nm 'default' + +# funct FONT SIZE (Change colors in funct) +change_terminal 'JetBrainsMono Nerd Font' '10' + +# funct FONT (Change colors in funct) +change_xfce_terminal 'JetBrainsMono Nerd Font 10' + +# funct SCHEME FONT +change_geany 'arc' 'JetBrains Mono 10' + +# funct THEME ICON CURSOR FONT +change_appearance 'Arc-Dark' 'Zafiro' 'Qogirr' 'Noto Sans 9' + +# funct THEME LAYOUT FONT SIZE (Change margin in funct) +# obconfig 'Arc-Dark' 'DLIMC' 'JetBrains Mono' '9' 'menu-icons.xml' && qtile --reconfigure + +# funct GEOMETRY FONT BORDER (Change colors in funct) +change_dunst '280x50-10+48' 'JetBrains Mono 10' '6' + +# Paste settings in funct (PLANK) +change_dock && cat "$HOME"/.cache/plank.conf | dconf load /net/launchpad/plank/docks/ + +# Change compositor settings +#compositor 'glx' '6' '14 0.30 -12 -12' 'none 0'