Skip to content

feat: add retro-themed hyprlock configuration#15

Open
ozhangebesoglu wants to merge 15 commits intodiinki:mainfrom
ozhangebesoglu:feature/hyprlock-theme
Open

feat: add retro-themed hyprlock configuration#15
ozhangebesoglu wants to merge 15 commits intodiinki:mainfrom
ozhangebesoglu:feature/hyprlock-theme

Conversation

@ozhangebesoglu
Copy link
Copy Markdown

  • ASCII box-drawing frame for retro aesthetic
  • Time and date display with shadow effect
  • User info and password input field
  • Battery and hostname indicators
  • Matches Linux Retroism 80-90s UI theme

- ASCII box-drawing frame for retro aesthetic
- Time and date display with shadow effect
- User info and password input field
- Battery and hostname indicators
- Matches Linux Retroism 80-90s UI theme
Settings Menu:
- Font size and tray icon size sliders
- Monochrome tray icons toggle
- 24-hour clock format toggle
- Theme selector with all available themes
- Terminal and File Manager settings (reads/writes hyprland.conf)
- System information display

Power Menu:
- Lock, Sleep, Logout, Restart, Shutdown buttons
- Confirmation dialog before actions
- Opens as centered overlay widget
- Only appears on active monitor

Other changes:
- Config.qml: Added hyprland.conf integration functions
- Time.qml: Added 24-hour format support
- PopupWindowFrame.qml: Added retro close button
- StartMenu.qml: Updated power button to open new widget
Network Tab:
- List available WiFi networks with signal strength
- WiFi toggle switch (on/off)
- Refresh button to rescan networks
- Double-click to connect
- Shows security status (locked icon)
- Connected network highlighted

Bluetooth Tab:
- List paired Bluetooth devices
- Bluetooth toggle switch (on/off)
- Scan button to discover new devices
- Refresh button to update device list
- Double-click to connect/disconnect
- Connected devices highlighted

Uses nmcli for WiFi and bluetoothctl for Bluetooth.
- Window size: 700x560 (was 480x420)
- Tab height: 36px (was 28px)
- Tab font: 14px (was 11px)
- Content fonts: 14-16px (was 10-11px)
- Sliders: 280x28 (was 180x20)
- Checkboxes: 24x24 (was 16x16)
- Theme cards: 100x70 (was 70x50)
- Toggle switches: 56x28 (was 40x20)
- List items: 40-48px height (was 28px)
- Button heights: 32-36px (was 24px)

All tabs updated: Appearance, System, Network, Bluetooth, About
- Quickshell.exec/execDetached don't exist in Quickshell API
- Use Process components from Quickshell.Io module instead
- Network tab: wifiListProc, wifiStatusProc, wifiToggleProc, wifiConnectProc
- Bluetooth tab: btStatusProc, btDevicesProc, btToggleProc, btConnectProc, btScanProc
- Power menu: powerCmdProc, hyprlockThemeProc
- Config.qml: Add null checks for stdout in grep processes
Quickshell Process doesn't have direct stdout property.
Use SplitParser with onRead callback to read command output.
- WiFi list and status parsing
- Bluetooth devices and status parsing
- Hyprland config reading
- Fixed Bluetooth MAC regex to include lowercase (a-f)
SplitParser calls onRead for each line separately.
Accumulate output in property, process all data in onExited callback.
Brightness:
- Uses brightnessctl for reading/setting
- Slider with percentage display
- Auto-detects current and max brightness

Volume:
- Uses wpctl (PipeWire) for audio control
- Slider with percentage display
- Mute/Unmute toggle button
- Shows muted state with icon change
- Supports volume > 100%

System tab now has Flickable for scrolling content.
maxBrightness was defaulting to 100 while brightness was already
read as 13824, causing 13824/100 = 13824% display.
Now maxBrightness is read first, then brightness is triggered.
Notification Server:
- Uses Quickshell.Services.Notifications
- Auto-dismiss after timeout
- Persistence support for tracked notifications

Notification Popup (Top Right):
- Shows active notifications
- 3D beveled border effect
- Striped title bar matching theme
- App name, summary, body display
- Action buttons support
- Urgency color coding (critical = red)
- Click to dismiss

Notification History Panel (Right Side):
- Full-height side panel
- Lists all tracked notifications
- Clear All button
- Urgency indicator bars
- Dismiss individual notifications
- Empty state message

Taskbar Integration:
- Notification bell button in taskbar
- Opens/closes history panel

Keybind:
- SUPER+N to toggle notification history
- Use root.notificationCount property instead of undefined
  trackedNotifications.count
- Use Connections to listen for valuesChanged signal
- Update count when values change
- Fix Clear All to use slice() for safe iteration
- Summary: 11px → 13px (popup), 12px (history)
- Body: 9px → 11px with 0.8 opacity
- Better spacing and padding
- Use text color instead of shadow for body
Remove auto-dismiss timer - notifications now stay until user
clicks dismiss or Clear All
- Notifications now persist in history even after popup dismissal
- Added notificationHistory array with custom objects
- History shows: appName, timestamp, summary, body
- Dismiss from history removes only from history list
- Clear All clears entire history
- Active popup dismissals don't affect history
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant