Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions app/configuration/configure-gnome.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
if [[ ! $(get_window_manager) == "gnome" ]] ; then
status "GNOME is not the current window manager. Skipping..."
return
fi

setup_gnome=$(gum confirm "Do you want to configure GNOME and extensions?" --affirmative "Yes" --negative "No" --default=false && echo "true" || echo "false")

if [[ $setup_gnome == "true" ]]; then
Expand Down
45 changes: 45 additions & 0 deletions app/configuration/select-window-manager
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/bin/bash
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moet dit bestand een extensie .sh hebben?

set -e

current_window_manager=$(get_window_manager)

status "Current window manager: $current_window_manager"

SELECTED_WINDOW_MANAGER=$(gum choose "gnome" "hyprland" --header "Select your window manager" --selected "$current_window_manager" --limit 1 --height 20)

if [ -z "$SELECTED_WINDOW_MANAGER" ]; then
status "No window manager selected. Skipping..."
return
fi

if [ "$SELECTED_WINDOW_MANAGER" == "$current_window_manager" ]; then
status "Window manager is already set to: $SELECTED_WINDOW_MANAGER. No further action required."
return
fi

if [[ "$SELECTED_WINDOW_MANAGER" == "hyprland" ]]; then
if ! is_installed "hyprland"; then
status "Hyprland is not installed. Hyprland needs to be installed before enabling it. Do you want to install Hyprland now? (This will install Hyprland and all related packages)"
if ! gum confirm "Do you want to install Hyprland?"; then
status "Hyprland installation cancelled."
return
fi
source $MANJIKAZE_DIR/app/installations/hyprland/hyprland.sh
return
fi
fi

if gum confirm "Do you want to change the window manager to $SELECTED_WINDOW_MANAGER?"; then
set_window_manager "$SELECTED_WINDOW_MANAGER"
status "Window manager changed to: $SELECTED_WINDOW_MANAGER"

USER_FILE="/var/lib/AccountsService/users/$USER"
if [[ -f "$USER_FILE" ]]; then
status "Setting auto-login session to: $SELECTED_WINDOW_MANAGER"
sudo sed -i -E "s/^Session=.*/Session=$SELECTED_WINDOW_MANAGER/" "$USER_FILE"
else
status "Warning: AccountsService entry $USER_FILE not found – unable to adjust auto-login session automatically."
fi
else
status "Window manager not changed."
fi
25 changes: 25 additions & 0 deletions app/installations/optional/hyprland.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/bin/bash

install_package "hyprland" "repo"
install_package "hyprpaper" "repo"
install_package "hypridle" "repo"
install_package "hyprlock" "repo"
install_package "hyprpolkitagent" "repo"
install_package "hyprpicker" "repo"
install_package "slurp" "repo"
install_package "waybar" "repo"
install_package "rofi-wayland" "repo"


if [ ! -d ~/.config/hypr ]; then
rsync -a --ignore-existing configs/hypr/ ~/.config/hypr/
rsync -a --ignore-existing assets/background.jpg ~/.config/hypr/background.jpg
fi

if [ ! -d ~/.config/rofi ]; then
rsync -a --ignore-existing configs/rofi/ ~/.config/rofi/
fi

if [ ! -d ~/.config/waybar ]; then
rsync -a --ignore-existing configs/waybar/ ~/.config/waybar/
fi
2 changes: 1 addition & 1 deletion app/installations/recommended/alacritty.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ if [ ! -d ~/.config/alacritty ]; then
fi

# Pin Alacritty to dock and remove default terminal if using GNOME
if [[ "$XDG_CURRENT_DESKTOP" == *"GNOME"* ]]; then
if [[ $(get_window_manager) == "gnome" ]]; then
status "Pinning Alacritty to dock and removing default terminal..."

# Get current favorites
Expand Down
111 changes: 111 additions & 0 deletions configs/hypr/base.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
#############################
### ENVIRONMENT VARIABLES ###
#############################

env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24

#####################
### LOOK AND FEEL ###
#####################

