mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-01 20:28:16 +02:00
93 lines
3.3 KiB
Bash
93 lines
3.3 KiB
Bash
echo "Migrate Hyprland user config from Omarchy hyprlang files to Lua files"
|
|
|
|
hypr_config_dir="$HOME/.config/hypr"
|
|
omarchy_hypr_config_dir="$OMARCHY_PATH/config/hypr"
|
|
toggle_state_dir="$HOME/.local/state/omarchy/toggles/hypr"
|
|
toggle_defaults_dir="$OMARCHY_PATH/default/hypr/toggles"
|
|
timestamp=$(date +%s)
|
|
|
|
lua_escape() {
|
|
local value="$1"
|
|
value="${value//\\/\\\\}"
|
|
value="${value//\"/\\\"}"
|
|
printf '%s' "$value"
|
|
}
|
|
|
|
mkdir -p "$hypr_config_dir" "$toggle_state_dir"
|
|
|
|
for lua_config in "$omarchy_hypr_config_dir"/*.lua "$omarchy_hypr_config_dir"/.luarc.json; do
|
|
if [[ -f $lua_config ]]; then
|
|
cp -f "$lua_config" "$hypr_config_dir/"
|
|
fi
|
|
done
|
|
|
|
for config_name in autostart bindings hyprland input looknfeel monitors; do
|
|
conf_file="$hypr_config_dir/$config_name.conf"
|
|
|
|
if [[ -f $conf_file ]]; then
|
|
mv "$conf_file" "$conf_file.bak.$timestamp"
|
|
fi
|
|
done
|
|
|
|
for conf_toggle in "$toggle_state_dir"/*.conf; do
|
|
[[ -f $conf_toggle ]] || continue
|
|
|
|
toggle_name=$(basename "$conf_toggle" .conf)
|
|
lua_toggle="$toggle_state_dir/$toggle_name.lua"
|
|
|
|
if [[ ! -f $lua_toggle ]]; then
|
|
case "$toggle_name" in
|
|
flags | single-window-aspect-ratio | window-no-gaps)
|
|
if [[ -f $toggle_defaults_dir/$toggle_name.lua ]]; then
|
|
cp -f "$toggle_defaults_dir/$toggle_name.lua" "$lua_toggle"
|
|
fi
|
|
;;
|
|
internal-monitor-disable)
|
|
monitor=$(sed -nE 's/^monitor=([^,]+),disable.*$/\1/p' "$conf_toggle" | head -n 1)
|
|
if [[ -n $monitor ]]; then
|
|
printf 'hl.monitor({ output = "%s", disabled = true })\n' "$(lua_escape "$monitor")" >"$lua_toggle"
|
|
fi
|
|
;;
|
|
internal-monitor-mirror)
|
|
monitor_line=$(grep -E '^monitor=' "$conf_toggle" | head -n 1)
|
|
external=$(printf '%s' "$monitor_line" | cut -d, -f1 | sed 's/^monitor=//')
|
|
internal=$(printf '%s' "$monitor_line" | awk -F',[[:space:]]*mirror,[[:space:]]*' '{ print $2 }')
|
|
if [[ -n $external && -n $internal ]]; then
|
|
printf 'hl.monitor({ output = "%s", mode = "preferred", position = "auto", scale = 1, mirror = "%s" })\n' "$(lua_escape "$external")" "$(lua_escape "$internal")" >"$lua_toggle"
|
|
fi
|
|
;;
|
|
touchpad-disabled | touchscreen-disabled)
|
|
device=$(sed -nE 's/^[[:space:]]*name[[:space:]]*=[[:space:]]*(.*)$/\1/p' "$conf_toggle" | head -n 1)
|
|
if [[ -n $device ]]; then
|
|
printf 'hl.device({ name = "%s", enabled = false })\n' "$(lua_escape "$device")" >"$lua_toggle"
|
|
fi
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
mv "$conf_toggle" "$conf_toggle.bak.$timestamp"
|
|
done
|
|
|
|
sddm_hypr_conf="/usr/share/sddm/hyprland.conf"
|
|
sddm_hypr_lua="/usr/share/sddm/hyprland.lua"
|
|
sddm_wayland_conf="/etc/sddm.conf.d/10-wayland.conf"
|
|
|
|
if [[ -f $sddm_hypr_conf || -f $sddm_wayland_conf ]]; then
|
|
if [[ -f $OMARCHY_PATH/default/sddm/hyprland.lua ]]; then
|
|
sudo mkdir -p /usr/share/sddm
|
|
sudo cp "$OMARCHY_PATH/default/sddm/hyprland.lua" "$sddm_hypr_lua"
|
|
fi
|
|
|
|
if [[ -f $sddm_wayland_conf ]]; then
|
|
sudo sed -i 's|/usr/share/sddm/hyprland\.conf|/usr/share/sddm/hyprland.lua|g' "$sddm_wayland_conf"
|
|
fi
|
|
|
|
if [[ -f $sddm_hypr_conf ]]; then
|
|
sudo mv "$sddm_hypr_conf" "$sddm_hypr_conf.bak.$timestamp"
|
|
fi
|
|
fi
|
|
|
|
omarchy-state set reboot-required
|
|
|
|
echo "Hyprland must be restarted to switch from hyprland.conf to hyprland.lua. Log out and back in, or reboot when ready."
|