Commit Graph

594 Commits (main)

Author SHA1 Message Date
Amir Alexander Abdelbaki 708137831b fix(hypridle,sysupdate,archiso): misc improvements
- hypridle: remove fprintd restart from after_sleep_cmd (caused resume delays)
- sysupdate: add --packages/-p, --configs/-c, --both/-b selective update modes; move config sync prompt before package step in --both mode
- archiso: add wds-deploy.sh for packaging M-Archy netboot artifacts for WDS/PXELinux

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 09:03:17 +02:00
Amir Alexander Abdelbaki 49ece6a238 feat(hyprlua): tighten lid-lock, idle timer, and add caffeine eww widget
- caffeine: inhibit only `idle`, not `sleep`, so lid close still locks
- binds: lid-close unconditionally calls hyprlock; lid-open does dpms on
- hypridle: reduce lock timeout from 3 min to 2.5 min (150 s)
- eww (all 3 variants): add caffeine toggle button (/󰅺) with tooltip

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 11:15:23 +02:00
Amir Alexander Abdelbaki 204dd31958 fix(hyprlua): only offer real capture nodes; show howdy's enroll error
The Brio (and most UVC webcams) expose a second /dev/video* node that is
metadata-capture only. The chooser listed it, the existence-only guard
accepted it, and howdy aborted with a bare exit 1 because that node can
never deliver a frame.

- list_cameras: skip nodes with no capture pixel formats (is_capture_device)
- howdy_camera_ok: require an actual capture node, not just an existing path,
  so a stale metadata-node device_path triggers reconfiguration
- howdy_add: tee howdy's output and surface the real reason on failure
  instead of only the exit code

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 22:41:24 +02:00
Amir Alexander Abdelbaki 5f83f10f48 fix(hyprlua): set howdy device_path + add camera chooser with kitty preview
Enrollment failed because howdy's own config.ini kept device_path=none,
so VideoCapture aborted before ever opening the lens (generic exit 1).
The presence-detect camera setting is separate and never reached howdy.

- add a "Howdy face auth — configure camera" menu entry that writes
  device_path into /usr/lib/security/howdy/config.ini
- guard howdy_add: detect an unset/stale device_path and offer to fix it
  before enrolling, instead of surfacing howdy's opaque exit 1
- shared camera chooser shows a live still from the selected node via
  kitty's icat (gated on KITTY_WINDOW_ID), used for presence + howdy
- support non-IR colour webcams: detect IR vs colour from the preview's
  saturation and tune recording_plugin (ffmpeg) + dark_threshold per type

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 22:35:11 +02:00
Amir Alexander Abdelbaki 88f3b72343 fix(hyprlua): support howdy 2.x in enroll-biometrics
howdy 2.x installs its CLI under root-only /usr/lib/security/howdy/ with
/usr/bin/howdy symlinked into it, so `command -v howdy` reports "not found"
for a normal user — the script wrongly thought howdy wasn't installed and
tried to reinstall it. Detect via the symlink and pacman -Qq instead; all
ops already run through `sudo howdy`.

This version also has no pam_howdy.so — it authenticates via pam_python.so
loading /usr/lib/security/howdy/pam.py. Switch the emitted PAM block to that
module and add pam_python_require() to install the AUR `pam-python`
dependency, replacing the dead pam_howdy.so existence check.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 22:13:26 +02:00
Amir Alexander Abdelbaki d35d6d17d6 fix(hyprlua): correct howdy CLI + add howdy/FIDO PAM 2FA setup
enroll-biometrics.sh used non-existent howdy flags and a broken install
path. Fixes and additions:

- howdy add: label has no flag; feed it via stdin, use -U "$USER"
- howdy remove: id is positional, not -I
- list/test: pass -U "$USER" so all ops target the same account
- install: howdy is AUR-only, so the pacman fallback could never work;
  require an AUR helper (yay/paru) and message clearly if absent
- new PAM 2FA menu: enroll FIDO key + wire howdy + pam_u2f into
  sudo/hyprlock/login (both factors required, password fallback kept)
- hyprlock gets its own clean fallback (include system-auth) so the
  block is not re-run via include login
- idempotent, timestamped backups, and a symmetric teardown option

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 21:55:06 +02:00
Amir Alexander Abdelbaki 325f5fcc1a Merge branch 'main' of https://git.abdelbaki.eu/The_miro/Dotfiles 2026-06-11 21:29:39 +02:00
Amir Alexander Abdelbaki 9ef49086ae feat(hyprlua): wire chamel daemon + expand frequentcommands
Start chamel as a daemon in autostart so keybinds (toggle/clear/
clear-and-deactivate) work on first use. Fix stale hyprland script
paths in frequentcommands.list and add all utility scripts.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 15:54:20 +02:00
Amir Alexander Abdelbaki 7fd0e37061 refactor(hyprlua): move hypr-usr/ into hypr/usr/ and wire sysupdate sync
Device-specific Lua configs (monitors, binds, input, etc.) previously lived
in a top-level hypr-usr/ sibling to hypr/. They now live inside hypr/usr/
so all hypr-related configs sit under one directory tree.

