Compare commits

..

9 Commits

Author SHA1 Message Date
Ryan Hughes
62f6882621 Fix quirks 2025-09-19 23:49:27 -04:00
Ryan Hughes
4e0431540d Make it faster 2025-09-19 23:18:21 -04:00
Ryan Hughes
86653b52d9 Update to actually work 2025-09-19 22:55:55 -04:00
Ryan Hughes
2197fdc216 Remove theme 2025-09-19 20:55:39 -04:00
Ryan Hughes
ff71701174 Fix plugin 2025-09-19 20:55:39 -04:00
David Heinemeier Hansson
00be806b46 Add migration for the new live themeing 2025-09-19 20:55:39 -04:00
Ryan Hughes
44127f6f24 Remove config 2025-09-19 20:55:39 -04:00
Ryan Hughes
1fa7a28faa Update nvim configs 2025-09-19 20:55:39 -04:00
Ryan Hughes
a634eac187 Add MVP variant of nvim switcher 2025-09-19 20:55:39 -04:00
23 changed files with 164 additions and 261 deletions

View File

@@ -47,7 +47,6 @@ install_node() {
case "$1" in
ruby)
echo -e "Installing Ruby on Rails...\n"
omarchy-pkg-add libyaml
mise use --global ruby@latest
mise settings add idiomatic_version_file_enable_tools ruby
mise x ruby -- gem install rails --no-document

View File

@@ -299,13 +299,10 @@ show_install_ai_menu() {
}
show_install_gaming_menu() {
case $(menu "Install" "Omarchy Gaming Helper\n Steam\n RetroArch [AUR]\n󰍳 Minecraft\n Heroic Launcher\n󰮂 Lutris") in
*Omarchy*) present_terminal omarchy-setup-gaming ;;
case $(menu "Install" " Steam\n RetroArch [AUR]\n󰍳 Minecraft") in
*Steam*) present_terminal omarchy-install-steam ;;
*RetroArch*) aur_install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;;
*Minecraft*) aur_install_and_launch "Minecraft [AUR]" "minecraft-launcher" "minecraft-launcher" ;;
*Heroic*) aur_install_and_launch "Heroic Launcher" "heroic-games-launcher-bin" "heroic" ;;
*Lutris*) aur_install_and_launch "Lutris" "lutris" "lutris" ;;
*) show_install_menu ;;
esac
}

View File

@@ -1,27 +0,0 @@
#!/bin/bash
yay -S --noconfirm gamescope proton-ge-custom-bin
mkdir -p ~/.config/systemd/user/
cat > ~/.config/systemd/user/omarchy-gaming-helper.service << EOF
[Unit]
Description=Omarchy Gaming Helper
After=graphical-session.target
[Service]
Type=simple
ExecStart=$OMARCHY_PATH/default/hypr/scripts/omarchy-gaming-helper.sh
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable omarchy-gaming-helper.service
systemctl --user start omarchy-gaming-helper.service
echo "Omarchy Gaming Helper service has been installed and started."

View File

@@ -12,7 +12,7 @@ window-padding-y = 14
confirm-close-surface=false
resize-overlay = never
# Cursor styling
# Cursor stlying
cursor-style = "block"
cursor-style-blink = false
shell-integration-features = no-cursor

View File

@@ -0,0 +1,56 @@
return {
-- Load all theme plugins but don't apply them
-- This ensures all colorschemes are available for hot-reloading
{
"ribru17/bamboo.nvim",
lazy = true,
priority = 1000,
},
{
"catppuccin/nvim",
name = "catppuccin",
lazy = true,
priority = 1000,
},
{
"sainnhe/everforest",
lazy = true,
priority = 1000,
},
{
"ellisonleao/gruvbox.nvim",
lazy = true,
priority = 1000,
},
{
"rebelot/kanagawa.nvim",
lazy = true,
priority = 1000,
},
{
"tahayvr/matteblack.nvim",
lazy = true,
priority = 1000,
},
{
"loctvl842/monokai-pro.nvim",
lazy = true,
priority = 1000,
},
{
"shaunsingh/nord.nvim",
lazy = true,
priority = 1000,
},
{
"rose-pine/neovim",
name = "rose-pine",
lazy = true,
priority = 1000,
},
{
"folke/tokyonight.nvim",
lazy = true,
priority = 1000,
},
}

