mirror of
https://github.com/basecamp/omarchy.git
synced 2026-02-17 15:25:37 +00:00
Compare commits
1 Commits
gaming-imp
...
hey-defaul
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
920e85d97b |
@@ -47,7 +47,6 @@ install_node() {
|
|||||||
case "$1" in
|
case "$1" in
|
||||||
ruby)
|
ruby)
|
||||||
echo -e "Installing Ruby on Rails...\n"
|
echo -e "Installing Ruby on Rails...\n"
|
||||||
omarchy-pkg-add libyaml
|
|
||||||
mise use --global ruby@latest
|
mise use --global ruby@latest
|
||||||
mise settings add idiomatic_version_file_enable_tools ruby
|
mise settings add idiomatic_version_file_enable_tools ruby
|
||||||
mise x ruby -- gem install rails --no-document
|
mise x ruby -- gem install rails --no-document
|
||||||
|
|||||||
@@ -299,13 +299,10 @@ show_install_ai_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_install_gaming_menu() {
|
show_install_gaming_menu() {
|
||||||
case $(menu "Install" "Omarchy Gaming Helper\n Steam\n RetroArch [AUR]\n Minecraft\n Heroic Launcher\n Lutris") in
|
case $(menu "Install" " Steam\n RetroArch [AUR]\n Minecraft") in
|
||||||
*Omarchy*) present_terminal omarchy-setup-gaming ;;
|
|
||||||
*Steam*) present_terminal omarchy-install-steam ;;
|
*Steam*) present_terminal omarchy-install-steam ;;
|
||||||
*RetroArch*) aur_install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;;
|
*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" ;;
|
*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 ;;
|
*) show_install_menu ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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."
|
|
||||||
11
bin/omarchy-webapp-handler-hey
Executable file
11
bin/omarchy-webapp-handler-hey
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
url="$1"
|
||||||
|
web_url="https://app.hey.com"
|
||||||
|
|
||||||
|
# Handle mailto: URLs
|
||||||
|
if [[ $url =~ ^mailto: ]]; then
|
||||||
|
email=$(echo "$url" | sed 's/mailto://')
|
||||||
|
web_url="https://app.hey.com/messages/new?to=$email"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec omarchy-launch-webapp "$web_url"
|
||||||
@@ -12,7 +12,7 @@ window-padding-y = 14
|
|||||||
confirm-close-surface=false
|
confirm-close-surface=false
|
||||||
resize-overlay = never
|
resize-overlay = never
|
||||||
|
|
||||||
# Cursor styling
|
# Cursor stlying
|
||||||
cursor-style = "block"
|
cursor-style = "block"
|
||||||
cursor-style-blink = false
|
cursor-style-blink = false
|
||||||
shell-integration-features = no-cursor
|
shell-integration-features = no-cursor
|
||||||
|
|||||||
@@ -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/localsend.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/pip.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/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/system.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/terminals.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/terminals.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/walker.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/walker.conf
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Float Steam, fullscreen RetroArch
|
# Float Steam, fullscreen RetroArch
|
||||||
# windowrule = float, class:steam
|
windowrule = float, class:steam
|
||||||
# windowrule = center, class:steam, title:Steam
|
windowrule = center, class:steam, title:Steam
|
||||||
windowrule = opacity 1 1, class:steam
|
windowrule = opacity 1 1, class:steam
|
||||||
windowrule = size 1100 700, class:steam, title:Steam
|
windowrule = size 1100 700, class:steam, title:Steam
|
||||||
windowrule = size 460 800, class:steam, title:Friends List
|
windowrule = size 460 800, class:steam, title:Friends List
|
||||||
@@ -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
|
|
||||||
@@ -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.*
|
|
||||||
@@ -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.*
|
|
||||||
@@ -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
|
|
||||||
@@ -9,4 +9,3 @@ windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned
|
|||||||
|
|
||||||
# App-specific tweaks
|
# App-specific tweaks
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps.conf
|
source = ~/.local/share/omarchy/default/hypr/apps.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/gaming.conf
|
|
||||||
|
|||||||
@@ -33,3 +33,6 @@ xdg-mime default mpv.desktop video/x-ms-asf
|
|||||||
xdg-mime default mpv.desktop video/x-ogm+ogg
|
xdg-mime default mpv.desktop video/x-ogm+ogg
|
||||||
xdg-mime default mpv.desktop video/x-theora+ogg
|
xdg-mime default mpv.desktop video/x-theora+ogg
|
||||||
xdg-mime default mpv.desktop application/ogg
|
xdg-mime default mpv.desktop application/ogg
|
||||||
|
|
||||||
|
# Use Hey for mailto: links
|
||||||
|
xdg-mime default HEY.desktop x-scheme-handler/mailto
|
||||||
|
|||||||
14
install/iso.sh
Normal file
14
install/iso.sh
Normal 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
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
omarchy-webapp-install "HEY" https://app.hey.com HEY.png
|
omarchy-webapp-install "HEY" https://app.hey.com HEY.png "omarchy-webapp-handler-hey %u" "x-scheme-handler/mailto"
|
||||||
omarchy-webapp-install "Basecamp" https://launchpad.37signals.com Basecamp.png
|
omarchy-webapp-install "Basecamp" https://launchpad.37signals.com Basecamp.png
|
||||||
omarchy-webapp-install "WhatsApp" https://web.whatsapp.com/ WhatsApp.png
|
omarchy-webapp-install "WhatsApp" https://web.whatsapp.com/ WhatsApp.png
|
||||||
omarchy-webapp-install "Google Photos" https://photos.google.com/ "Google Photos.png"
|
omarchy-webapp-install "Google Photos" https://photos.google.com/ "Google Photos.png"
|
||||||
|
|||||||
3
migrations/1758318253.sh
Normal file
3
migrations/1758318253.sh
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
echo "Ensure libyaml is available for installing Ruby"
|
||||||
|
|
||||||
|
omarchy-pkg-add libyaml
|
||||||
Reference in New Issue
Block a user