From 3f4ec09e0a6fdf2516e86e02c1bc70a8dd6e566f Mon Sep 17 00:00:00 2001 From: Javier Feliz Date: Thu, 7 Aug 2025 19:05:09 -0400 Subject: [PATCH] Let's try it --- base_install.sh | 28 +++++- config/hyprland.conf | 183 +++++++++++++++++++++++++++++++++++++ scripts/config/nvidia.sh | 3 - scripts/desktop/desktop.sh | 2 +- scripts/mimetypes.sh | 6 +- scripts/neovim.sh | 32 +++++++ 6 files changed, 244 insertions(+), 10 deletions(-) create mode 100644 config/hyprland.conf create mode 100755 scripts/neovim.sh diff --git a/base_install.sh b/base_install.sh index 08ac6de..b57dccd 100644 --- a/base_install.sh +++ b/base_install.sh @@ -10,6 +10,11 @@ SCRIPTS_DIR="$SCRIPT_DIR/scripts" echo "Starting Arch Hyprland Setup..." +# Make all scripts executable +echo "Making scripts executable..." +find "$SCRIPTS_DIR" -name "*.sh" -type f -exec chmod +x {} \; +echo "✓ All scripts are now executable" + # Function to run a script and check for errors run_script() { local script="$1" @@ -17,7 +22,6 @@ run_script() { if [[ -f "$script" ]]; then echo "Running $name..." - chmod +x "$script" bash "$script" echo " $name completed" else @@ -37,7 +41,25 @@ run_script "$SCRIPTS_DIR/config/power.sh" "Power management" run_script "$SCRIPTS_DIR/config/fix-fkeys.sh" "Function keys configuration" run_script "$SCRIPTS_DIR/config/config.sh" "General system configuration" -# Step 3: Desktop environment +# Step 3: Copy configuration files +echo "Copying configuration files..." +CONFIG_DIR="$SCRIPT_DIR/config" +if [[ -d "$CONFIG_DIR" ]]; then + # Create config directories if they don't exist + mkdir -p "$HOME/.config/hypr" + + # Copy hyprland.conf to ~/.config/hypr/ + if [[ -f "$CONFIG_DIR/hyprland.conf" ]]; then + cp "$CONFIG_DIR/hyprland.conf" "$HOME/.config/hypr/hyprland.conf" + echo "✓ Hyprland configuration copied" + fi + + echo "✓ Configuration files copied" +else + echo "⚠ Warning: Config directory not found at $CONFIG_DIR" +fi + +# Step 4: Desktop environment echo "Installing desktop environment..." run_script "$SCRIPTS_DIR/desktop/fonts.sh" "Font installation" run_script "$SCRIPTS_DIR/desktop/hyprlandia.sh" "Hyprland installation" @@ -46,7 +68,7 @@ run_script "$SCRIPTS_DIR/desktop/desktop.sh" "Desktop applications" run_script "$SCRIPTS_DIR/desktop/bluetooth.sh" "Bluetooth setup" run_script "$SCRIPTS_DIR/desktop/theme.sh" "Theme configuration" -# Step 4: Additional software and configurations +# Step 5: Additional software and configurations echo "Installing additional software..." run_script "$SCRIPTS_DIR/development.sh" "Development tools" run_script "$SCRIPTS_DIR/firewall.sh" "Firewall configuration" diff --git a/config/hyprland.conf b/config/hyprland.conf new file mode 100644 index 0000000..08d6d76 --- /dev/null +++ b/config/hyprland.conf @@ -0,0 +1,183 @@ +# Hyprland Default Configuration +# ================================= + +# Monitor configuration +monitor=,preferred,auto,auto + +# Execute applications at launch +exec-once = waybar +exec-once = mako +# exec-once = swaybg -i ~/.config/omarchy/current/background -m fill +# exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 +exec-once = hypridle + +# Environment variables +env = XCURSOR_SIZE,24 +env = HYPRCURSOR_SIZE,24 + +# Look and feel +general { + gaps_in = 5 + gaps_out = 10 + border_size = 2 + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + resize_on_border = false + allow_tearing = false + layout = dwindle +} + +decoration { + rounding = 10 + active_opacity = 1.0 + inactive_opacity = 1.0 + drop_shadow = true + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) + + blur { + enabled = true + size = 3 + passes = 1 + vibrancy = 0.1696 + } +} + +animations { + enabled = true + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +dwindle { + pseudotile = true + preserve_split = true +} + +master { + new_status = master +} + +misc { + force_default_wallpaper = -1 + disable_hyprland_logo = false +} + +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + follow_mouse = 1 + sensitivity = 0 + + touchpad { + natural_scroll = false + } +} + +gestures { + workspace_swipe = false +} + +device { + name = epic-mouse-v1 + sensitivity = -0.5 +} + +# Window rules +windowrulev2 = suppressevent maximize, class:.* + +# Keybindings +# =========== + +# Main modifier key +$mainMod = SUPER +$terminal = kitty +$browser = brave-browser --new-window +$filebrowser = nautilus + +# Application shortcuts +bind = $mainMod, Q, exec, $terminal +bind = $mainMod SHIFT, O, exec, $browser +bind = $mainMod, E, exec, filebrowser +bind = $mainMod, R, exec, walker +bind = $mainMod SHIFT, S, exec, hyprshot -m region + +# Window management +bind = $mainMod, C, killactive, +bind = $mainMod, M, exit, +bind = $mainMod, V, togglefloating, +bind = $mainMod, P, pseudo, +bind = $mainMod, J, togglesplit, + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Move focus with mainMod + hjkl (vim-like) +bind = $mainMod, h, movefocus, l +bind = $mainMod, l, movefocus, r +bind = $mainMod, k, movefocus, u +bind = $mainMod, j, movefocus, d + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Example special workspace (scratchpad) +bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Media keys +bind = , XF86AudioRaiseVolume, exec, pamixer -i 5 +bind = , XF86AudioLowerVolume, exec, pamixer -d 5 +bind = , XF86AudioMute, exec, pamixer --toggle-mute +bind = , XF86AudioPlay, exec, playerctl play-pause +bind = , XF86AudioPause, exec, playerctl play-pause +bind = , XF86AudioNext, exec, playerctl next +bind = , XF86AudioPrev, exec, playerctl previous + +# Brightness keys +bind = , XF86MonBrightnessUp, exec, brightnessctl set +5% +bind = , XF86MonBrightnessDown, exec, brightnessctl set 5%- + +# Lock screen +bind = $mainMod, L, exec, hyprlock \ No newline at end of file diff --git a/scripts/config/nvidia.sh b/scripts/config/nvidia.sh index e3a475a..3385e04 100644 --- a/scripts/config/nvidia.sh +++ b/scripts/config/nvidia.sh @@ -12,9 +12,6 @@ # --- GPU Detection --- if [ -n "$(lspci | grep -i 'nvidia')" ]; then - show_logo - show_subtext "Install NVIDIA drivers..." - # --- Driver Selection --- # Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules if echo "$(lspci | grep -i 'nvidia')" | grep -q -E "RTX [2-9][0-9]|GTX 16"; then diff --git a/scripts/desktop/desktop.sh b/scripts/desktop/desktop.sh index 626b6c2..4afbdd3 100644 --- a/scripts/desktop/desktop.sh +++ b/scripts/desktop/desktop.sh @@ -6,7 +6,7 @@ yay -S --noconfirm --needed \ nautilus sushi ffmpegthumbnailer gvfs-mtp \ slurp satty \ mpv evince imv \ - chromium + brave-bin # Add screen recorder based on GPU if lspci | grep -qi 'nvidia'; then diff --git a/scripts/mimetypes.sh b/scripts/mimetypes.sh index 91c6a6e..800611f 100644 --- a/scripts/mimetypes.sh +++ b/scripts/mimetypes.sh @@ -15,10 +15,10 @@ xdg-mime default imv.desktop image/tiff # Open PDFs with the Document Viewer xdg-mime default org.gnome.Evince.desktop application/pdf -# Use Chromium as the default browser +# Use Brave as the default browser xdg-settings set default-web-browser brave.desktop -xdg-mime default chromium.desktop x-scheme-handler/http -xdg-mime default chromium.desktop x-scheme-handler/https +xdg-mime default brave.desktop x-scheme-handler/http +xdg-mime default brave.desktop x-scheme-handler/https # Open video files with mpv xdg-mime default mpv.desktop video/mp4 diff --git a/scripts/neovim.sh b/scripts/neovim.sh new file mode 100755 index 0000000..8e8d25e --- /dev/null +++ b/scripts/neovim.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# Neovim Installation Script +# Installs Neovim and essential dependencies + +# Install Neovim from official repositories +yay -S --noconfirm --needed neovim + +# Install Node.js and npm for Neovim plugins that require it +yay -S --noconfirm --needed nodejs npm + +# Install Python and pip for Python-based plugins +yay -S --noconfirm --needed python python-pip python-pynvim + +# Install clipboard utilities for system clipboard integration +yay -S --noconfirm --needed wl-clipboard xclip + +# Install ripgrep, fd, and other search tools commonly used by Neovim plugins +yay -S --noconfirm --needed ripgrep fd + +# Install tree-sitter for syntax highlighting +yay -S --noconfirm --needed tree-sitter + +# Install language servers for common languages +yay -S --noconfirm --needed \ + lua-language-server \ + bash-language-server \ + typescript-language-server + +echo "✓ Neovim and essential dependencies installed successfully!" +echo " You can now run 'nvim' to start Neovim" +echo " Consider installing a Neovim configuration like LazyVim or AstroNvim for enhanced functionality" \ No newline at end of file