summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xarchsetup31
-rw-r--r--dotfiles/common/.config/calibre/viewer-webengine.json82
-rw-r--r--dotfiles/common/.config/calibre/viewer.json51
-rw-r--r--dotfiles/hyprland/.config/hypr/hyprland.conf1
-rwxr-xr-xdotfiles/hyprland/.local/bin/hypr-refocus-scratchpad24
5 files changed, 146 insertions, 43 deletions
diff --git a/archsetup b/archsetup
index ffaa1d8..1ad5502 100755
--- a/archsetup
+++ b/archsetup
@@ -159,8 +159,8 @@ errors_encountered=0
# Installation steps (single source of truth for show_status and main execution)
# display_server and window_manager steps are conditional based on $desktop_env
STEPS=(intro prerequisites create_user user_customizations aur_installer
- essential_services display_server window_manager desktop_environment developer_workstation
- supplemental_software boot_ux)
+ essential_services display_server window_manager desktop_environment gaming
+ developer_workstation supplemental_software boot_ux)
### Cleanup Trap
# Ensures tmpfs is unmounted if script exits unexpectedly
@@ -1710,6 +1710,33 @@ desktop_environment() {
(systemctl enable cups.service >> "$logfile" 2>&1) || error_warn "$action" "$?"
}
+### Gaming
+gaming() {
+ display "title" "Gaming"
+
+ # 32-bit graphics support (required for most Steam games)
+ action="32-bit Graphics Libraries" && display "subtitle" "$action"
+ pacman_install lib32-mesa
+ pacman_install lib32-vulkan-radeon # AMD (matches install_gpu_drivers)
+ pacman_install lib32-vulkan-icd-loader
+ pacman_install vulkan-icd-loader
+
+ # Performance tools
+ action="Performance Tools" && display "subtitle" "$action"
+ pacman_install gamemode # Feral GameMode (CPU governor, GPU perf)
+ pacman_install lib32-gamemode # 32-bit support for Steam games
+ pacman_install mangohud # FPS/performance overlay
+ pacman_install lib32-mangohud # 32-bit overlay for Steam games
+
+ # Steam
+ action="Steam" && display "subtitle" "$action"
+ pacman_install steam
+
+ # Enable gamemode service for user
+ action="enabling gamemode for user" && display "task" "$action"
+ sudo -u "$username" systemctl --user enable gamemoded.service >> "$logfile" 2>&1 || error_warn "$action" "$?"
+}
+
### Developer Workstation
developer_workstation() {
diff --git a/dotfiles/common/.config/calibre/viewer-webengine.json b/dotfiles/common/.config/calibre/viewer-webengine.json
index dcd1405..c06652f 100644
--- a/dotfiles/common/.config/calibre/viewer-webengine.json
+++ b/dotfiles/common/.config/calibre/viewer-webengine.json
@@ -1,50 +1,50 @@
{
"geometry-of-main_window_geometry": {
"frame_geometry": {
- "height": 981,
- "width": 1504,
+ "height": 1314,
+ "width": 1828,
"x": 0,
- "y": 22
+ "y": 0
},
"full_screened": false,
"geometry": {
- "height": 981,
- "width": 1504,
+ "height": 1314,
+ "width": 1828,
"x": 0,
- "y": 22
+ "y": 0
},
- "maximized": false,
+ "maximized": true,
"normal_geometry": {
- "height": 981,
- "width": 1504,
+ "height": 1314,
+ "width": 1828,
"x": 0,
- "y": 22
+ "y": 0
},
"qt": {
"__class__": "bytearray",
- "__value__": "AdnQywADAAAAAAAAAAAAFgAABd8AAAPqAAAAAAAAABYAAAXfAAAD6gAAAAAAAAAABeAAAAAAAAAAFgAABd8AAAPq"
+ "__value__": "AdnQywADAAAAAAAAAAAAAAAAByMAAAUhAAAAAAAAAAAAAAcjAAAFIQAAAAACAAAADXAAAAAAAAAAAAAAByMAAAUh"
},
"screen": {
- "depth": 24,
- "device_pixel_ratio": 1.5,
+ "depth": 32,
+ "device_pixel_ratio": 1.0,
"geometry_in_logical_pixels": {
- "height": 1003,
- "width": 1504,
+ "height": 1440,
+ "width": 3440,
"x": 0,
"y": 0
},
"index_in_screens_list": 0,
- "manufacturer": "",
- "model": "",
- "name": "eDP-1",
+ "manufacturer": "Dell Inc.",
+ "model": "DELL U3419W",
+ "name": "DP-4",
"serial": "",
"size_in_logical_pixels": {
- "height": 1003,
- "width": 1504
+ "height": 1440,
+ "width": 3440
},
"virtual_geometry": {
- "height": 1003,
- "width": 1504,
+ "height": 1440,
+ "width": 3440,
"x": 0,
"y": 0
}
@@ -66,7 +66,7 @@
},
"main_window_state": {
"__class__": "bytearray",
- "__value__": "AAAA/wAAAAH9AAAAAgAAAAAAAAAAAAAAAPwCAAAAAvsAAAAQAHQAbwBjAC0AZABvAGMAawAAAAAA/////wAAAIsA////+wAAABYAcwBlAGEAcgBjAGgALQBkAG8AYwBrAAAAAAD/////AAAAnAD///8AAAABAAABeAAAA9X8AgAAAAT7AAAAFgBsAG8AbwBrAHUAcAAtAGQAbwBjAGsAAAAAAAAAA9UAAACGAP////sAAAAcAGIAbwBvAGsAbQBhAHIAawBzAC0AZABvAGMAawAAAAAAAAAD1QAAAPcA////+wAAABwAaQBuAHMAcABlAGMAdABvAHIALQBkAG8AYwBrAAAAAAD/////AAAAFAD////7AAAAHgBoAGkAZwBoAGwAaQBnAGgAdABzAC0AZABvAGMAawAAAAAA/////wAAANoA////AAAF4AAAA9UAAAAEAAAABAAAAAgAAAAI/AAAAAEAAAAAAAAAAQAAAB4AYQBjAHQAaQBvAG4AcwBfAHQAbwBvAGwAYgBhAHICAAAAAP////8AAAAAAAAAAA=="
+ "__value__": "AAAA/wAAAAH9AAAAAgAAAAAAAAAAAAAAAPwCAAAAAvsAAAAQAHQAbwBjAC0AZABvAGMAawAAAAAA/////wAAAIUA////+wAAABYAcwBlAGEAcgBjAGgALQBkAG8AYwBrAAAAAAD/////AAAAkwD///8AAAABAAABeAAAA9X8AgAAAAT7AAAAFgBsAG8AbwBrAHUAcAAtAGQAbwBjAGsAAAAAAAAAA9UAAAB6AP////sAAAAcAGIAbwBvAGsAbQBhAHIAawBzAC0AZABvAGMAawAAAAAAAAAD1QAAAOUA////+wAAABwAaQBuAHMAcABlAGMAdABvAHIALQBkAG8AYwBrAAAAAAD/////AAAAEQD////7AAAAHgBoAGkAZwBoAGwAaQBnAGgAdABzAC0AZABvAGMAawAAAAAA/////wAAAM4A////AAAHJAAABSIAAAAEAAAABAAAAAgAAAAI/AAAAAEAAAAAAAAAAQAAAB4AYQBjAHQAaQBvAG4AcwBfAHQAbwBvAGwAYgBhAHICAAAAAP////8AAAAAAAAAAA=="
},
"old_prefs_migrated": true,
"session_data": {
@@ -108,6 +108,24 @@
"standalone_recently_opened": [
{
"authors": [
+ "Admin"
+ ],
+ "key": "/home/cjennings/documents/google-drive/danneel/Ltr- Owen (02.06.26) v.5.docx",
+ "pathtoebook": "/home/cjennings/documents/google-drive/danneel/Ltr- Owen (02.06.26) v.5.docx",
+ "timestamp": "2026-02-09T19:36:19.376Z",
+ "title": "Ltr- Owen (02.06.26) v.5"
+ },
+ {
+ "authors": [
+ "Craig Jennings"
+ ],
+ "key": "/home/cjennings/projects/career/tooling/tooling-proposal.docx",
+ "pathtoebook": "/home/cjennings/projects/career/tooling/tooling-proposal.docx",
+ "timestamp": "2026-02-09T16:06:27.024Z",
+ "title": "DeepSat SDLC Tooling Proposal"
+ },
+ {
+ "authors": [
"Richard Polt"
],
"key": "/home/cjennings/sync/books/Richard Polt/Heidegger_ An Introduction (44728)/Heidegger_ An Introduction - Richard Polt.azw3",
@@ -303,24 +321,6 @@
"pathtoebook": "/home/cjennings/Library/Kevin Passmore/Fascism_ A Very Short Introduction (5508)/Fascism_ A Very Short Introduction - Kevin Passmore.mobi",
"timestamp": "2021-11-01T00:49:09.044Z",
"title": "Fascism: A Very Short Introduction (Very Short Introductions)"
- },
- {
- "authors": [
- "Lewis Carroll"
- ],
- "key": "/home/cjennings/Library/Lewis Carroll/Alice's Adventures in Wonderland_ &, Through the Looking-Glass (784)/Alice's Adventures in Wonderland_ &, Throu - Lewis Carroll.mobi",
- "pathtoebook": "/home/cjennings/Library/Lewis Carroll/Alice's Adventures in Wonderland_ &, Through the Looking-Glass (784)/Alice's Adventures in Wonderland_ &, Throu - Lewis Carroll.mobi",
- "timestamp": "2021-11-01T00:48:02.197Z",
- "title": "Alice's Adventures in Wonderland and Through the Looking-Glass"
- },
- {
- "authors": [
- "Timothy Snyder"
- ],
- "key": "/home/cjennings/Library/Timothy Snyder/On Tyranny_ Twenty Lessons From the Twentieth Century (635)/On Tyranny_ Twenty Lessons From the Twenti - Timothy Snyder.azw3",
- "pathtoebook": "/home/cjennings/Library/Timothy Snyder/On Tyranny_ Twenty Lessons From the Twentieth Century (635)/On Tyranny_ Twenty Lessons From the Twenti - Timothy Snyder.azw3",
- "timestamp": "2021-10-31T22:46:48.986Z",
- "title": "On Tyranny: Twenty Lessons from the Twentieth Century"
}
]
}
diff --git a/dotfiles/common/.config/calibre/viewer.json b/dotfiles/common/.config/calibre/viewer.json
index ecc631e..7a41659 100644
--- a/dotfiles/common/.config/calibre/viewer.json
+++ b/dotfiles/common/.config/calibre/viewer.json
@@ -1,4 +1,55 @@
{
+ "geometry-of-print-to-pdf-geometry": {
+ "frame_geometry": {
+ "height": 285,
+ "width": 510,
+ "x": 649,
+ "y": 475
+ },
+ "full_screened": false,
+ "geometry": {
+ "height": 285,
+ "width": 510,
+ "x": 649,
+ "y": 475
+ },
+ "maximized": true,
+ "normal_geometry": {
+ "height": 285,
+ "width": 510,
+ "x": 649,
+ "y": 475
+ },
+ "qt": {
+ "__class__": "bytearray",
+ "__value__": "AdnQywADAAAAAAKJAAAB2wAABIYAAAL3AAACiQAAAdsAAASGAAAC9wAAAAACAAAADXAAAAKJAAAB2wAABIYAAAL3"
+ },
+ "screen": {
+ "depth": 32,
+ "device_pixel_ratio": 1.0,
+ "geometry_in_logical_pixels": {
+ "height": 1440,
+ "width": 3440,
+ "x": 0,
+ "y": 0
+ },
+ "index_in_screens_list": 0,
+ "manufacturer": "Dell Inc.",
+ "model": "DELL U3419W",
+ "name": "DP-4",
+ "serial": "",
+ "size_in_logical_pixels": {
+ "height": 1440,
+ "width": 3440
+ },
+ "virtual_geometry": {
+ "height": 1440,
+ "width": 3440,
+ "x": 0,
+ "y": 0
+ }
+ }
+ },
"print-to-pdf-bottom-margin": 1.0,
"print-to-pdf-geometry": {
"__class__": "bytearray",
diff --git a/dotfiles/hyprland/.config/hypr/hyprland.conf b/dotfiles/hyprland/.config/hypr/hyprland.conf
index 55a7c35..f258353 100644
--- a/dotfiles/hyprland/.config/hypr/hyprland.conf
+++ b/dotfiles/hyprland/.config/hypr/hyprland.conf
@@ -33,6 +33,7 @@ exec-once = mpd
# Pyprland (scratchpads, magnify, etc.)
exec-once = pypr
+exec-once = hypr-refocus-scratchpad
# Apps that can start later (sleep ensures waybar tray is registered)
exec-once = sleep 1 && signal-desktop --start-in-tray --ozone-platform=wayland
diff --git a/dotfiles/hyprland/.local/bin/hypr-refocus-scratchpad b/dotfiles/hyprland/.local/bin/hypr-refocus-scratchpad
new file mode 100755
index 0000000..7a4bb38
--- /dev/null
+++ b/dotfiles/hyprland/.local/bin/hypr-refocus-scratchpad
@@ -0,0 +1,24 @@
+#!/bin/bash
+# Refocus visible scratchpad after a window closes.
+# Without this, closing a regular window while a scratchpad is visible
+# leaves focus on the regular workspace instead of the scratchpad.
+
+SOCKET="$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock"
+
+socat -U - "UNIX-CONNECT:$SOCKET" | while read -r line; do
+ if [[ "$line" == closewindow* ]]; then
+ # Check if a special workspace is active on the current monitor
+ special=$(hyprctl monitors -j | python3 -c "
+import json, sys
+for m in json.load(sys.stdin):
+ sw = m.get('specialWorkspace', {})
+ if sw.get('id', 0) != 0:
+ print(sw['name'])
+ break
+" 2>/dev/null)
+ if [[ -n "$special" ]]; then
+ # Focus the top window on the special workspace
+ hyprctl dispatch focuswindow "workspace:$special" &>/dev/null
+ fi
+ fi
+done