- git mv hypr-usr/ → hypr/usr/
- hyprland.lua: require() calls updated to require("usr.*")
- input.lua: require("input-device-exceptions") → require("usr.input-device-exceptions")
- hyprpaper.conf + monitorhandler.sh + wallpaper-picker: wallpaper.conf path
  updated from ~/.config/wallpaper.conf → ~/.config/hypr/usr/wallpaper.conf
- monitorhandler.sh: fix stale desktopenvs/hyprland/ → desktopenvs/hyprlua/
- binds.lua: edit-binds keybind path corrected to ~/.config/hypr/usr/binds.lua
- helpmenu.sh: update binds.lua source path
- updater.conf: SOURCE_BASE fixed (hyprland→hyprlua), config hypr except usr,
  remove flat hypr-usr entry
- update-configs.sh: add "except <subdirs>" support for the config type
- hyprlua.sh installer: remove now-redundant hypr-usr copy lines
- migrate-hyprland-to-hyprlua.sh: deploy from hypr/usr/ instead of hypr-usr/
- sysupdate.sh: add CONFIG SYNC section with _migrate_hypr_usr() which moves
  old flat-layout files into usr/ (case 1) or copies fresh from dotfiles when
  no local config exists (case 2); fallback copy preserves hypr/usr/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 15:46:01 +02:00
Amir Alexander Abdelbaki 9638fd337a feat(hyprlua/niri): webcam presence detection + systemd-inhibit idle/caffeine
- Add presence-detect.sh daemon: checks webcam every 2 min via OpenCV haar
  cascade (presence_detect.py); holds systemd-inhibit --what=idle lock while a
  face is detected so hypridle never fires during an active session
- Add enroll-biometrics.sh: Cyberqueer dialog TUI for camera configuration/test
  and howdy face auth enrollment (add/list/remove/test models)
- Rewrite caffeine.sh (hyprlua + niri): replace kill/restart of idle daemon with
  systemd-inhibit --what=idle:sleep + PID file; idle daemon stays running
- Fix hypridle.conf: correct ;; → ; in after_sleep_cmd, add
  ignore_dbus_inhibit=false, bump lock timeout 120s→180s to account for the
  2-min presence detection cycle
- Wire Super+Shift+B keybind for enrollment TUI in both hyprlua and niri
- Fix niri/scripts/python: was real dir with inner symlink causing cp -rL to
  create a nested python/python/ hierarchy; replaced with direct symlink
- Add python-opencv and v4l-utils to hyprlua + niri installers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 14:50:36 +02:00
Amir Alexander Abdelbaki 9c85024eab fix(hyprlock): use hyprlock pam module instead of sudo
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 09:42:26 +02:00
Amir Alexander Abdelbaki f9a4466072 added device blocks for logitech lightspeed composite dev 2026-06-07 04:42:35 +02:00
Amir Alexander Abdelbaki 0fcb9fb193 feat(niri): split config into modules and port hyprlua keybinds
Split monolithic config.kdl into modules/ (input, outputs, layout,
animations, environment, autostart, window-rules, binds), mirroring
the hyprlua modular structure.

Keybind additions and fixes:
- Port all missing hyprlua binds (Mod+0, mouse drag/resize, Mod+Ctrl+M,
  Mod+Shift+Return→overview, Mod+Shift+Alt group move aliases)
- Enforce modifier semantics: Shift=move window, Ctrl=workspace,
  Alt=resize across all directional keys