View File

@@ -0,0 +1,45 @@
return {
{
name = "theme-hotreload",
dir = vim.fn.stdpath("config"),
lazy = false,
priority = 1000,
config = function()
local transparency_file = vim.fn.stdpath("config") .. "/plugin/after/transparency.lua"
vim.api.nvim_create_autocmd("User", {
pattern = "LazyReload",
callback = function()
package.loaded["plugins.theme"] = nil
vim.schedule(function()
local ok, theme_spec = pcall(require, "plugins.theme")
if not ok then
return
end
for _, spec in ipairs(theme_spec) do
if spec[1] == "LazyVim/LazyVim" and spec.opts and spec.opts.colorscheme then
local colorscheme = spec.opts.colorscheme
require("lazy.core.loader").colorscheme(colorscheme)
vim.defer_fn(function()
pcall(vim.cmd.colorscheme, colorscheme)
if vim.fn.filereadable(transparency_file) == 1 then
vim.defer_fn(function()
vim.cmd.source(transparency_file)
end, 5)
end
end, 5)
break
end
end
end)
end,
})
end,
},
}

View File

@@ -1,8 +0,0 @@
return {
{
"LazyVim/LazyVim",
opts = {
colorscheme = "tokyonight",
},
},
}

View File

@@ -7,6 +7,8 @@ source = ~/.local/share/omarchy/default/hypr/apps/jetbrains.conf
source = ~/.local/share/omarchy/default/hypr/apps/localsend.conf
source = ~/.local/share/omarchy/default/hypr/apps/pip.conf
source = ~/.local/share/omarchy/default/hypr/apps/qemu.conf
source = ~/.local/share/omarchy/default/hypr/apps/retroarch.conf
source = ~/.local/share/omarchy/default/hypr/apps/steam.conf
source = ~/.local/share/omarchy/default/hypr/apps/system.conf
source = ~/.local/share/omarchy/default/hypr/apps/terminals.conf
source = ~/.local/share/omarchy/default/hypr/apps/walker.conf

View File

@@ -1,6 +1,6 @@
# Float Steam, fullscreen RetroArch
# windowrule = float, class:steam
# windowrule = center, class:steam, title:Steam
windowrule = float, class:steam
windowrule = center, class:steam, title:Steam
windowrule = opacity 1 1, class:steam
windowrule = size 1100 700, class:steam, title:Steam
windowrule = size 460 800, class:steam, title:Friends List

View File

@@ -1,5 +0,0 @@
# Gaming-specific tweaks
source = ~/.local/share/omarchy/default/hypr/gaming/general-gaming.conf
source = ~/.local/share/omarchy/default/hypr/gaming/blizzard.conf
source = ~/.local/share/omarchy/default/hypr/gaming/retroarch.conf
source = ~/.local/share/omarchy/default/hypr/gaming/steam.conf

View File

@@ -1,6 +0,0 @@
windowrule = tag +game, title:Hearthstone
windowrule = tag +game, title:Overwatch
windowrule = tag +game, title:.*Warcraft.*
windowrule = tag -game, title:Battle.net.*
windowrule = tag +game-launcher, title:Battle.net.*

View File

@@ -1,20 +0,0 @@
windowrule = float, tag:game-launcher
windowrule = center, tag:game-launcher
windowrule = size 60% 60%, tag:game-launcher
windowrule = immediate, tag:game
windowrule = idleinhibit fullscreen, tag:game
windowrule = opacity 1 1, tag:game
windowrule = noshadow, tag:game
windowrule = noborder, tag:game
windowrule = noblur, tag:game
windowrule = noborder, class:Xdg-desktop-portal-gtk
windowrule = noblur, class:Xdg-desktop-portal-gtk
windowrule = noshadow, class:Xdg-desktop-portal-gtk
windowrule = tag +game, class:(steam_app.*|lutris|heroic|gamescope)
# Fix positioning for steam games
# windowrule = center, class:steam_app.*
# windowrule = stayfocused, class:steam_app.*

