-
Notifications
You must be signed in to change notification settings - Fork 0
Quickshell #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Quickshell #3
Conversation
Adapted end-4/dots-hyprland quickshell config for NixOS with Stylix theming. Features: - Quickshell bar with weather (Aachen), clock, system tray, workspaces - Overview/app launcher (ALT+SPACE) - Sidebar with calendar, quick toggles, sliders - Notification popups and OSD - Session screen for logout/shutdown - Material Design 3 colors generated from Stylix base16 theme Removed: - Waffle (Windows-like UI alternative) - Cheatsheet, on-screen keyboard, wallpaper selector - AI/Gemini features, anime/booru references - Color generation scripts (using Stylix instead) Based on: https://github.com/end-4/dots-hyprland Original author: end-4 (https://github.com/end-4)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR introduces a comprehensive Quickshell configuration system with extensive QML-based UI components, utility functions, and application logic for a desktop shell environment.
Key Changes:
- Implements a complete widget library with Material Design 3 components (buttons, toggles, navigation, dialogs, etc.)
- Adds configuration management with JSON-based persistence and file watching
- Provides utility functions for color manipulation, string processing, file operations, and date handling
- Includes specialized components for notifications, media controls, system monitoring, and quick settings
Reviewed changes
Copilot reviewed 129 out of 582 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| StyledComboBox.qml | Material 3 styled dropdown with icon support and animations |
| StyledBlurEffect.qml | Blur effect component using MultiEffect |
| SineCookie.qml | Animated sine wave shape with rotation capabilities |
| SelectionGroupButton.qml | Toggleable button for grouped selections |
| SelectionDialog.qml | Modal dialog for item selection with radio buttons |
| SecondaryTabButton.qml | Tab button with ripple effect animation |
| SecondaryTabBar.qml | Tab bar with animated indicator and wheel navigation |
| ScrollEdgeFade.qml | Gradient fade effect for scrollable content edges |
| RoundCorner.qml | Customizable rounded corner shape component |
| RippleButtonWithIcon.qml | Button combining Material icon with text content |
| RippleButton.qml | Material Design ripple effect button |
| Revealer.qml | GTK-style revealer for animated content visibility |
| PopupToolTip.qml | Tooltip with anchor positioning support |
| PointingHandLinkHover.qml | Mouse area for link hover cursor changes |
| PointingHandInteraction.qml | Mouse area for pointer cursor without event capture |
| PagePlaceholder.qml | Empty state component with icon and description |
| OptionalMaterialSymbol.qml | Conditionally rendered Material icon |
| NotificationListView.qml | List view for notification groups |
| NotificationItem.qml | Individual notification display with actions and drag-to-dismiss |
| NotificationGroupExpandButton.qml | Button to expand/collapse notification groups |
| NotificationGroup.qml | Grouped notifications from the same app |
| NotificationAppIcon.qml | Icon component for notification app identity |
| NotificationActionButton.qml | Action button within notifications |
| NoticeBox.qml | Information box with icon and optional actions |
| NavigationRailTabArray.qml | Container for navigation rail tabs with animated indicator |
| NavigationRailExpandButton.qml | Toggle button for expanding navigation rail |
| NavigationRailButton.qml | Individual navigation rail tab item |
| NavigationRail.qml | Vertical navigation container |
| MenuButton.qml | Menu item button component |
| MaterialTextField.qml | Material 3 text input field |
| MaterialTextArea.qml | Material 3 multi-line text area |
| MaterialSymbol.qml | Material Symbols font icon renderer |
| MaterialShapeWrappedMaterialSymbol.qml | Material icon wrapped in shaped container |
| MaterialShape.qml | Renders various Material Design shapes |
| MaterialLoadingIndicator.qml | Animated loading indicator with shape morphing |
| MaterialCookie.qml | Cookie-shaped polygon component |
| LightDarkPreferenceButton.qml | Theme selector with preview |
| KeyboardKey.qml | Keyboard key visual representation |
| IconToolbarButton.qml | Toolbar button with icon only |
| IconAndTextToolbarButton.qml | Toolbar button with icon and text |
| GroupButton.qml | Button for group layouts with bounce effect |
| Graph.qml | Simple line graph canvas component |
| FocusedScrollMouseArea.qml | Mouse area with scroll tracking |
| FlowButtonGroup.qml | Flow layout container for buttons |
| FloatingActionButton.qml | Material 3 FAB implementation |
| Favicon.qml | Website favicon loader and renderer |
| FadeLoader.qml | Loader with fade transition |
| DragManager.qml | Mouse area for drag gesture handling |
| DirectoryIcon.qml | Icon for directory entries based on type |
| DialogListItem.qml | List item for dialogs |
| DialogButton.qml | Material 3 dialog action button |
| CustomIcon.qml | Custom icon loader with colorization |
| ContentSubsectionLabel.qml | Label for content subsections |
| ContentSubsection.qml | Content subsection container with title |
| ContentSection.qml | Major content section with icon and title |
| ContentPage.qml | Scrollable page container for content |
| ConfigSwitch.qml | Configuration toggle with icon and label |
| ConfigSpinBox.qml | Configuration number input with icon |
| ConfigSelectionArray.qml | Array of selection buttons for configuration |
| ConfigRow.qml | Row layout for configuration items |
| ClippedProgressBar.qml | Progress bar with text clipping effect |
| ClippedFilledCircularProgress.qml | Circular progress with text clipping |
| CliphistImage.qml | Image renderer for clipboard history |
| CircularProgress.qml | Material 3 circular progress indicator |
| Circle.qml | Simple circle shape component |
| CalendarView.qml | Calendar view with scrolling and date selection |
| ButtonGroup.qml | Container for grouped buttons with animation |
| AddressBreadcrumb.qml | Breadcrumb navigation for file paths |
| AddressBar.qml | Address bar with breadcrumb and text input modes |
| ImageDownloaderProcess.qml | Process for downloading and identifying images |
| ScreenSnipToggle.qml | Quick toggle for screen capture |
| QuickToggleModel.qml | Data model for quick toggle items |
| PowerProfilesToggle.qml | Toggle for power profile selection |
| OnScreenKeyboardToggle.qml | Toggle for virtual keyboard |
| NotificationToggle.qml | Toggle for notification silence |
| NightLightToggle.qml | Toggle for night light feature |
| NetworkToggle.qml | Toggle for network connectivity |
| MusicRecognitionToggle.qml | Toggle for music identification |
| MicToggle.qml | Toggle for microphone mute |
| IdleInhibitorToggle.qml | Toggle for idle inhibition |
| GameModeToggle.qml | Toggle for game mode optimizations |
| EasyEffectsToggle.qml | Toggle for audio effects |
| DarkModeToggle.qml | Toggle for dark mode theme |
| ColorPickerToggle.qml | Action for color picker tool |
| CloudflareWarpToggle.qml | Toggle for Cloudflare WARP VPN |
| BluetoothToggle.qml | Toggle for Bluetooth connectivity |
| AudioToggle.qml | Toggle for audio output mute |
| AntiFlashbangToggle.qml | Toggle for anti-flashbang feature |
| FolderListModelWithHistory.qml | Folder list with navigation history |
| AnimatedTabIndexPair.qml | Model for animated tab transitions |
| AdaptedMaterialScheme.qml | Material color scheme adaptation |
| levendist.js | Levenshtein distance computation for fuzzy matching |
| fuzzysort.js | Fuzzy search library |
| StringUtils.qml | String manipulation utilities |
| Session.qml | Session management functions (lock, logout, poweroff, etc.) |
| ObjectUtils.qml | Object conversion and manipulation utilities |
| NotificationUtils.qml | Notification helper functions |
| Levendist.qml | Wrapper for levenshtein distance JS library |
| Fuzzy.qml | Wrapper for fuzzy sort JS library |
| FileUtils.qml | File path manipulation utilities |
| DateUtils.qml | Date calculation utilities |
| ColorUtils.qml | Color manipulation functions |
| Persistent.qml | Persistent state management with JSON file storage |
| Images.qml | Image format and thumbnail utilities |
| Icons.qml | Icon mapping utilities |
| Directories.qml | XDG directory paths and shell-specific paths |
| Config.qml | Configuration management with file watching and JSON persistence |
| killDialog.qml | Dialog for killing conflicting programs |
| fluent/README.md | Attribution for Fluent design icons |
| .qmlformat.ini | QML formatter configuration |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @@ -0,0 +1,222 @@ | |||
| #!/usr/bin/env -S\_/bin/sh\_-c\_"source\_\$(eval\_echo\_\$ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate&&exec\_python\_-E\_"\$0"\_"\$@"" | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix broken shebang in Hyprland keybind parser
The new Hyprland keybind parser won’t start because the shebang is mangled (#!/usr/bin/env -S\_/bin/sh\_-c\_...)—env cannot parse the backslash/underscore-littered arguments, so the script is not executable by the Process blocks in HyprlandKeybinds.qml. With the command failing before Python even starts, keybind JSON never loads and any UI that relies on it will be empty. The shebang should be a valid env -S /bin/sh -c ... invocation without the escaped underscores.
Useful? React with 👍 / 👎.
No description provided.