mirror of
https://github.com/end-4/dots-hyprland.git
synced 2026-06-05 23:09:26 -05:00
Merge branch 'main' into hefty-hype
This commit is contained in:
+27
-26
@@ -17,26 +17,35 @@
|
||||
<h3></h3>
|
||||
</div>
|
||||
|
||||
<details>
|
||||
<details>
|
||||
<summary>What this is/isn't</summary>
|
||||
|
||||
- Technically, configuration files
|
||||
- Realistically, mostly the custom graphical shell
|
||||
- NOT a system setup script: no graphic drivers, no zram setup, etc.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Notable features</summary>
|
||||
|
||||
- **Overview**: Shows open apps with live previews. Type to search/calculate/run
|
||||
- **AI**: Gemini API and Ollama models
|
||||
- **Autogenerated colors**: Accessible and beautiful Material colors based on wallpaper
|
||||
- **Overview**: Shows open apps with live previews
|
||||
- **AI**: Gemini, Ollama, and more
|
||||
- **QoL**: screen translation, anti-flashbang, Google Lens
|
||||
- **Material themes**: Choose your wallpaper, done, enjoy
|
||||
- **Transparent installation**: Every command is shown before it's run
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Installation (illogical-impulse Quickshell)</summary>
|
||||
<summary>Installation</summary>
|
||||
|
||||
- _If you're new to Linux and decide to use Hyprland, you're in for a tough ride._
|
||||
- Just run `bash <(curl -s https://ii.clsty.link/get)`
|
||||
- Or, clone this repo and run `./setup install`
|
||||
- See [document](https://ii.clsty.link/en/ii-qs/01setup/) for details.
|
||||
- **Default keybinds**: Should be somewhat familiar to Windows or GNOME users. Important ones:
|
||||
- See [the wiki](https://ii.clsty.link/en/ii-qs/01setup/) for more details
|
||||
- **Keybinds**: Should be somewhat familiar to Windows or GNOME users. Important ones:
|
||||
- `Super`+`/` = keybind list
|
||||
- `Super`+`Enter` = terminal
|
||||
- Should look something like this:
|
||||
<img width="1412" height="828" alt="image" src="https://github.com/user-attachments/assets/8f7bd216-9e03-47e3-8709-0008772a4133" />
|
||||
|
||||
|
||||
</details>
|
||||
@@ -50,13 +59,11 @@
|
||||
| [Quickshell](https://quickshell.outfoxxed.me/) | A QtQuick-based widget system, used for the status bar, sidebars, etc. |
|
||||
| Others | See [deps-info.md](https://github.com/end-4/dots-hyprland/blob/main/sdata/deps-info.md) |
|
||||
|
||||
[not every bar is waybar] [not every bar is waybar] [not every bar is waybar] [not every bar is waybar] [not every bar is waybar]
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Discord</summary>
|
||||
<a href="https://discord.gg/GtdRBXgMwq"> Server link </a> | I hope this provides a friendlier environment for support without needing me to personally accept every friend request/DM. For real issues, prefer GitHub
|
||||
<a href="https://discord.gg/GtdRBXgMwq"> Server link</a> | I hope this provides a friendlier environment for support without needing me to personally accept every friend request/DM. For real issues, prefer GitHub
|
||||
|
||||
</details>
|
||||
|
||||
@@ -69,21 +76,15 @@
|
||||
<img src="assets/illogical-impulse.svg" alt="illogical-impulse logo" style="float:left; width:400;">
|
||||
</div>
|
||||
|
||||
### illogical-impulse<sup>Quickshell</sup>
|
||||
|
||||
This is the latest and only supported style. Other stuff are still there mostly for viewing pleasure and not actual use, but code is still available, see below.
|
||||
|
||||
Widget system: Quickshell | Support: Yes
|
||||
|
||||
[Showcase video](https://www.youtube.com/watch?v=RPwovTInagE)
|
||||
|
||||
| AI, settings app | Some widgets |
|
||||
|:---|:---------------|
|
||||
| <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/ea0154a1-e984-4bb6-a424-23247cefe3c6" /> | <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/6eba0d57-2606-4cea-8993-e6f169e82e70" /> |
|
||||
| Window management | Built with love |
|
||||
| <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/a7e6d29c-e82c-4934-98db-36c810ec999b" /> | <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/1b806b53-9310-4c63-84a9-cec9e311d439" /> |
|
||||
|
||||
#### Other older styles are available at the end of the readme
|
||||
| <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/5d4e7d07-d0b4-4406-a4c9-ed7ba90e3fe4" /> | <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/6a32395f-9437-4192-8faf-2951a9e84cbe" /> |
|
||||
| Window management | wow look its orange |
|
||||
| <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/c51bed8b-3670-4d4c-9074-873be224fb8e" /> | <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/98703a66-0743-439f-a721-cef7afa6ab95" /> |
|
||||
|
||||
<div align="center">
|
||||
<h2>• thank you •</h2>
|
||||
@@ -111,15 +112,15 @@ Widget system: Quickshell | Support: Yes
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
<h2>• old, UNSUPPORTED stuff •</h2>
|
||||
<h2>• previous styles •</h2>
|
||||
<h3></h3>
|
||||
</div>
|
||||
|
||||
- **Unsupported!**
|
||||
- **Source**: illogical-impulse AGS in `ii-ags` branch, others in `archive` branch.
|
||||
- **No support** will be provided
|
||||
- **Reverse chronological order** list. Older = more naive & spaghetti code
|
||||
- List is in reverse chronological order
|
||||
|
||||
### illogical-impulse<sup>AGS</sup>
|
||||
### illogical-impulse (AGS)
|
||||
|
||||
Widget system: AGS | Support: No
|
||||
|
||||
@@ -131,7 +132,7 @@ Widget system: AGS | Support: No
|
||||
|
||||
#### m3ww
|
||||
|
||||
Widget system: EWW | Support: No, dead
|
||||
Widget system: EWW | Support: No
|
||||
|
||||
<a href="https://streamable.com/85ch8x">
|
||||
<img src="https://github.com/end-4/dots-hyprland/assets/97237370/09533e64-b6d7-47eb-a840-ee90c6776adf" alt="Material Eww!">
|
||||
|
||||
@@ -6,6 +6,10 @@
|
||||
@media (prefers-color-scheme: light) {
|
||||
/* Accents */
|
||||
@define-color accent_color {{colors.primary.light.hex}};
|
||||
@define-color accent_hover_color rgba({{colors.primary.light.red}}, {{colors.primary.light.green}}, {{colors.primary.light.blue}}, 0.08);
|
||||
@define-color accent_vibrant_hover_color rgba({{colors.primary.light.red}}, {{colors.primary.light.green}}, {{colors.primary.light.blue}}, 0.18);
|
||||
@define-color accent_active_color rgba({{colors.primary.light.red}}, {{colors.primary.light.green}}, {{colors.primary.light.blue}}, 0.1);
|
||||
@define-color accent_vibrant_active_color rgba({{colors.primary.light.red}}, {{colors.primary.light.green}}, {{colors.primary.light.blue}}, 0.26);
|
||||
@define-color accent_fg_color {{colors.on_primary.light.hex}};
|
||||
@define-color accent_bg_color {{colors.primary.light.hex}};
|
||||
@define-color destructive_bg_color {{colors.error_container.light.hex}};
|
||||
@@ -22,11 +26,13 @@
|
||||
@define-color headerbar_fg_color {{colors.on_surface.light.hex}};
|
||||
@define-color card_bg_color {{colors.surface_container.light.hex}};
|
||||
@define-color card_fg_color {{colors.on_surface.light.hex}};
|
||||
@define-color sidebar_bg_color {{colors.surface_container.light.hex}};
|
||||
@define-color sidebar_bg_color {{colors.background.light.hex}};
|
||||
@define-color sidebar_fg_color {{colors.on_surface.light.hex}};
|
||||
@define-color sidebar_row_active_bg_color {{colors.secondary_container.light.hex}};
|
||||
@define-color sidebar_row_active_fg_color {{colors.on_secondary_container.light.hex}};
|
||||
@define-color secondary_sidebar_bg_color {{colors.surface_container_low.light.hex}};
|
||||
@define-color secondary_sidebar_backdrop_color {{colors.surface_container_low.light.hex}};
|
||||
@define-color secondary_sidebar_fg_color {{colors.on_surface.light.hex}};
|
||||
@define-color secondary_sidebar_fg_color {{colors.on_surface_variant.light.hex}};
|
||||
@define-color sidebar_border_color @sidebar_bg_color;
|
||||
@define-color sidebar_backdrop_color @sidebar_bg_color;
|
||||
@define-color view_bg_color {{colors.surface_container_lowest.light.hex}};
|
||||
@@ -36,16 +42,37 @@
|
||||
/* Popups */
|
||||
@define-color popover_bg_color {{colors.surface_container_highest.light.hex}};
|
||||
@define-color popover_fg_color {{colors.on_surface.light.hex}};
|
||||
@define-color popover_fg_hover_color rgba({{colors.on_surface.light.red}}, {{colors.on_surface.light.green}}, {{colors.on_surface.light.blue}}, 0.08);
|
||||
@define-color dialog_bg_color {{colors.surface_container_high.light.hex}};
|
||||
@define-color dialog_fg_color {{colors.on_surface.light.hex}};
|
||||
@define-color thumbnail_bg_color {{colors.surface_container_high.light.hex}};
|
||||
@define-color thumbnail_fg_color {{colors.on_surface.light.hex}};
|
||||
|
||||
/* Material */
|
||||
@define-color inverse_on_surface {{colors.inverse_on_surface.light.hex}};
|
||||
@define-color inverse_primary {{colors.inverse_primary.light.hex}};
|
||||
@define-color inverse_surface {{colors.inverse_surface.light.hex}};
|
||||
@define-color surface_container_highest {{colors.surface_container_highest.light.hex}};
|
||||
@define-color surface_container_high {{colors.surface_container_high.light.hex}};
|
||||
@define-color on_surface_variant {{colors.on_surface_variant.light.hex}};
|
||||
@define-color surface_variant {{colors.surface_variant.light.hex}};
|
||||
|
||||
@define-color outline {{colors.outline.light.hex}};
|
||||
|
||||
/* Material state layers */
|
||||
@define-color inverse_on_surface_hover rgba({{colors.inverse_on_surface.light.red}}, {{colors.inverse_on_surface.light.green}}, {{colors.inverse_on_surface.light.blue}}, 0.08);
|
||||
@define-color inverse_on_surface_active rgba({{colors.inverse_on_surface.light.red}}, {{colors.inverse_on_surface.light.green}}, {{colors.inverse_on_surface.light.blue}}, 0.18);
|
||||
@define-color inverse_primary_hover rgba({{colors.inverse_primary.light.red}}, {{colors.inverse_primary.light.green}}, {{colors.inverse_primary.light.blue}}, 0.08);
|
||||
@define-color inverse_primary_active rgba({{colors.inverse_primary.light.red}}, {{colors.inverse_primary.light.green}}, {{colors.inverse_primary.light.blue}}, 0.18);
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
|
||||
/* Accents */
|
||||
@define-color accent_color {{colors.primary.dark.hex}};
|
||||
@define-color accent_hover_color rgba({{colors.primary.dark.red}}, {{colors.primary.dark.green}}, {{colors.primary.dark.blue}}, 0.08);
|
||||
@define-color accent_vibrant_hover_color rgba({{colors.primary.dark.red}}, {{colors.primary.dark.green}}, {{colors.primary.dark.blue}}, 0.18);
|
||||
@define-color accent_active_color rgba({{colors.primary.dark.red}}, {{colors.primary.dark.green}}, {{colors.primary.dark.blue}}, 0.1);
|
||||
@define-color accent_vibrant_active_color rgba({{colors.primary.dark.red}}, {{colors.primary.dark.green}}, {{colors.primary.dark.blue}}, 0.2);
|
||||
@define-color accent_fg_color {{colors.on_primary.dark.hex}};
|
||||
@define-color accent_bg_color {{colors.primary.dark.hex}};
|
||||
@define-color destructive_bg_color {{colors.error_container.dark.hex}};
|
||||
@@ -62,11 +89,13 @@
|
||||
@define-color headerbar_fg_color {{colors.on_surface.dark.hex}};
|
||||
@define-color card_bg_color {{colors.surface_container.dark.hex}};
|
||||
@define-color card_fg_color {{colors.on_surface.dark.hex}};
|
||||
@define-color sidebar_bg_color {{colors.surface_container.dark.hex}};
|
||||
@define-color sidebar_bg_color {{colors.background.dark.hex}};
|
||||
@define-color sidebar_fg_color {{colors.on_surface.dark.hex}};
|
||||
@define-color sidebar_row_active_bg_color {{colors.secondary_container.dark.hex}};
|
||||
@define-color sidebar_row_active_fg_color {{colors.on_secondary_container.dark.hex}};
|
||||
@define-color secondary_sidebar_bg_color {{colors.surface_container_low.dark.hex}};
|
||||
@define-color secondary_sidebar_backdrop_color {{colors.surface_container_low.dark.hex}};
|
||||
@define-color secondary_sidebar_fg_color {{colors.on_surface.dark.hex}};
|
||||
@define-color secondary_sidebar_fg_color {{colors.on_surface_variant.dark.hex}};
|
||||
@define-color sidebar_border_color @sidebar_bg_color;
|
||||
@define-color sidebar_backdrop_color @sidebar_bg_color;
|
||||
@define-color view_bg_color {{colors.surface_container_lowest.dark.hex}};
|
||||
@@ -76,8 +105,423 @@
|
||||
/* Popups */
|
||||
@define-color popover_bg_color {{colors.surface_container_highest.dark.hex}};
|
||||
@define-color popover_fg_color {{colors.on_surface.dark.hex}};
|
||||
@define-color popover_fg_hover_color rgba({{colors.on_surface.dark.red}}, {{colors.on_surface.dark.green}}, {{colors.on_surface.dark.blue}}, 0.08);
|
||||
@define-color dialog_bg_color {{colors.surface_container_high.dark.hex}};
|
||||
@define-color dialog_fg_color {{colors.on_surface.dark.hex}};
|
||||
@define-color thumbnail_bg_color {{colors.surface_container_high.dark.hex}};
|
||||
@define-color thumbnail_fg_color {{colors.on_surface.dark.hex}};
|
||||
|
||||
/* Material */
|
||||
@define-color inverse_on_surface {{colors.inverse_on_surface.dark.hex}};
|
||||
@define-color inverse_primary {{colors.inverse_primary.dark.hex}};
|
||||
@define-color inverse_surface {{colors.inverse_surface.dark.hex}};
|
||||
@define-color surface_container_highest {{colors.surface_container_highest.dark.hex}};
|
||||
@define-color surface_container_high {{colors.surface_container_high.dark.hex}};
|
||||
@define-color on_surface_variant {{colors.on_surface_variant.dark.hex}};
|
||||
@define-color surface_variant {{colors.surface_variant.dark.hex}};
|
||||
|
||||
@define-color outline {{colors.outline.dark.hex}};
|
||||
|
||||
/* Material state layers */
|
||||
@define-color inverse_on_surface_hover rgba({{colors.inverse_on_surface.dark.red}}, {{colors.inverse_on_surface.dark.green}}, {{colors.inverse_on_surface.dark.blue}}, 0.08);
|
||||
@define-color inverse_on_surface_active rgba({{colors.inverse_on_surface.dark.red}}, {{colors.inverse_on_surface.dark.green}}, {{colors.inverse_on_surface.dark.blue}}, 0.18);
|
||||
@define-color inverse_primary_hover rgba({{colors.inverse_primary.dark.red}}, {{colors.inverse_primary.dark.green}}, {{colors.inverse_primary.dark.blue}}, 0.08);
|
||||
@define-color inverse_primary_active rgba({{colors.inverse_primary.dark.red}}, {{colors.inverse_primary.dark.green}}, {{colors.inverse_primary.dark.blue}}, 0.18);
|
||||
}
|
||||
|
||||
* {
|
||||
caret-color: @accent_color;
|
||||
}
|
||||
|
||||
window {
|
||||
background: @window_bg_color;
|
||||
}
|
||||
|
||||
.text-button {
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
.text-button,
|
||||
.text-button * {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
splitbutton {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
splitbutton button {
|
||||
border-top-left-radius: 999px;
|
||||
border-bottom-left-radius: 999px;
|
||||
border-top-right-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
}
|
||||
|
||||
splitbutton separator {
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
splitbutton menubutton {
|
||||
border-top-left-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-top-right-radius: 999px;
|
||||
border-bottom-right-radius: 999px;
|
||||
}
|
||||
|
||||
.popup-menu-item {
|
||||
background-color: transparent;
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
#NautilusPathBar #NautilusPathButton * {
|
||||
color: @accent_color;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
#NautilusPathBar #NautilusPathButton {
|
||||
background: @accent_active_color;
|
||||
border-radius: 4px;
|
||||
margin: 0;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
#NautilusPathBar {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
#NautilusPathBar box box:first-child #NautilusPathButton {
|
||||
border-radius: 24px 4px 4px 24px;
|
||||
}
|
||||
|
||||
#NautilusPathBar box box:last-child #NautilusPathButton {
|
||||
border-radius: 4px 24px 24px 4px;
|
||||
}
|
||||
|
||||
#NautilusPathBar #NautilusPathButton.current-dir.current-dir {
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
#NautilusPathBar #NautilusPathButton * {
|
||||
color: @sidebar_row_active_fg_color;
|
||||
}
|
||||
|
||||
#NautilusPathBar .dim-label {
|
||||
font-size: 0;
|
||||
}
|
||||
|
||||
#NautilusPathBar button .dim-label {
|
||||
font-size: 14px;
|
||||
opacity: 100%;
|
||||
}
|
||||
|
||||
#NautilusPathBar button {
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
|
||||
#NautilusPathBar button:checked {
|
||||
background: @accent_vibrant_hover_color;
|
||||
}
|
||||
|
||||
headerbar button {
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
headerbar >windowhandle box stack > box:nth-child(2) {
|
||||
background: @accent_active_color;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.nautilus-list-view,
|
||||
.nautilus-grid-view {
|
||||
background: @secondary_sidebar_bg_color;
|
||||
border-radius: 16px;
|
||||
}
|
||||
|
||||
.navigation-sidebar row * {
|
||||
color: @sidebar_fg_color;
|
||||
font-weight: 500;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.navigation-sidebar row {
|
||||
border-radius: 999px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.navigation-sidebar row:hover {
|
||||
background: @accent_hover_color;
|
||||
}
|
||||
|
||||
.navigation-sidebar row:active {
|
||||
background: @accent_active_color;
|
||||
}
|
||||
|
||||
.navigation-sidebar row:selected {
|
||||
background: @sidebar_row_active_bg_color;
|
||||
}
|
||||
|
||||
.navigation-sidebar row:selected * {
|
||||
color: @sidebar_row_active_fg_color;
|
||||
}
|
||||
|
||||
banner widget {
|
||||
border-radius: 16px 0 0 16px;
|
||||
margin-bottom: 8px;
|
||||
background-color: @secondary_sidebar_bg_color;
|
||||
}
|
||||
|
||||
.boxed-list {
|
||||
box-shadow: none;
|
||||
background-color: @window_bg_color;
|
||||
}
|
||||
|
||||
.boxed-list row {
|
||||
background: @card_bg_color;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
.boxed-list row.activatable:hover {
|
||||
background-color: @thumbnail_bg_color;
|
||||
}
|
||||
|
||||
.boxed-list row.activatable:active {
|
||||
background-color: @popover_bg_color;
|
||||
}
|
||||
|
||||
.horizontal>listview>row {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.boxed-list row:insensitive {
|
||||
background-color: @card_bg_color;
|
||||
}
|
||||
|
||||
.text-button.toggle {
|
||||
border-radius: 4px;
|
||||
background-color: @surface_container_highest;
|
||||
margin-left: 2px;
|
||||
}
|
||||
|
||||
.text-button.toggle:hover {
|
||||
background-color: @surface_variant;
|
||||
}
|
||||
|
||||
.text-button.toggle:active {
|
||||
background-color: @surface_container_highest;
|
||||
}
|
||||
|
||||
.text-button.toggle * {
|
||||
color: @on_surface_variant;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.boxed-list row:first-child {
|
||||
border-radius: 16px 16px 4px 4px;
|
||||
}
|
||||
|
||||
.boxed-list row:last-child {
|
||||
border-radius: 4px 4px 16px 16px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.text-button.toggle:first-child {
|
||||
border-radius: 16px 4px 4px 16px;
|
||||
}
|
||||
|
||||
.text-button.toggle:last-child {
|
||||
border-radius: 4px 16px 16px 4px;
|
||||
}
|
||||
|
||||
.boxed-list row:first-child:last-child,
|
||||
.text-button.toggle:first-child:last-child {
|
||||
border-radius: 16px;
|
||||
}
|
||||
|
||||
.text-button.toggle:checked {
|
||||
background-color: @accent_bg_color;
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
.text-button.toggle:checked * {
|
||||
color: @accent_fg_color;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
button.back {
|
||||
border-radius: 999px;
|
||||
background-color: @accent_hover_color;
|
||||
padding-left: 4px;
|
||||
padding-right: 6px;
|
||||
}
|
||||
|
||||
button.back * {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
button.back:hover {
|
||||
background-color: @accent_hover_color;
|
||||
}
|
||||
|
||||
button.back:active {
|
||||
background-color: @accent_active_color;
|
||||
}
|
||||
|
||||
/* switch */
|
||||
|
||||
switch {
|
||||
background: @secondary_sidebar_bg_color;
|
||||
border: @outline 2px solid;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
switch:checked {
|
||||
background: @accent_color;
|
||||
border-color: @accent_color;
|
||||
}
|
||||
|
||||
switch slider {
|
||||
background: @outline;
|
||||
margin: 3px;
|
||||
min-width: 0;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
switch:checked slider {
|
||||
background: @accent_fg_color;
|
||||
outline: transparent 2px solid;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
/* toast */
|
||||
|
||||
toast {
|
||||
border-radius: 999px;
|
||||
padding: 6px 6px 6px 10px;
|
||||
background-color: @inverse_surface;
|
||||
color: @inverse_on_surface;
|
||||
}
|
||||
|
||||
toast .heading {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
toast button {
|
||||
background-color: transparent;
|
||||
color: @inverse_primary;
|
||||
}
|
||||
|
||||
toast button:hover {
|
||||
background-color: @inverse_primary_hover;
|
||||
}
|
||||
|
||||
toast button:active {
|
||||
background-color: @inverse_primary_active;
|
||||
}
|
||||
|
||||
toast button:last-child {
|
||||
color: @inverse_on_surface;
|
||||
}
|
||||
|
||||
toast button:last-child:hover {
|
||||
background-color: @inverse_on_surface_hover;
|
||||
}
|
||||
|
||||
toast button:last-child:active {
|
||||
background-color: @inverse_on_surface_active;
|
||||
}
|
||||
|
||||
.collapse-spacing.vertical {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
tabbox {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
tabbox tabboxchild tab,
|
||||
tabbox tabboxchild {
|
||||
background: transparent;
|
||||
padding: 0 8px 3px;
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
tabbox tabboxchild tab {
|
||||
padding: 3px 8px;
|
||||
}
|
||||
|
||||
tab:hover {
|
||||
background: @accent_hover_color;
|
||||
}
|
||||
|
||||
tab:active,
|
||||
tab:selected {
|
||||
background: @accent_active_color;
|
||||
}
|
||||
|
||||
tab .tab-title {
|
||||
padding: 0 12px;
|
||||
color: @secondary_sidebar_fg_color;
|
||||
}
|
||||
|
||||
tab .tab-title label {
|
||||
border: none;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
tab:selected .tab-title label {
|
||||
padding: 6px 0;
|
||||
color: @accent_color;
|
||||
}
|
||||
|
||||
/* popup menu */
|
||||
|
||||
popover listview.view row,
|
||||
popover listview.view row:first-child,
|
||||
popover listview.view row:last-child {
|
||||
background: transparent;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
popover contents,
|
||||
popover arrow {
|
||||
background: @secondary_sidebar_bg_color;
|
||||
}
|
||||
|
||||
popover listview.view row:hover {
|
||||
background: @popover_fg_hover_color;
|
||||
}
|
||||
|
||||
popover listview.view row:active {
|
||||
background: @popover_fg_active_color;
|
||||
}
|
||||
|
||||
modelbutton {
|
||||
padding: 2px 10px;
|
||||
}
|
||||
|
||||
modelbutton * {
|
||||
color: @popover_fg_color;
|
||||
}
|
||||
|
||||
modelbutton:hover {
|
||||
background-color: @popover_fg_hover_color;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
background-color: @inverse_surface;
|
||||
color: @inverse_on_surface;
|
||||
font-size: 11px;
|
||||
padding: 5px 9px;
|
||||
}
|
||||
|
||||
/* search */
|
||||
|
||||
.entry-completion.entry-completion.entry-completion contents {
|
||||
padding: 0;
|
||||
}
|
||||
.image-button.flat arrow {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
@@ -21,14 +21,15 @@ MouseArea {
|
||||
id: batteryProgress
|
||||
anchors.centerIn: parent
|
||||
vertical: true
|
||||
valueBarWidth: 21
|
||||
valueBarHeight: 40
|
||||
valueBarWidth: 20
|
||||
valueBarHeight: 36
|
||||
value: percentage
|
||||
// value: 1
|
||||
highlightColor: (isLow && !isCharging) ? Appearance.m3colors.m3error : Appearance.colors.colOnSecondaryContainer
|
||||
|
||||
font {
|
||||
pixelSize: text.length > 2 ? 11 : 13
|
||||
weight: text.length > 2 ? Font.Medium : Font.DemiBold
|
||||
pixelSize: 13
|
||||
weight: Font.DemiBold
|
||||
}
|
||||
|
||||
textMask: Item {
|
||||
@@ -36,20 +37,29 @@ MouseArea {
|
||||
width: batteryProgress.valueBarWidth
|
||||
height: batteryProgress.valueBarHeight
|
||||
|
||||
ColumnLayout {
|
||||
Column {
|
||||
anchors.centerIn: parent
|
||||
spacing: 0
|
||||
spacing: -4
|
||||
|
||||
MaterialSymbol {
|
||||
id: boltIcon
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
fill: 1
|
||||
text: isCharging ? "bolt" : Icons.getBatteryIcon(Battery.percentage * 100)
|
||||
text: {
|
||||
if (batteryProgress.value == 1) {
|
||||
return "check";
|
||||
} else if (root.isCharging) {
|
||||
return "bolt";
|
||||
} else {
|
||||
return Icons.getBatteryIcon(Battery.percentage * 100);
|
||||
}
|
||||
}
|
||||
iconSize: Appearance.font.pixelSize.normal
|
||||
animateChange: true
|
||||
}
|
||||
StyledText {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
visible: text.length <= 2
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
font: batteryProgress.font
|
||||
text: batteryProgress.text
|
||||
}
|
||||
|
||||
@@ -140,13 +140,6 @@ Item { // Bar content region
|
||||
Layout.fillHeight: false
|
||||
}
|
||||
|
||||
HorizontalBarSeparator {}
|
||||
|
||||
VerticalDateWidget {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: false
|
||||
}
|
||||
|
||||
HorizontalBarSeparator {
|
||||
visible: Battery.available
|
||||
}
|
||||
|
||||
@@ -8,26 +8,44 @@ import qs.modules.ii.bar as Bar
|
||||
Item {
|
||||
id: root
|
||||
property bool borderless: Config.options.bar.borderless
|
||||
implicitHeight: clockColumn.implicitHeight
|
||||
implicitHeight: column.implicitHeight
|
||||
implicitWidth: Appearance.sizes.verticalBarWidth
|
||||
|
||||
ColumnLayout {
|
||||
id: clockColumn
|
||||
anchors.centerIn: parent
|
||||
spacing: 0
|
||||
readonly property string dateTimeString: DateTime.time
|
||||
readonly property bool hasAmPm: dateTimeString.toLowerCase().includes("am") || dateTimeString.toLowerCase().includes("pm")
|
||||
|
||||
Repeater {
|
||||
model: DateTime.time.split(/[: ]/)
|
||||
delegate: StyledText {
|
||||
required property string modelData
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
font.pixelSize: modelData.match(/am|pm/i) ?
|
||||
Appearance.font.pixelSize.smaller // Smaller "am"/"pm" text
|
||||
: Appearance.font.pixelSize.large
|
||||
color: Appearance.colors.colOnLayer1
|
||||
text: modelData.padStart(2, "0")
|
||||
Column {
|
||||
id: column
|
||||
anchors.centerIn: parent
|
||||
spacing: root.hasAmPm ? 6 : 0
|
||||
|
||||
Column {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: -4
|
||||
|
||||
Repeater {
|
||||
model: root.dateTimeString.split(/[: ]/)
|
||||
delegate: StyledText {
|
||||
required property string modelData
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
font.pixelSize: {
|
||||
if (modelData.match(/am|pm/i))
|
||||
return Appearance.font.pixelSize.smaller;
|
||||
else
|
||||
// Smaller "am"/"pm" text
|
||||
return Appearance.font.pixelSize.large;
|
||||
}
|
||||
color: Appearance.colors.colOnLayer1
|
||||
text: modelData.padStart(2, "0")
|
||||
}
|
||||
}
|
||||
}
|
||||
StyledText {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
font.pixelSize: Appearance.font.pixelSize.smallest
|
||||
color: Appearance.colors.colOnLayer1
|
||||
text: DateTime.shortDate
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
import qs.modules.common
|
||||
import qs.modules.common.widgets
|
||||
import qs.services
|
||||
import QtQuick
|
||||
import QtQuick.Shapes
|
||||
import QtQuick.Layouts
|
||||
import qs.modules.ii.bar as Bar
|
||||
|
||||
Item { // Full hitbox
|
||||
id: root
|
||||
|
||||
implicitHeight: content.implicitHeight
|
||||
implicitWidth: Appearance.sizes.verticalBarWidth
|
||||
property var dayOfMonth: DateTime.shortDate.split(/[-\/]/)[0] // What if 🍔murica🦅? good question
|
||||
property var monthOfYear: DateTime.shortDate.split(/[-\/]/)[1]
|
||||
|
||||
Item { // Boundaries for date numbers
|
||||
id: content
|
||||
anchors.centerIn: parent
|
||||
implicitWidth: 24
|
||||
implicitHeight: 30
|
||||
|
||||
Shape {
|
||||
id: diagonalLine
|
||||
property real padding: 4
|
||||
anchors.fill: parent
|
||||
preferredRendererType: Shape.CurveRenderer
|
||||
|
||||
ShapePath {
|
||||
strokeWidth: 1.2
|
||||
strokeColor: Appearance.colors.colSubtext
|
||||
fillColor: "transparent"
|
||||
startX: content.width - diagonalLine.padding
|
||||
startY: diagonalLine.padding
|
||||
PathLine {
|
||||
x: diagonalLine.padding
|
||||
y: content.height - diagonalLine.padding
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledText {
|
||||
id: dayText
|
||||
anchors {
|
||||
top: parent.top
|
||||
left: parent.left
|
||||
}
|
||||
font.pixelSize: 13
|
||||
color: Appearance.colors.colOnLayer1
|
||||
text: dayOfMonth
|
||||
}
|
||||
|
||||
StyledText {
|
||||
id: monthText
|
||||
anchors {
|
||||
bottom: parent.bottom
|
||||
right: parent.right
|
||||
}
|
||||
font.pixelSize: 13
|
||||
color: Appearance.colors.colOnLayer1
|
||||
text: monthOfYear
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
]4;0;#$term0 #\]1;0;#$term0 #\]4;1;#$term1 #\]4;2;#$term2 #\]4;3;#$term3 #\]4;4;#$term4 #\]4;5;#$term5 #\]4;6;#$term6 #\]4;7;#$term7 #\]4;8;#$term8 #\]4;9;#$term9 #\]4;10;#$term10 #\]4;11;#$term11 #\]4;12;#$term12 #\]4;13;#$term13 #\]4;14;#$term14 #\]4;15;#$term15 #\]10;#$term7 #\]11;[100]#$term0 #\]12;#$term7 #\]13;#$term7 #\]17;#$term7 #\]19;#$term0 #\]4;232;#$term7 #\]4;256;#$term7 #\]708;[100]#$term0 #\]11;#$term0 #\
|
||||
]4;0;#$term0 #\]1;0;#$term0 #\]4;1;#$term1 #\]4;2;#$term2 #\]4;3;#$term3 #\]4;4;#$term4 #\]4;5;#$term5 #\]4;6;#$term6 #\]4;7;#$term7 #\]4;8;#$term8 #\]4;9;#$term9 #\]4;10;#$term10 #\]4;11;#$term11 #\]4;12;#$term12 #\]4;13;#$term13 #\]4;14;#$term14 #\]4;15;#$term15 #\]4;232;#$term7 #\]4;255;#$primary #\]4;254;#$primaryContainer #\]4;253;#$secondary #\]4;252;#$secondaryContainer #\]4;251;#$tertiary #\]4;250;#$tertiaryContainer #\]4;249;#$error #\]4;248;#$errorContainer #\]4;232;#$onPrimary #\]4;233;#$onPrimaryContainer #\]4;234;#$onSecondary #\]4;235;#$onSecondaryContainer #\]4;236;#$onTertiary #\]4;237;#$onTertiaryContainer #\]4;238;#$onError #\]4;239;#$onErrorContainer #\]4;240;#$onPrimary #\]4;243;#$primary #\]4;244;#$error #\]4;245;#$outlineVariant #\]10;#$term7 #\]11;[100]#$term0 #\]12;#$term7 #\]13;#$term7 #\]17;#$term7 #\]19;#$term0 #\]708;[100]#$term0 #
|
||||
@@ -0,0 +1,38 @@
|
||||
%global commit e65259d68edc034905da477b6c1a349e89e2aa8d
|
||||
%global shortcommit %(c=%{commit}; echo ${c:0:7})
|
||||
%global commits 719
|
||||
%global snapdate 20260213
|
||||
%global tag 4.0.0
|
||||
|
||||
Name: matugen
|
||||
Version: %{tag}^%{commits}.%{shortcommit}
|
||||
Release: 0%{?dist}
|
||||
Summary: A cross-platform material you and base16 color generation tool
|
||||
|
||||
License: GPL-2.0
|
||||
URL: https://github.com/InioX/matugen
|
||||
Source0: %{url}/archive/%{commit}/matugen-%{shortcommit}.tar.gz
|
||||
|
||||
BuildRequires: rust-packaging
|
||||
BuildRequires: cargo
|
||||
BuildRequires: gcc
|
||||
|
||||
%description
|
||||
A cross-platform material you and base16 color generation tool
|
||||
|
||||
%prep
|
||||
%autosetup -n matugen-%{commit} -p1
|
||||
|
||||
%build
|
||||
cargo build --release
|
||||
|
||||
%install
|
||||
install -Dm0755 target/release/matugen %{buildroot}%{_bindir}/matugen
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc README.md
|
||||
%{_bindir}/matugen
|
||||
|
||||
%changelog
|
||||
%autochangelog
|
||||
@@ -68,7 +68,6 @@ packages = [
|
||||
"fish",
|
||||
"fontconfig",
|
||||
"kitty",
|
||||
"matugen",
|
||||
"florian-karsten-space-grotesk-fonts",
|
||||
"starship",
|
||||
"jetbrains-mono-nerd-fonts",
|
||||
|
||||
@@ -28,26 +28,46 @@ function install_RPMS() {
|
||||
local local_specs local_rpms
|
||||
rpmbuildroot="${rpmbuildroot:-${REPO_ROOT}/cache/rpmbuild}"
|
||||
|
||||
x rm -rf "${REPO_ROOT}/cache/rpmbuild"
|
||||
x mkdir -p "$rpmbuildroot"/{BUILD,RPMS,SOURCES}
|
||||
x cp -r "${REPO_ROOT}/sdata/dist-fedora/SPECS" "$rpmbuildroot/"
|
||||
|
||||
x cd $rpmbuildroot/SPECS
|
||||
|
||||
# we need cpptrace BEFORE quickshell-git
|
||||
local_specs=(
|
||||
"$rpm_specs/cpptrace.spec"
|
||||
"$rpm_specs/quickshell-git.spec"
|
||||
"$rpm_specs/hyprland-qt-support.spec"
|
||||
packages=(
|
||||
"cpptrace"
|
||||
"quickshell-git"
|
||||
"hyprland-qt-support"
|
||||
"matugen"
|
||||
)
|
||||
for spec_file in ${local_specs[@]}; do
|
||||
for package in "${packages[@]}"; do
|
||||
echo "start $package"
|
||||
|
||||
spec="$rpm_specs/$package.spec"
|
||||
installed_rpm_stamp=$(rpm -q --qf '%{NVRA}\n' "$package" 2>/dev/null || true)
|
||||
spec_stamp=$(rpmspec -q --qf '%{NVRA}\n' "$spec")
|
||||
|
||||
[[ -f "$spec" ]] || {
|
||||
echo "Missing spec: $spec"
|
||||
continue
|
||||
}
|
||||
|
||||
echo "rpm_specs=$rpm_specs"
|
||||
echo "spec=$spec"
|
||||
echo "spec_stamp=$spec_stamp"
|
||||
|
||||
if [[ "$installed_rpm_stamp" == "$spec_stamp" ]]; then
|
||||
printf "$installed_rpm_stamp is installed and up to date. Skipping.\n"
|
||||
continue
|
||||
fi
|
||||
# Download sources
|
||||
x spectool -g -C "$rpmbuildroot/SOURCES" "$spec_file"
|
||||
x spectool -g -C "$rpmbuildroot/SOURCES" "$spec"
|
||||
# Install build dependencies
|
||||
r x sudo dnf builddep -y "$spec_file"
|
||||
r x sudo dnf builddep -y "$spec"
|
||||
# Build the RPM package locally. If it fails, download it from COPR.
|
||||
if ! rpmbuild -bb --define "_topdir $rpmbuildroot" --define "debug_package %{nil}" "$spec_file"; then
|
||||
printf "${STY_RED}Local build encountered an issue. Downloading $(basename "$spec_file" .spec) from COPR. Report the issue to Discussions pls.${STY_RST}\n"
|
||||
sudo dnf install -y $(basename "$spec_file" .spec)
|
||||
if ! rpmbuild -bb --define "_topdir $rpmbuildroot" --define "debug_package %{nil}" "$spec"; then
|
||||
printf "${STY_RED}Local build encountered an issue. Downloading $(basename "$spec" .spec) from COPR. Report the issue to Discussions pls.${STY_RST}\n"
|
||||
sudo dnf install -y $(basename "$spec" .spec)
|
||||
nolock_qs=true
|
||||
fi
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user