View File

@@ -1,143 +0,0 @@
#!/bin/bash
# Gaming Helper for Hyprland
# Runs as a service in the background to perform tasks that can't be accomplished with only
# hyprland rules
# Usage: omarchy-gaming-helper.sh [--debug]
DEBUG_MODE=0
[[ "$1" == "--debug" ]] && DEBUG_MODE=1
# Track if we have active games
GAMES_ACTIVE=0
log_debug() {
[[ $DEBUG_MODE -eq 1 ]] && gum log --level debug "$@"
}
log_info() {
gum log --level info "$@"
}
# Monitor Management
apply_gaming_scale() {
log_info "Applying integer scaling for gaming"
# Get all monitors and apply integer scaling
hyprctl monitors -j | jq -r '.[] | "\(.name) \(.width) \(.height) \(.refreshRate) \(.x) \(.y) \(.scale)"' | \
while read -r name width height refresh x y scale; do
# Round scale to nearest integer
integer_scale=$(awk "BEGIN {printf \"%.0f\", $scale}")
log_info "Setting $name from scale $scale to $integer_scale"
hyprctl keyword monitor "$name,${width}x${height}@${refresh},${x}x${y},$integer_scale"
done
}
restore_monitor_settings() {
log_info "Restoring monitor settings"
hyprctl reload
}
# Game Detection
is_steam_game() {
local class="$1"
[[ "$class" == steam_app_* ]]
}
count_active_games() {
hyprctl clients -j | jq -r '[.[] | select(.class | startswith("steam_app_"))] | length'
}
# Event Handlers
handle_window_open() {
local event="$1"
# Parse: openwindow>>address,workspace,class,title
IFS=',' read -r address workspace class title <<< "${event#openwindow>>}"
if is_steam_game "$class"; then
log_info "Steam game opened: $title ($class)"
# Apply scaling on first game
if [[ $GAMES_ACTIVE -eq 0 ]]; then
apply_gaming_scale
fi
GAMES_ACTIVE=$((GAMES_ACTIVE + 1))
# Apply fullscreen
hyprctl dispatch fullscreenstate 2 2 "address:$address"
fi
}
handle_title_change() {
local event="$1"
# Parse: windowtitlev2>>address,title
IFS=',' read -r address title <<< "${event#windowtitlev2>>}"
address="${address#0x}"
# Get window class and tags
local window_info=$(hyprctl clients -j | jq -r --arg addr "0x$address" \
'.[] | select(.address == $addr) | "\(.class) \(.tags)"')
if [[ -z "$window_info" ]]; then
return
fi
read -r class tags <<< "$window_info"
# Handle gamescope windows (Battle.net, etc)
if [[ "$class" == "gamescope" ]]; then
if [[ "$tags" == *"game"* ]] && [[ "$tags" != *"game-launcher"* ]]; then
log_info "Gamescope game detected: $title"
hyprctl dispatch fullscreenstate 2 2 "address:0x$address"
elif [[ "$tags" == *"game-launcher"* ]]; then
log_info "Gamescope launcher detected: $title"
hyprctl dispatch fullscreenstate 0 0 "address:0x$address"
fi
fi
}
handle_window_close() {
local event="$1"
local address="${event#closewindow>>}"
# Count remaining games
local remaining_games=$(count_active_games)
log_debug "Window closed, remaining games: $remaining_games"
# Restore settings when last game closes
if [[ "$remaining_games" -eq 0 ]] && [[ $GAMES_ACTIVE -gt 0 ]]; then
log_info "No games remain, restoring settings"
restore_monitor_settings
GAMES_ACTIVE=0
else
GAMES_ACTIVE="$remaining_games"
fi
}
# Main Event Loop
main() {
log_info "Gaming helper started (debug=$DEBUG_MODE)"
socat -U - UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock | \
while read -r event; do
log_debug "Event: ${event:0:80}..."
case "$event" in
openwindow*)
handle_window_open "$event"
;;
windowtitlev2*)
handle_title_change "$event"
;;
closewindow*)
handle_window_close "$event"
;;
esac
done
}
# Start
main

View File

@@ -9,4 +9,3 @@ windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned
# App-specific tweaks
source = ~/.local/share/omarchy/default/hypr/apps.conf
source = ~/.local/share/omarchy/default/hypr/gaming.conf

14
install/iso.sh Normal file
View File

@@ -0,0 +1,14 @@
# Called by Omarchy ISO setup before starting configurator and archinstall
source "$OMARCHY_INSTALL/preflight/set-size-vars.sh"
source "$OMARCHY_INSTALL/helpers/logo.sh"
source "$OMARCHY_INSTALL/preflight/gum.sh"
source "$OMARCHY_INSTALL/helpers/tail-log-output.sh"
source "$OMARCHY_INSTALL/helpers/trap-errors.sh"
source $OMARCHY_INSTALL/helpers/chroot.sh
source $OMARCHY_INSTALL/helpers/logo.sh
source $OMARCHY_INSTALL/helpers/gum.sh
source $OMARCHY_INSTALL/helpers/errors.sh
source $OMARCHY_INSTALL/helpers/logging.sh
source $OMARCHY_INSTALL/helpers/layout.sh

4
migrations/1758081785.sh Normal file
View File

@@ -0,0 +1,4 @@
echo "Add live themeing to neovim"
cp -f $OMARCHY_PATH/config/nvim/lua/plugins/all-themes.lua ~/.config/nvim/lua/plugins/
cp -f $OMARCHY_PATH/config/nvim/lua/plugins/omarchy-theme-hotreload.lua ~/.config/nvim/lua/plugins/

3
migrations/1758318253.sh Normal file
View File

@@ -0,0 +1,3 @@
echo "Ensure libyaml is available for installing Ruby"
omarchy-pkg-add libyaml

View File

@@ -3,12 +3,9 @@ return {
"catppuccin/nvim",
name = "catppuccin",
priority = 1000,
config = function()
require("catppuccin").setup({
flavour = "latte", -- other options: "mocha", "frappe", "macchiato"
})
vim.cmd.colorscheme("catppuccin-latte")
end,
opts = {
flavour = "latte",
},
},
{
"LazyVim/LazyVim",

View File

@@ -1,4 +1,9 @@
return {
{
"catppuccin/nvim",
name = "catppuccin",
priority = 1000,
},
{
"LazyVim/LazyVim",
opts = {

View File

@@ -1,9 +1,13 @@
return {
"ribru17/bamboo.nvim",
lazy = false,
priority = 1000,
config = function()
require("bamboo").setup({})
require("bamboo").load()
end,
{
"ribru17/bamboo.nvim",
priority = 1000,
opts = {},
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "bamboo",
},
},
}

View File

@@ -1,31 +1,14 @@
return {
{
"gthelding/monokai-pro.nvim",
config = function()
require("monokai-pro").setup({
filter = "ristretto",
override = function()
return {
NonText = { fg = "#948a8b" },
MiniIconsGrey = { fg = "#948a8b" },
MiniIconsRed = { fg = "#fd6883" },
MiniIconsBlue = { fg = "#85dacc" },
MiniIconsGreen = { fg = "#adda78" },
MiniIconsYellow = { fg = "#f9cc6c" },
MiniIconsOrange = { fg = "#f38d70" },
MiniIconsPurple = { fg = "#a8a9eb" },
MiniIconsAzure = { fg = "#a8a9eb" },
MiniIconsCyan = { fg = "#85dacc" }, -- same value as MiniIconsBlue for consistency
}
end,
})
vim.cmd([[colorscheme monokai-pro]])
end,
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "monokai-pro",
},
},
{
"loctvl842/monokai-pro.nvim",
opts = {
filter = "ristretto",
},
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "monokai-pro",
},
},
}

View File

@@ -1,8 +1,12 @@
return {
{
"folke/tokyonight.nvim",
priority = 1000,
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "tokyonight",
colorscheme = "tokyonight-night",
},
},
}