general {
gaps_in = 4
gaps_out = 8
border_size = 2
col.active_border = $gb_light0
col.inactive_border = $gb_dark1
resize_on_border = true
allow_tearing = false
layout = dwindle
no_focus_fallback = true
extend_border_grab_area = 15
hover_icon_on_border = true
}

decoration {
rounding = 8

shadow {
enabled = true
render_power = 2
ignore_window = true
color = $gb_dark0_hard
}

blur {
enabled = true
size = 6
passes = 2
new_optimizations = true
ignore_opacity = true
noise = 0.0117
contrast = 0.8916
brightness = 0.8916
vibrancy = 0.1696
special = false
}

active_opacity = 1.0
inactive_opacity = 0.93
fullscreen_opacity = 1.0
}

animations {
enabled = true

bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
bezier = linear,0,0,1,1
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1

animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 4.79, easeOutQuint
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
animation = windowsOut, 1, 1.49, linear, popin 87%
animation = fadeIn, 1, 1.73, almostLinear
animation = fadeOut, 1, 1.46, almostLinear
animation = fade, 1, 3.03, quick
animation = layers, 1, 3.81, easeOutQuint
animation = layersIn, 1, 4, easeOutQuint, fade
animation = layersOut, 1, 1.5, linear, fade
animation = fadeLayersIn, 1, 1.79, almostLinear
animation = fadeLayersOut, 1, 1.39, almostLinear
animation = workspaces, 1, 1.94, almostLinear, fade
animation = workspacesIn, 1, 1.21, almostLinear, fade
animation = workspacesOut, 1, 1.94, almostLinear, fade
}

dwindle {
pseudotile = true
preserve_split = true
permanent_direction_override = true
split_width_multiplier = 1.4
}

misc {
force_default_wallpaper = 0
disable_hyprland_logo = false
disable_splash_rendering = true
animate_manual_resizes = true
animate_mouse_windowdragging = true
enable_swallow = false
swallow_regex = ^(kitty)$
focus_on_activate = true
mouse_move_enables_dpms = true
key_press_enables_dpms = true
initial_workspace_tracking = 2
}

#############
### INPUT ###
#############

input {
kb_layout = us
follow_mouse = 1
sensitivity = 0
numlock_by_default = true
}
Empty file added configs/hypr/custom.conf
Empty file.
7 changes: 7 additions & 0 deletions configs/hypr/hypridle.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
general {
lock_cmd = pidof hyprlock || hyprlock
unlock_cmd = pkill -USR1 hyprlock

before_sleep_cmd = loginctl lock-session
after_sleep_cmd = hyprctl dispatch dpms on
}
25 changes: 25 additions & 0 deletions configs/hypr/hyprland.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Hyprland Configuration
# This is the main configuration file that imports all other configs.
# Refer to the wiki for more information: https://wiki.hyprland.org/Configuring/

monitor=DP-3, 1920x1200, 0x0, 1
monitor=DP-2, 1920x1200, 1920x0, 1
monitor=DP-1, 1920x1200, 3840x0, 1

# Basic programs
$terminal = kitty
$fileManager = dolphin
$browser = firefox
$menu = rofi -show run

# Source shared configuration files
source = ~/.config/hypr/theme.conf
source = ~/.config/hypr/base.conf
source = ~/.config/hypr/keybindings.conf
source = ~/.config/hypr/rules.conf
source = ~/.config/hypr/custom.conf

## Start On Launch ##
exec-once = waybar
exec = hyprpaper &
exec-once = hypridle
45 changes: 45 additions & 0 deletions configs/hypr/hyprlock.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
background {
monitor =
path = screenshot
blur_size = 4
blur_passes = 1
noise = 0.0117
contrast = 0.8916
brightness = 0.8172
vibrancy = 0.1696
vibrancy_darkness = 0.0
}

input-field {
monitor =
size = 265, 50
outline_thickness = 3
dots_size = 0.33
dots_spacing = 0.15
dots_center = false
outer_color = rgb(151515)
inner_color = rgb(200, 200, 200)
font_color = rgb(10, 10, 10)
fade_on_empty = true
placeholder_text = <i>Input Password...</i>
hide_input = false
position = 0, -20
halign = center
valign = center
}