- Add Mod+Ctrl+J/K/Down/Up → focus-workspace-down/up
- Add Mod+Ctrl+Shift+J/K/Down/Up → move-column-to-workspace-down/up
- Fix Mod+Ctrl+K/Up (was toggle-overview, now focus-workspace-up)
- Fix Mod+Ctrl+Shift+Up (was move-to-recent, now move-to-workspace-up)
- Relocate toggle-overview to Mod+Ctrl+Space
- Remove Mod+Shift+Alt+* aliases (violated Alt=resize rule)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03 10:25:19 +02:00
Amir Alexander Abdelbaki 814080cc04 feat(installer): install evdev-rce for touchscreen long-press right-click
Reverts incorrect touch_long_press_time option (not a real Hyprland setting).
Adds evdev-right-click-emulation install + systemd enable to the tablet (T)
eww bar selection in the hyprlua installer.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 15:43:48 +02:00
Amir Alexander Abdelbaki 128bdc7d4f feat(input): enable touchscreen long-press to right-click
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 15:12:32 +02:00
Amir Alexander Abdelbaki fbfe238e99 fix(dock): switch nwg-dock-hyprland from autohide (-d) to resident (-r) mode
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 14:38:36 +02:00
Amir Alexander Abdelbaki 74b0361f26 feat(autostart): enable nwg-dock-hyprland on startup
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 14:23:19 +02:00
Amir Alexander Abdelbaki bebddb13f1 chore(dock): standardise nwg-dock-hyprland flags across all binds
Switch to -i 25 icon size and -d autohide flag; drop old per-position
margin flags and -r resident flag; apply uniform command to all position
binds, toggle, and autostart reference.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 14:21:28 +02:00
Amir Alexander Abdelbaki 1350e0bf3e fix(binds): repair nwg-dock toggle and position keybinds
Position binds used && which prevented the dock from starting when it
wasn't already running. Toggle bind had no kill logic so pressing it
again stacked a second instance instead of hiding the dock.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 14:13:11 +02:00
Amir Alexander Abdelbaki 2b0f963760 comment out nwg-dock autostart
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 12:50:26 +02:00
Amir Alexander Abdelbaki 7828662e23 shrink dock further, widen gap, fix helpmenu to use new binds path
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 12:48:02 +02:00
Amir Alexander Abdelbaki c7310f02df shrink nwg-dock and add edge gap
Reduce icon size to 28 (-is 28) and increase all margins to 25px for a
cleaner, less intrusive dock appearance.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 12:41:02 +02:00
Amir Alexander Abdelbaki 455a325743 i have opinions on the bar 2026-06-02 12:08:52 +02:00
Amir Alexander Abdelbaki a3e0175188 now the bar is actually fixed 2026-06-02 10:11:39 +02:00
Amir Alexander Abdelbaki 4d3bccf3b1 finally teh bar is gut 2026-06-02 09:54:16 +02:00
Amir Alexander Abdelbaki af7454b42d eww bar now actually good 2026-06-02 09:39:49 +02:00
Amir Alexander Abdelbaki e86c8eef5f readjusted the eww bar 2026-06-02 09:24:31 +02:00
Amir Alexander Abdelbaki a54e0749ad fix(eww-touch): restore layout with all session styling applied
Restores the screenrotate centre widget (OSK, prev/next workspace,
rotate CW/CCW, close) that was lost to an external edit, and re-applies
all session changes on top:
- Circular (round) class on OSK, drawer, and all five screenrotate buttons
- Close button uses hyprctl dispatch killactive
- Workspace buttons use focusleft/focusright scripts
- winsworks hexpand + metric/scale hexpand for responsive volume slider
- Clock widget split into icon label + time label with a space between

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 09:20:54 +02:00
Amir Alexander Abdelbaki 9d7c7a5932 feat(eww-touch): restyle bar with pill aesthetic, tighter sizing, responsive slider
- Switch font to 16pt with proportionally scaled padding/margins
- Full pill border-radius (999px) on all widgets
- Circular buttons (50%) for OSK, drawer, close, workspace, screen rotation
- Volume slider expands to fill available bar width (hexpand)
- Workspace buttons use focusleft.sh / focusright.sh scripts
- Add space between clock icon and time

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 09:15:41 +02:00
Amir Alexander Abdelbaki c8a476d2af fix(niri): correct window opacity rules and align theming to CyberQueer palette
- Replace invalid min-opacity with opacity in niri window rules; reorder
  global rule before per-app overrides so last-match-wins works correctly
- dunst: frame_color #aaaaaa → #5018DD, icon_theme → Papirus-Dark
- eww: bar and slider colors aligned to CyberQueer #D6ABAB text color

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 17:37:11 +02:00
Amir Alexander Abdelbaki 7a40e9baec feat(niri): add Niri as a full desktop environment option
Adds Niri (scrollable-tiling Wayland compositor) as a first-class DE
alongside HyprLua, Hyprland, and Sway.

Config (desktopenvs/niri/):
- niri/config.kdl: full KDL config — input (de/caps:swapescape/
  left-handed), CyberQueer focus-ring colours, spring animations,
  environment vars, autostart, window rules, 100+ keybindings
  translated from binds.lua
- Shared configs (kitty, dunst, wofi, btop, walker, vicinae, etc.)
  symlinked from hyprlua to stay in sync
- EWW bar: three variants (PC/notebook/touch) with niri-native workspace
  widget driven by a niri msg event-stream listener script
- greetd-tuigreet: launches niri instead of Hyprland

Scripts adapted for niri IPC / niri toolchain:
- ewwstart.sh / togglebar.sh: niri msg outputs instead of hyprctl
- monitorhandler.sh: swaybg replaces hyprpaper
- caffeine.sh: swayidle replaces hypridle
- activewindow: niri msg -j focused-window
- unified-rotate.sh: niri msg action set-output-transform
- wallpaper-picker: swaybg-based rewrite
- windowswitcher: niri msg -j windows + wofi
- workspace: event-stream listener for eww literal widget
- drawer.sh / menu.sh: swaylock + niri msg action quit for power actions
- niri-toggle-touchpad.sh: xinput fallback (no niri IPC for touchpad)
- toggle-layout.sh: stub (niri has one scrollable layout)

Installer & integration:
- setup/modules/Desktop-Environments/niri.sh: full installer with
  niri-appropriate packages (swaybg, swaylock, swayidle, xfce-polkit,
  gammastep, nwg-drawer, xdg-desktop-portal-gnome; no nwg-dock-hyprland
  as niri doesn't support wlr-foreign-toplevel-management)
- setup/tui-install.sh: niri added to DE selection dialog
- apply-theme.sh: niri/config.kdl added to USER_FILES for colour theming

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 16:38:47 +02:00
Amir Alexander Abdelbaki 270aa841cf feat(hypr): split device exceptions into own file with a TUI editor
Move hl.device blocks from input.lua into input-device-exceptions.lua
and add mk-device-exception.sh — a dialog-based TUI that pre-populates
fields from any existing block in the target file and replaces or
appends it on save.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 14:49:14 +02:00
Amir Alexander Abdelbaki 0742802cd8 Update desktopenvs/hyprlua/hypr-usr/input.lua 2026-06-01 12:51:17 +02:00
Amir Alexander Abdelbaki b114b7f523 feat(hypr): support mice in mk-device-block and add mouse device blocks
Expand mk-device-block.sh to list mice alongside keyboards and emit the
pointer-appropriate config block. Add device blocks for the Logitech
Pro 2 and G903 mice in input.lua.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 23:27:00 +02:00
Amir Alexander Abdelbaki 572fc00755 further refinements to input profile 2026-05-31 23:20:03 +02:00
Amir Alexander Abdelbaki 4acc5beb24 feat(hypr): set standard key repeat for zsa moonlander
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 23:18:57 +02:00
Amir Alexander Abdelbaki 7bc86cb33c added exception to input for zsa moonlander 2026-05-31 23:07:11 +02:00
Amir Alexander Abdelbaki 0d082d346c feat(hypr): add script to generate hl.device() block for a keyboard
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 22:53:59 +02:00
Amir Alexander Abdelbaki 6d77e2a360 fix(hypr): wrap all gesture dispatcher callbacks in hl.dispatch()
hl.dsp.*() inside a function callback only constructs a Dispatcher
object — hl.dispatch() is required to actually execute it.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 22:46:57 +02:00
Amir Alexander Abdelbaki 6c4dfd10fa fix(hypr): revert gesture action to function callback form
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 22:41:21 +02:00
Amir Alexander Abdelbaki 388eb7b5a5 fix(hypr): use new dispatcher syntax for 4-finger workspace swipe gestures
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 22:39:43 +02:00
Amir Alexander Abdelbaki bb51a51a7b feat(hypr): lock screen on lid close, skip if caffeine mode is on
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 22:08:24 +02:00
Amir Alexander Abdelbaki 08c3097a70 feat(wallpaper): sync selected wallpaper to hyprlock per monitor
wallpaper-picker now calls write_hyprlock_state() on apply, writing
per-monitor background blocks to ~/.config/hypr/hyprlock-backgrounds.conf.
hyprlock.conf sources that file instead of a hardcoded background block,
with a committed default for first-boot.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 21:54:19 +02:00
Amir Alexander Abdelbaki 867686e409 fix(eww-touch): use hyprctl dispatch for close window button
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 10:30:52 +02:00
Amir Alexander Abdelbaki 21ec76c6eb Revert "fix(eww-touch): fix middle button close window action"
This reverts commit 266a032cb3.
2026-05-23 10:29:17 +02:00
Amir Alexander Abdelbaki 266a032cb3 fix(eww-touch): fix middle button close window action
hl.dsp.window.close() is not a valid Hyprland Lua API method;
replace with hyprctl dispatch killactive.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 10:28:10 +02:00
Amir Alexander Abdelbaki 612c13b4c0 fix(rotate): add pen/stylus rotation with explicit output mapping
Tablet devices require output= in hl.device() for transform to take
effect, unlike touchscreens which auto-bind to their display.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 10:23:22 +02:00
Amir Alexander Abdelbaki c7511b750a adjusted size of eww bar - i found the sweet spot 2026-05-19 18:31:18 +02:00
Amir Alexander Abdelbaki 9f480eb1b1 adjusted size of eww bar 2026-05-19 18:30:02 +02:00
Amir Alexander Abdelbaki 6a9d286e55 fixed workspace navigation 2026-05-19 18:26:28 +02:00
Amir Alexander Abdelbaki 7fe95c8b72 fix(eww): port hyprctl dispatch calls to Lua API
Replace hyprctl dispatch with hyprctl eval using hl.dsp.* in all
three eww variants. Workspace switching uses hl.dsp.focus with r+/r-
relative prefixes; killactive becomes hl.dsp.window.close(); exec
uses hl.dsp.exec_cmd.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 16:57:10 +02:00
Amir Alexander Abdelbaki ef4a0a483d fix(scripts): port screen rotation to Lua config
Replace hyprctl keyword with hyprctl eval + hl.monitor/hl.device Lua API,
and switch monitor/device parsing from fragile grep to hyprctl -j + jq.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 16:41:52 +02:00
Amir Alexander Abdelbaki f880191764 fix(scripts): update caffeine and toggle-touchpad to Lua config syntax
Replace hyprctl dispatch exec with direct daemon invocation in caffeine.sh,
and replace defunct \$LAPTOP_KB_ENABLED .conf variable with the actual
device key path in hyprland-toggle-touchpad.sh.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 16:29:53 +02:00
Amir Alexander Abdelbaki 7b9379b1c1 feat(binds): convert gestures to new Hyprland Lua syntax
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 15:00:26 +02:00
Amir Alexander Abdelbaki b5b21ce4cd fixed issue with resizing windows with keyboard shortcuts 2026-05-19 14:54:13 +02:00
Amir Alexander Abdelbaki 820a12616c fixed theming issues 2026-05-19 14:39:29 +02:00
Amir Alexander Abdelbaki 3a49ab44d9 feat(qt,gtk): overhaul theming — qt6ct style plugin, dark palette, GTK color-scheme
Qt: replace QT_STYLE_OVERRIDE/QT_STYLE_SHEET env vars with QT_QPA_PLATFORMTHEME=qt6ct +
QT_QUICK_CONTROLS_STYLE=Fusion; add cyberqueer Qt6 style plugin (QProxyStyle wrapping
Fusion with hardcoded dark palette); enable custom_palette in qt6ct.conf so qt6ct applies
the dark QPalette directly for both Qt Widgets and Qt Quick apps.

GTK: fix dark mode not applying — set gtk-application-prefer-dark-theme=1 in GTK3
settings.ini; add gsettings color-scheme=prefer-dark to install script (required by
libadwaita apps which ignore gtk-theme-name); add index.theme so the theme is recognized
by GTK theme discovery.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 13:43:13 +02:00
Amir Alexander Abdelbaki 3cd4cb5df7 fix(hyprlua): theme and position vicinae correctly
Move settings.json out of the wrong vicinae/vicinae/ subdir so it deploys
to ~/.config/vicinae/settings.json where vicinae actually reads it, enabling
the cyberqueer theme. Add GTK_THEME=cyberqueer on launch for correct font
rendering. Add float=true to the launcher window rule so the cursor-position
move formula is applied.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 11:48:14 +02:00
Amir Alexander Abdelbaki bf4821c48e fix(hyprlua): correct Lua dispatcher API calls in binds.lua
- window.tag: pass table { tag = "..." } instead of bare string
- window.cycle_next: remove invalid false argument
- window.resize: use { x, y } fields instead of { delta = "x y" }
- group.change_active: replaced with hyprctl dispatch fallback (not in Lua API)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 11:13:18 +02:00
Amir Alexander Abdelbaki f453b1d3d3 feat(desktopenvs): add hyprland → hyprlua migration script
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 10:22:56 +02:00
Amir Alexander Abdelbaki b629697ddd feat: add hyprlua config set and migrate hyprland envvars to dedicated file
Duplicates desktopenvs/hyprland/ as desktopenvs/hyprlua/ and converts all
Hyprland-specific configs (.conf) to Lua (.lua) using the 0.55+ hl.* API:
hyprland.lua, envvars.lua, monitors.lua, input.lua, autostart.lua,
windowrules.lua, binds.lua. Non-Hyprland tool configs (hyprpaper, hyprlock,
hypridle, hyprtoolkit) remain as .conf. Adds hyprlua.sh installer (user-side
.lua files install to ~/.config/hypr/ for require() resolution) and registers
HyprLua as the recommended DE option in tui-install.sh, marking the old
hyprlang-based Hyprland install as legacy.

Also consolidates hyprland (legacy) env vars into hypr-usr/envvars.conf,
removing duplicates from hyprland.conf and monitors.conf.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 08:50:23 +02:00
Amir Alexander Abdelbaki bd1c23e6b4 updated 2026-05-13 19:02:37 +02:00
Amir Alexander Abdelbaki 76b1a0160f privacy: remove hardcoded username and AWS signed URL
Replace all /home/themiro/ path references with $HOME equivalents
across .zshrc, monitorhandler.sh (now derives path from script
location), gtk bookmarks, spicetify config, ulauncher generated CSS,
and nvim init.lua.old.

Delete commented-out AWS signed URL with embedded credentials from
setup/deprecated/hyprland.sh.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 14:17:48 +02:00
Amir Alexander Abdelbaki ac2f4c39f0 removed pinch bind for now 2026-05-12 12:45:56 +02:00
Amir Alexander Abdelbaki 61914db16b hyprland: fix screen rotation touchscreen input after 0.55.0 update
Fix touchscreen detection (section renamed from Touchscreen to Touch Device)
and device keyword syntax (device:NAME -> device[NAME]:transform). Also swap
cw/ccw in acw/wcw wrapper scripts which were inverted.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 08:33:45 +02:00
Amir Alexander Abdelbaki 0571a83567 hyprland updated 2026-05-12 08:15:37 +02:00
Amir Alexander Abdelbaki 4d797c537d amssh: fix FIDO2 auth; add pamtester to core; add package audit script
- amssh: use dedicated /etc/pam.d/amssh service instead of login (pam_u2f
  was commented out in login); auto-create service and register key on
  first-launch FIDO selection
- amssh: redirect pamtester stdout+stderr to /dev/tty so the tap prompt is
  visible and the success message doesn't contaminate pass=$(_get_passphrase)
- amssh: split _fido_pam_available into _fido_hardware_available (for dialog
  gating) and _fido_pam_available (runtime — requires keys file + PAM service)
- setup: add pamtester to core-packages.sh
- setup: add audit-packages.sh to verify installed packages come from the
  expected source (pacman/AUR/flatpak)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 19:09:38 +02:00
Amir Alexander Abdelbaki 78312e9b4d amssh now themed 2026-05-11 13:26:02 +02:00
Amir Alexander Abdelbaki 507ca5db6b amssh: rebind from Super+Alt+Ctrl+S to Super+Ctrl+R
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 11:26:48 +02:00
Amir Alexander Abdelbaki 4dbe200293 amssh: encrypted SSH manager with fzf TUI and wofi drun mode
- AES-256-CBC store with PBKDF2-SHA256 (600k iters), passphrase auth
- FIDO2/PAM opt-in second factor via pam_u2f + pamtester
- fzf TUI: vim-style nav (j/k/g/G//), a=add, d=delete, q=quit
- Full-screen tput add form with Tab/Enter field advance, star-masked password
- SSH_ASKPASS_REQUIRE=force for stored password auth (no sshpass)
- First-launch dialog to choose passphrase vs FIDO2
- Hyprland keybind: SUPER-ALT-CTRL-S

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 11:21:56 +02:00
Amir Alexander Abdelbaki c4b9c5bf92 add config-updater: config-driven update script with manifest
Replaces the hardcoded inline-generated ~/update-hypr-configs.sh with
a proper dotfiles-resident script + config file:

  config-updater/update-configs.sh  — reads updater.conf, applies
    configs, warns about untracked source items and manifest drift
  config-updater/updater.conf       — declares config/flat/ignore
    entries and SOURCE_BASE; hypr-usr is flat (contents → ~/.config/)

hyprland-new.sh step 15 now symlinks both into place instead of
generating a hardcoded script inline. The output is renamed from
~/update-hypr-configs.sh to ~/update-configs.sh.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 09:46:02 +02:00
Amir Alexander Abdelbaki 968031ae11 timer-run: use system sound instead of generated PCM beep
Replace the Python sine-wave generator and raw PCM piping with
paplay playing alarm-clock-elapsed.oga, falling back to
canberra-gtk-play. Also export PULSE_RUNTIME_PATH for the detached
setsid process so paplay can find the PipeWire-Pulse socket.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 09:23:24 +02:00
Amir Alexander Abdelbaki d2c0c1ae1f wallpaper-picker: per-monitor support
- default selection = monitor under the mouse (cursorpos + geometry math)
- 1-9 toggle individual monitors, a toggles all
- Space/Enter both apply
- persist per-monitor state to ~/.config/wallpaper.conf using new wallpaper{} syntax
- hyprpaper.conf sources ~/.config/wallpaper.conf so picks survive reboot
2026-05-09 18:25:48 +02:00
Amir Alexander Abdelbaki 25c9e69ad2 gneral stuff 2026-05-09 17:22:55 +02:00
Amir Alexander Abdelbaki 2690f1bdd2 fixed timer size 2026-05-09 14:19:24 +02:00
Amir Alexander Abdelbaki 12e7283401 fix duplicate name in centered-L windowrule block
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 17:03:11 +02:00
Amir Alexander Abdelbaki 48c8845eb9 add wallpaper-picker script and bind to $mainMod+W
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 16:55:35 +02:00
Amir Alexander Abdelbaki e196e386b0 some general fixes 2026-05-08 16:20:53 +02:00
Amir Alexander Abdelbaki 691ce9db37 Merge branch 'main' of https://git.abdelbaki.eu/The_miro/Dotfiles 2026-05-08 15:16:06 +02:00
Amir Alexander Abdelbaki c61766960b added timer 2026-05-08 15:16:01 +02:00
Amir Alexander Abdelbaki e50cb5dc50 cleanup: archive deprecated configs, remove logs and merge artifacts
- Move old hypr/kitty/xfce4 configs into deprecated/ folders
- Move proto scripts into scripts/deprecated/
- Consolidate loose .old installer into setup/deprecated/
- Rename broken symlinks (old themiro home path) to .old
- Rename duplicate .deb.1 and .bak files to .old for consistency
- Delete btop.log, nohup.out (gitignore matches), thunar merge conflict files

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 10:13:12 +02:00
Amir Alexander Abdelbaki 4b8dd4f5d9 cleanup: expand gitignore, add timer scripts, update hyprland binds
Remove stale yazi backup files and credentials, expand .gitignore to
cover keys, editor temp files, and yazi timestamp backups. Add timer
notification scripts and bind Super+Ctrl+T to open timer popup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 18:41:49 +02:00
Amir Alexander Abdelbaki dc0e964320 general stuff 2026-05-07 18:15:20 +02:00
Amir Alexander Abdelbaki 92f4148cb1 why was i missing windowrule tag???? 2026-04-08 18:18:35 +02:00
Amir Alexander Abdelbaki 8712978eac is my readme a html? 2026-03-26 09:33:16 +01:00
Amir Alexander Abdelbaki 36080f464a added WallRizz 2026-03-24 13:46:34 +01:00
Amir Alexander Abdelbaki 759d2a5395 vicinae window changed clas name 2026-03-10 09:36:32 +01:00
Amir Alexander Abdelbaki bf066dab47 window resize now repeats 2026-02-25 16:27:45 +01:00
Amir Alexander Abdelbaki 8b4813e1b7 fixed some of the fn-alt function binds 2026-02-23 11:20:04 +01:00
Amir Alexander Abdelbaki 92ec5d5873 now the notif shows for just long enough 2026-02-20 11:12:40 +01:00
Amir Alexander Abdelbaki 19b3ac8e9b further improvements on the earlier 2026-02-20 11:06:00 +01:00
Amir Alexander Abdelbaki 1e47547c52 added toggle-layout and chameleos for screen annotation 2026-02-20 10:27:45 +01:00
Amir Alexander Abdelbaki 0a8683200f finally screenrec makes half a nick of sense 2026-02-18 15:17:19 +01:00
Amir Alexander Abdelbaki 8e788f624d now the screenrec notif also acts as a button to stop recordin 2026-02-18 11:06:07 +01:00
Amir Alexander Abdelbaki fbce22632d now the notif stays on screen just to be sure 2026-02-12 16:54:26 +01:00
Amir Alexander Abdelbaki d2f43a3441 now sceenrecording also works - sadly not to clipboard, but timestamped 2026-02-12 16:40:50 +01:00
Amir Alexander Abdelbaki 8950e8f42a now sceenrecording also works 2026-02-12 16:01:55 +01:00
Amir Alexander Abdelbaki a57969e26f all instances of eww now get killed before the ewwstart handler initiates 2026-02-12 10:52:53 +01:00
Amir Alexander Abdelbaki d0d8082003 launcher windows now center on cursor location 2026-02-11 15:18:10 +01:00
Amir Alexander Abdelbaki 53afafe528 autostart - export is a whole command 2026-02-11 14:36:55 +01:00
Amir Alexander Abdelbaki 6f5ea65d08 autostart - i had the polkit agent in there twice 2026-02-11 13:12:11 +01:00
Amir Alexander Abdelbaki 06972296b3 needed export not env 2026-02-11 12:39:51 +01:00
Amir Alexander Abdelbaki e6148ad3e6 now qt theme gets cleared when starting vicinae server - the font issue persists though 2026-02-11 12:29:36 +01:00
Amir Alexander Abdelbaki ed4c770f35 hyprpolkitagent 2026-02-11 10:11:04 +01:00
Amir Alexander Abdelbaki e3b9a5064d diff 2026-02-10 13:58:52 +01:00
Amir Alexander Abdelbaki 7f5e0b0648 autostart 2026-02-10 12:57:08 +01:00
Amir Alexander Abdelbaki c3d773c037 finished implementing vicinae 2026-02-10 12:56:41 +01:00
Amir Alexander Abdelbaki e9c3f887a2 get in loser, we're switching to vicinae 2026-02-10 12:45:02 +01:00
Amir Alexander Abdelbaki a08ac1d356 autostart -> hypr polikit agent 2026-02-09 10:37:25 +01:00
Amir Alexander Abdelbaki ffec1b1b47 udiskie is now permanently in try 2026-02-09 00:12:47 +01:00
Amir Alexander Abdelbaki adc8568507 why yay folder 2026-02-08 23:58:02 +01:00
Amir Alexander Abdelbaki f9bf6c8ce6 new winrules - toprighters 2026-02-08 23:57:07 +01:00
Amir Alexander Abdelbaki ab95b1bec4 new winrules - brought back smart borders 2026-02-07 15:33:07 +01:00
Amir Alexander Abdelbaki 590f8982f2 some more rules 2026-01-27 20:49:41 +01:00
Amir Alexander Abdelbaki 6670a0f6de vaxry changed the windowrule syntax. 2026-01-27 20:27:34 +01:00
Amir Alexander Abdelbaki 6b3fd09fe6 back to pavucontrol 2026-01-20 10:44:52 +01:00
Amir Alexander Abdelbaki e981b87973 switched to hyprshutdown and hyprpwcenter 2025-12-16 10:46:41 +01:00
Amir Alexander Abdelbaki 9d2c72e167 update to pwr-dmenu 2025-12-16 09:38:42 +01:00
Amir Alexander Abdelbaki 59425734ef hyprpwcenter 2025-12-16 09:14:12 +01:00
Amir Alexander Abdelbaki b25c59852c hyprtoolkit 2025-12-16 09:08:27 +01:00
Amir Alexander Abdelbaki af4465a89c rotation script 2025-12-09 18:36:13 +01:00
Amir Alexander Abdelbaki 006b8b1aea finally fixed the unified-rotate script 2025-12-09 14:19:21 +01:00
Amir Alexander Abdelbaki bd6fba866f reverted changes to touchpad toggle script 2025-12-09 14:03:42 +01:00
Amir Alexander Abdelbaki 971065a40a Update desktopenvs/hyprland/scripts/pwr-dmenu.sh 2025-12-03 10:28:10 +01:00
Amir Alexander Abdelbaki f7e3e85818 Update desktopenvs/hyprland/scripts/screenrotationwcw.sh 2025-12-03 10:26:52 +01:00
Amir Alexander Abdelbaki 181ceca1ab Update desktopenvs/hyprland/scripts/screenrotationacw.sh 2025-12-03 10:26:07 +01:00
Amir Alexander Abdelbaki cc5853cd03 preparing for local only install, updating will happen through script 2025-12-03 10:24:51 +01:00
Amir Alexander Abdelbaki a63dbee893 cleanup of deprecated components 2025-11-28 10:57:06 +01:00
Amir Alexander Abdelbaki 69dbe41a1c Add desktopenvs/hyprland/scripts/hyprland-toggle-touchpad.sh 2025-11-28 10:47:15 +01:00
Amir Alexander Abdelbaki 9d6c00265d Update desktopenvs/hyprland/scripts/hyprland-toggle-touchpad.sh.old 2025-11-28 10:46:34 +01:00
Amir Alexander Abdelbaki 01eb6dbd25 Add desktopenvs/hyprland/scripts/screenrotationwcw.sh 2025-11-28 10:39:00 +01:00
Amir Alexander Abdelbaki 15e55dd3e5 Update desktopenvs/hyprland/scripts/screenrotationacw.sh 2025-11-28 10:36:58 +01:00
Amir Alexander Abdelbaki efa20d123c Add desktopenvs/hyprland/scripts/unified-rotate.sh 2025-11-28 10:35:57 +01:00
Amir Alexander Abdelbaki 7f03a92854 Update desktopenvs/hyprland/scripts/screenrotationwcw.sh.old 2025-11-28 10:34:28 +01:00
Amir Alexander Abdelbaki 7f591afc56 Add desktopenvs/hyprland/scripts/screenrotationacw.sh 2025-11-28 10:30:10 +01:00
Amir Alexander Abdelbaki b8a15ead49 Update desktopenvs/hyprland/scripts/screenrotationacw.sh.old 2025-11-28 10:28:16 +01:00
Amir Alexander Abdelbaki 1862f83fab added udiskie 2025-11-27 18:04:00 +01:00
Amir Alexander Abdelbaki 3e35f54fac added tooltip with disk data 2025-11-18 13:03:23 +01:00
Amir Alexander Abdelbaki ff08f1e8dd added dysk-phydisks.sh for presenting disks 2025-11-18 12:42:30 +01:00
Amir Alexander Abdelbaki 2bca64e955 thunar 2025-10-28 15:47:47 +01:00
Amir Alexander Abdelbaki 9d66939465 slightly thicker vencord borders 2025-10-28 10:41:39 +01:00
Amir Alexander Abdelbaki 427e2fb4fa added touchpad toggle to frequentcommands.list 2025-10-28 10:23:10 +01:00
Amir Alexander Abdelbaki 383f62ce90 added touchpad toggle (default for TP T440P) 2025-10-28 10:17:47 +01:00
Amir Alexander Abdelbaki 2b8452d411 corrected eww nobattery 2025-10-27 20:38:39 +01:00
Amir Alexander Abdelbaki a548f68e0c corrected eww touch 2025-10-27 20:38:22 +01:00
Amir Alexander Abdelbaki 8e295a27c1 corrected the poll in eww (notebook) 2025-10-27 20:36:45 +01:00
Amir Alexander Abdelbaki 84a854c96f also made it so the weekday is displayed with the date 2025-10-27 20:35:04 +01:00
Amir Alexander Abdelbaki f84d27c3a0 added line on top of calendar tooltip, so date doesn't get covered 2025-10-27 20:32:51 +01:00
Amir Alexander Abdelbaki 277656d852 fixed calender, fr this time 2025-10-27 20:30:21 +01:00
Amir Alexander Abdelbaki 2826ab75ac added eww reload to pwr-menu 2025-10-23 22:21:18 +02:00