label {
monitor =
text = cmd[update:1000] date "+%H:%M:%S"
color = rgba(200, 200, 200, 1.0)
font_size = 25
font_family = JetBrains Mono Nerd Font
position = 0, 80
halign = center
valign = center
}

auth {
pam:enabled = true
pam:module = login
}
2 changes: 2 additions & 0 deletions configs/hypr/hyprpaper.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
preload = ~/.config/hypr/background.jpg
wallpaper = , ~/.config/hypr/background.jpg
82 changes: 82 additions & 0 deletions configs/hypr/keybindings.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
###################
### KEYBINDINGS ###
###################

$mainMod = SUPER

bind = $mainMod, Return, exec, $terminal # Open terminal
bind = $mainMod SHIFT, Return, exec, $browser # Open browser
bind = $mainMod, Space, exec, $menu # Open Application Menu

# System control
bind = $mainMod, Escape, exec, hyprctl reload
bind = $mainMod SHIFT, Escape, exec, hyprctl reload
bind = $mainMod ALT, Escape, exit

# Window management
bind = $mainMod, R, killactive
bind = $mainMod SHIFT, R, killactive
bind = $mainMod, Z, exec, hyprlock

# Workspace management
bind = $mainMod, E, workspace, emptym
bind = $mainMod SHIFT, E, movetoworkspace, emptym

bind = $mainMod, Q, workspace, m-1
bind = $mainMod, W, workspace, m+1
bind = $mainMod SHIFT, Q, movetoworkspace, m-1
bind = $mainMod SHIFT, W, movetoworkspace, m+1

# Monitor focus
bind = $mainMod, A, focusmonitor, +1
bind = $mainMod, S, focusmonitor, -1
bind = $mainMod SHIFT, A, movewindow, mon:+1
bind = $mainMod SHIFT, S, movewindow, mon:-1

# Window states
bind = $mainMod, T, togglefloating,
bind = $mainMod SHIFT, T, pseudo,
bind = $mainMod ALT, T, fullscreen,

# Focus/move windows
bind = $mainMod, H, movefocus, l
bind = $mainMod, J, movefocus, d
bind = $mainMod, K, movefocus, u
bind = $mainMod, L, movefocus, r
bind = $mainMod SHIFT, H, movewindow, l
bind = $mainMod SHIFT, J, movewindow, d
bind = $mainMod SHIFT, K, movewindow, u
bind = $mainMod SHIFT, L, movewindow, r

# Move floating windows
bind = $mainMod, left, moveactive, -20 0
bind = $mainMod, down, moveactive, 0 20
bind = $mainMod, up, moveactive, 0 -20
bind = $mainMod, right, moveactive, 20 0

# Resize windows
bind = $mainMod ALT, H, resizeactive, -20 0
bind = $mainMod ALT, J, resizeactive, 0 20
bind = $mainMod ALT, K, resizeactive, 0 -20
bind = $mainMod ALT, L, resizeactive, 20 0

# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

# Multimedia keys
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-

# Media controls
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous

# Screenshot binding
bind = , Print, exec, mkdir -p ~/Pictures/Screenshots/$(date +%Y-%m)/$(date +%d)/ && grim -g "$(slurp -d)" - | tee ~/Pictures/Screenshots/$(date +%Y-%m)/$(date +%d)/$(date +%H-%M-%S).png | wl-copy
16 changes: 16 additions & 0 deletions configs/hypr/rules.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
##############################
### WINDOWS AND WORKSPACES ###
##############################

# Layer rules for rofi (shared launcher)
layerrule = blur,rofi
layerrule = dimaround,rofi
layerrule = animation slide,rofi

# Common window rules
windowrulev2 = noblur 1, floating:1

# Utility window rules
windowrulev2 = opacity 0.9 0.1, tag:invisible
windowrulev2 = noborder, tag:invisible
windowrulev2 = decorate, tag:invisible
Loading