Compare commits
26
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26f8c79767 | ||
|
|
a1ac6850bb | ||
|
|
bd49925080 | ||
|
|
f0739adf34 | ||
|
|
98bd7c5393 | ||
|
|
01f7b4fb8e | ||
|
|
6e647070d8 | ||
|
|
e45ea11b28 | ||
|
|
df361218f9 | ||
|
|
ac16d751ce | ||
|
|
dc3133cc94 | ||
|
|
8eb626164b | ||
|
|
bc86670611 | ||
|
|
0eb25b77a6 | ||
|
|
30b83934d1 | ||
|
|
087f199ca0 | ||
|
|
e2d9f5ab05 | ||
|
|
b0783e09e5 | ||
|
|
eb3c74373d | ||
|
|
283a649486 | ||
|
|
134a0ff79a | ||
|
|
6a4f312ec9 | ||
|
|
2f7b121bda | ||
|
|
52137e5e3b | ||
|
|
e240822532 | ||
|
|
b6e8123c91 |
No files matched your search
+1
-22
@@ -6,19 +6,16 @@
|
||||
!alacritty/
|
||||
!dunst/
|
||||
!hypr/
|
||||
!hyprpanel/
|
||||
!nvim/
|
||||
!quickshell/
|
||||
!waybar/
|
||||
!zathura/
|
||||
!mimeapps.list
|
||||
!fuzzel/
|
||||
!fish/
|
||||
!packages
|
||||
!brave-flags.conf
|
||||
!chromium-flags.conf
|
||||
!README.md
|
||||
!plans/
|
||||
!DESIGN-IS-2026-08-11/
|
||||
!rice.png
|
||||
!rice-2.png
|
||||
!rice-3.png
|
||||
@@ -26,21 +23,3 @@
|
||||
!wireplumber/
|
||||
!systemd/
|
||||
fish/fish_variables
|
||||
waybar/fluxo-rs
|
||||
!fluxo/
|
||||
|
||||
# Desktop theming. These live outside the per-app configs above, but they are
|
||||
# what makes an app that is neither GTK-aware nor shell-aware match the rice,
|
||||
# so the branch carries them.
|
||||
!gtk-3.0/
|
||||
gtk-3.0/*
|
||||
!gtk-3.0/settings.ini
|
||||
!gtk-3.0/gtk.css
|
||||
!gtk-4.0/
|
||||
gtk-4.0/*
|
||||
!gtk-4.0/settings.ini
|
||||
!gtk-4.0/gtk.css
|
||||
!xsettingsd/
|
||||
!qt6ct/
|
||||
qt6ct/*
|
||||
!qt6ct/qt6ct.conf
|
||||
+12
-12
@@ -1,12 +1,3 @@
|
||||
[submodule "waybar/catppuccin-waybar"]
|
||||
path = waybar/catppuccin-waybar
|
||||
url = https://github.com/catppuccin/waybar.git
|
||||
[submodule "hypr/catppuccin-hyprland"]
|
||||
path = hypr/catppuccin-hyprland
|
||||
url = https://github.com/catppuccin/hyprland.git
|
||||
[submodule "hypr/catppuccin-hyprlock"]
|
||||
path = hypr/catppuccin-hyprlock
|
||||
url = https://github.com/catppuccin/hyprlock.git
|
||||
[submodule "zathura/catppuccin-zathura"]
|
||||
path = zathura/catppuccin-zathura
|
||||
url = https://github.com/catppuccin/zathura.git
|
||||
@@ -16,9 +7,18 @@
|
||||
[submodule "nvim/pack/nvim/start/nvim-lspconfig"]
|
||||
path = nvim/pack/nvim/start/nvim-lspconfig
|
||||
url = https://github.com/neovim/nvim-lspconfig
|
||||
[submodule "waybar/catppuccin-waybar"]
|
||||
path = waybar/catppuccin-waybar
|
||||
url = https://github.com/catppuccin/waybar.git
|
||||
[submodule "hypr/catppuccin-hyprland"]
|
||||
path = hypr/catppuccin-hyprland
|
||||
url = https://github.com/catppuccin/hyprland.git
|
||||
[submodule "hypr/catppuccin-hyprlock"]
|
||||
path = hypr/catppuccin-hyprlock
|
||||
url = https://github.com/catppuccin/hyprlock.git
|
||||
[submodule "fuzzel/catppuccin-fuzzel"]
|
||||
path = fuzzel/catppuccin-fuzzel
|
||||
url = https://github.com/catppuccin/fuzzel.git
|
||||
[submodule "btop/catppuccin-btop"]
|
||||
path = btop/catppuccin-btop
|
||||
url = https://github.com/catppuccin/btop.git
|
||||
[submodule "nvim"]
|
||||
path = nvim
|
||||
url = https://git.narl.io/nvrl/nvim-config.git
|
||||
@@ -1,36 +0,0 @@
|
||||
# Takemi shell design audit — scope
|
||||
|
||||
## Audited artifact
|
||||
|
||||
- Running Persona 5-inspired desktop shell shown in the two supplied 1920×1080 screenshots.
|
||||
- Quickshell implementation under `quickshell/`, including the top bar, right rail,
|
||||
pop-outs, tray menus, power overlay, notifications/OSD, and lock screen.
|
||||
- Shared design tokens and primitives in `quickshell/config/` and
|
||||
`quickshell/components/`.
|
||||
|
||||
## User and task
|
||||
|
||||
- Primary user: the workstation owner using the shell throughout the day.
|
||||
- Primary task: identify system state and reach common desktop controls quickly,
|
||||
without the theme obscuring application content.
|
||||
|
||||
## Constraints
|
||||
|
||||
- Preserve the Persona 5 / Tae Takemi identity.
|
||||
- Preserve the crimson, black, and white palette and screen-print character.
|
||||
- Stack remains Quickshell, Hyprland, and Fluxo.
|
||||
- The result must work at desktop scale, with keyboard and pointer input, and
|
||||
remain legible during long sessions.
|
||||
|
||||
## References
|
||||
|
||||
- Persona 5 interface language: asymmetric editorial composition, hard ink,
|
||||
decisive silhouettes, halftone texture, and rapid card-like motion.
|
||||
- Current implementation and supplied screenshots are the concrete baseline;
|
||||
fidelity to the game is subordinate to daily desktop usefulness.
|
||||
|
||||
## Out of scope
|
||||
|
||||
- Application-level themes outside the shell.
|
||||
- Replacing the wallpaper or character artwork.
|
||||
- Changing the desktop stack.
|
||||
@@ -1,114 +0,0 @@
|
||||
# Evidence
|
||||
|
||||
## 1. Innovative
|
||||
|
||||
- The shell applies one custom QML geometry and print system across panels,
|
||||
backdrops, motion, and textures (`quickshell/config/Theme.qml:118-153`,
|
||||
`quickshell/components/P5Panel.qml:7-56`).
|
||||
- This refreshes standard desktop bars/popovers, but the interaction model is
|
||||
still conventional bar + rail + popup + modal.
|
||||
|
||||
## 2. Useful
|
||||
|
||||
- The permanent bar exposes workspaces, active window, media, resources, and
|
||||
time in one slab (`quickshell/bar/Bar.qml:67-122`).
|
||||
- Power and lock are keyboard-operable; bar, rail, tray, and most pop-out
|
||||
actions remain pointer-only (`quickshell/overlays/PowerMenu.qml:242-261`,
|
||||
`quickshell/lock/LockFace.qml:290-311`,
|
||||
`quickshell/bar/RailIcon.qml:104-124`).
|
||||
- The primary surfaces contain at least 41 interactive targets; the live total
|
||||
grows with workspaces, devices, streams, notifications, and tray entries.
|
||||
|
||||
## 3. Aesthetic
|
||||
|
||||
- A clear system exists: spacing `[6,12,20,32]`, type
|
||||
`[9,11,12,15,20,34,92]`, 12 literal palette colors, one nominal 14° angle,
|
||||
and shared 10px cuts (`quickshell/config/Theme.qml:19-49,92-148`).
|
||||
- Runtime type exceptions include 8, 30, 42, and 156.4px; local geometry also
|
||||
introduces several non-token cuts and leans.
|
||||
- White on crimson is 3.68:1 and fails normal-text AA where selected destructive
|
||||
actions or unread badges use that pairing
|
||||
(`quickshell/components/P5Button.qml:32-73`,
|
||||
`quickshell/bar/NotifButton.qml:38-58`).
|
||||
- Screenshot #1: permanent chrome is visually continuous and disciplined, but
|
||||
competes with an already high-contrast Persona wallpaper/frame.
|
||||
- Screenshot #2: the left headline/right action-stack composition is strong;
|
||||
the repeated stripe field and still-legible desktop behind it dilute focus.
|
||||
|
||||
## 4. Understandable
|
||||
|
||||
- The power screen labels all actions and prints its keyboard map
|
||||
(`quickshell/overlays/PowerMenu.qml:31-38,216-261`).
|
||||
- Rail icons expose different left/right/middle/scroll behaviors without visible
|
||||
instruction (`quickshell/bar/Rail.qml:76-132`).
|
||||
- Several state labels behave as inverse actions: “Wi-Fi On,” Bluetooth “On,”
|
||||
“Scanning,” and “Silenced” toggle those states off.
|
||||
- “WHO GOES THERE,” “WRONG,” “HELD,” “PROCS,” “VRAM,” and unlabeled load values
|
||||
favor voice or jargon over immediate comprehension.
|
||||
|
||||
## 5. Unobtrusive
|
||||
|
||||
- Normal chrome consumes only a 40px top bar and 48px right rail
|
||||
(`quickshell/config/Theme.qml:109-116`).
|
||||
- The full-screen modes add stripes, a wedge, oversized split text, attribution,
|
||||
six slabs, and a hint simultaneously
|
||||
(`quickshell/overlays/PowerMenu.qml:50-228`).
|
||||
- Twelve action identities are repeated between permanent chrome and detail
|
||||
panels; repetition improves reach but adds competing affordances.
|
||||
|
||||
## 6. Honest
|
||||
|
||||
- No marketing inflation or dark patterns were found. Power labels map directly
|
||||
to their system action (`quickshell/overlays/PowerMenu.qml:31-38,230-239`).
|
||||
- “n HELD” counts all history rather than suppressed items
|
||||
(`quickshell/popouts/NotifPopout.qml:27`,
|
||||
`quickshell/services/Notifs.qml:36-44`).
|
||||
- Muted OSDs display 0% even when stored volume remains nonzero
|
||||
(`quickshell/overlays/Osd.qml:51-64,172-185`).
|
||||
- A visually disabled slider can still emit changes
|
||||
(`quickshell/components/P5Slider.qml:9-12,48-84`).
|
||||
|
||||
## 7. Long-lasting
|
||||
|
||||
- The system is based on reusable primitives rather than per-screen decoration.
|
||||
- Literal `P5` branding, the quote attribution, and the esports-like continuous
|
||||
frame tie the result closely to one entertainment reference and visual era
|
||||
(`quickshell/bar/Sigil.qml:31`,
|
||||
`quickshell/overlays/PowerMenu.qml:88-118`).
|
||||
|
||||
## 8. Thorough
|
||||
|
||||
- Empty, loading, failure, focus, and disabled states exist.
|
||||
- A rendered success state is absent; generic buttons lack a disabled state;
|
||||
focus treatment is concentrated in power and lock; explicit accessible names
|
||||
and roles total zero (`quickshell/components/P5Button.qml:6-107`).
|
||||
- The lock’s disabled state is clear, but `P5Slider` can look disabled while
|
||||
remaining interactive.
|
||||
|
||||
## 9. Environmentally friendly
|
||||
|
||||
- The shell has 0 JavaScript bytes, about 259KB of QML, 1.4KB of local texture
|
||||
assets, no declared HTTP request, and a measured load proxy below two seconds.
|
||||
- Seven Fluxo reads recur in polling batches; playing media creates 3–6 idle
|
||||
animation loops (`quickshell/services/Sys.qml:78-102`,
|
||||
`quickshell/bar/MediaPill.qml:125-153`).
|
||||
- No reduced-motion branch exists (`quickshell/config/Theme.qml:139-148`).
|
||||
|
||||
## 10. As little design as possible
|
||||
|
||||
- The one-slab bar avoids a row of redundant cards
|
||||
(`quickshell/bar/Bar.qml:8-14,40-63`).
|
||||
- The audited tree reaches seven declarative levels, contains twelve repeated
|
||||
action identities, and includes removable atmospheric elements in modal and
|
||||
lock compositions.
|
||||
- The permanent surface, transient surface, and cinematic surface currently
|
||||
share too much of the same visual intensity instead of forming a hierarchy.
|
||||
|
||||
## Known gaps
|
||||
|
||||
- Dynamic application strings, device counts, and menu depth cannot be fixed
|
||||
from static source.
|
||||
- Exact compositor frame time, GPU cost, and live accessibility-tree output
|
||||
were not available.
|
||||
- Screenshot evidence covers the normal desktop and power overlay; lock-screen
|
||||
judgments also use its implementation source.
|
||||
@@ -1,43 +0,0 @@
|
||||
# Rams scorecard
|
||||
|
||||
1. **Good design is innovative — 2/3**
|
||||
Evidence: one custom print/geometry system refreshes conventional shell surfaces (`01-evidence.md#1-innovative`).
|
||||
Justification: the expression is distinctive, but it does not introduce a new desktop interaction pattern.
|
||||
|
||||
2. **Good design makes a product useful — 2/3**
|
||||
Evidence: core state and actions are direct, while most shell controls require a pointer (`01-evidence.md#2-useful`).
|
||||
Justification: the primary tasks work quickly, but keyboard and discoverability gaps add friction.
|
||||
|
||||
3. **Good design is aesthetic — 2/3**
|
||||
Evidence: the token system is strong, with several type/geometry exceptions and a 3.68:1 text pairing (`01-evidence.md#3-aesthetic`).
|
||||
Justification: the visual system is unmistakable, but contrast and intensity inconsistencies prevent a fully resolved score.
|
||||
|
||||
4. **Good design makes a product understandable — 1/3**
|
||||
Evidence: multiple rail gestures are undisclosed and several state labels read like actions (`01-evidence.md#4-understandable`).
|
||||
Justification: more than three controls require prior knowledge or experimentation.
|
||||
|
||||
5. **Good design is unobtrusive — 1/3**
|
||||
Evidence: compact permanent chrome expands into visually competing full-screen decoration (`01-evidence.md#5-unobtrusive`).
|
||||
Justification: the theme sometimes becomes the figure when the user’s task should remain the figure.
|
||||
|
||||
6. **Good design is honest — 2/3**
|
||||
Evidence: no dark patterns exist, but held-count, muted-volume, and disabled-slider presentation diverge from behavior (`01-evidence.md#6-honest`).
|
||||
Justification: the mismatches are minor rather than deceptive, but prevent a one-to-one mapping everywhere.
|
||||
|
||||
7. **Good design is long-lasting — 2/3**
|
||||
Evidence: reusable primitives coexist with literal franchise and gaming-HUD markers (`01-evidence.md#7-long-lasting`).
|
||||
Justification: the craft will last, while the most literal references may date the surface.
|
||||
|
||||
8. **Good design is thorough — 1/3**
|
||||
Evidence: success, generic disabled, broad focus, and accessibility metadata are missing or rough (`01-evidence.md#8-thorough`).
|
||||
Justification: three or more important state families remain incomplete.
|
||||
|
||||
9. **Good design is environmentally friendly — 1/3**
|
||||
Evidence: source weight is small, but recurring polling and idle motion have no reduced-motion gate (`01-evidence.md#9-environmentally-friendly`).
|
||||
Justification: the runtime is lean yet motion is always on when its conditions are met.
|
||||
|
||||
10. **Good design is as little design as possible — 1/3**
|
||||
Evidence: restrained single slabs coexist with repeated affordances and multi-layer modal atmosphere (`01-evidence.md#10-as-little-design-as-possible`).
|
||||
Justification: at least three decorative or duplicated elements could be removed without breaking a task.
|
||||
|
||||
**Total: 15/30**
|
||||
@@ -1,30 +0,0 @@
|
||||
# Verdict — REDESIGN
|
||||
|
||||
The strict Rams verdict is **REDESIGN (15/30)**: preserve the excellent brand
|
||||
tokens and working shell primitives, but redesign the hierarchy so permanent,
|
||||
transient, and cinematic surfaces no longer compete at the same intensity.
|
||||
|
||||
## Highest-leverage moves
|
||||
|
||||
1. **Principles #4 and #8 — make behavior legible:** give every icon one primary
|
||||
click action, add concise Persona-styled hover labels, expose secondary actions
|
||||
inside its pop-out, and add real focus/disabled/accessibility states. Evidence:
|
||||
`01-evidence.md#4-understandable` and `#8-thorough`.
|
||||
2. **Principles #5 and #10 — introduce three intensity tiers:** quiet permanent
|
||||
chrome, expressive transient panels, theatrical full-screen scenes; reserve
|
||||
stripes, large split type, and strong halftone for the latter two. Evidence:
|
||||
`01-evidence.md#5-unobtrusive` and `#10-as-little-design-as-possible`.
|
||||
3. **Principles #3 and #6 — assign semantics by treatment, not red alone:** use
|
||||
white fill for selection, a red rule/slash for active state, solid red only
|
||||
for destructive/error, and pulse only for urgency; fix white-on-red small text.
|
||||
Evidence: `01-evidence.md#3-aesthetic` and `#6-honest`.
|
||||
4. **Principles #3 and #7 — move the chaos to macro-composition:** keep clean
|
||||
module geometry, but vary panel silhouette, title placement, and scale by
|
||||
context instead of repeating the same framed HUD grammar everywhere. Evidence:
|
||||
`01-evidence.md#3-aesthetic` and `#7-long-lasting`.
|
||||
5. **Principles #2 and #9 — add a calm mode:** stop idle equalizer/pulse/marquee
|
||||
motion when reduced motion is requested and reduce polling when a detail panel
|
||||
is closed. Evidence: `01-evidence.md#2-useful` and `#9-environmentally-friendly`.
|
||||
|
||||
This is a hierarchy redesign, not an instruction to discard the palette,
|
||||
textures, panel engine, services, or current functionality.
|
||||
@@ -1,41 +0,0 @@
|
||||
# Planning handoff
|
||||
|
||||
```text
|
||||
/make-plan Redesign the Takemi Persona 5 desktop shell. Current design failed audit at 15/30 with critical gaps in principles #4 understandable, #5 unobtrusive, #8 thorough, #9 environmentally friendly, and #10 as little design as possible.
|
||||
|
||||
Verdict paragraph:
|
||||
> The strict Rams verdict is REDESIGN (15/30): preserve the excellent brand tokens and working shell primitives, but redesign the hierarchy so permanent, transient, and cinematic surfaces no longer compete at the same intensity.
|
||||
|
||||
Why redesign and not refine: the total is below the 20-point refine threshold because the same high-intensity visual and interaction grammar spans permanent chrome, transient controls, and full-screen scenes.
|
||||
|
||||
Preserve from current design:
|
||||
- Crimson/black/white palette, type scale foundation, and motion timings in quickshell/config/Theme.qml:19-148.
|
||||
- Single-slab bar/rail architecture in quickshell/bar/Bar.qml:8-63 and quickshell/bar/Rail.qml:9-64.
|
||||
- Reusable P5Panel geometry/texture engine in quickshell/components/P5Panel.qml:7-248.
|
||||
- Existing services and feature coverage; this is an information/design hierarchy change, not a functionality cut.
|
||||
|
||||
Discard:
|
||||
- One-intensity-fits-all use of stripes, halftone, split type, slashes, and repeated framed geometry. Evidence: DESIGN-IS-2026-08-11/01-evidence.md#5-unobtrusive. Caused failure on principles #5 and #10.
|
||||
- Undisclosed multi-button/multi-gesture behavior on icon-only permanent controls. Evidence: DESIGN-IS-2026-08-11/01-evidence.md#4-understandable. Caused failure on principles #4 and #8.
|
||||
|
||||
Top moves:
|
||||
1. Principles #4 and #8 — make behavior legible: give every icon one primary click action, add concise Persona-styled hover labels, expose secondary actions inside its pop-out, and add real focus/disabled/accessibility states. Evidence: DESIGN-IS-2026-08-11/01-evidence.md#4-understandable and #8-thorough.
|
||||
2. Principles #5 and #10 — introduce three intensity tiers: quiet permanent chrome, expressive transient panels, theatrical full-screen scenes; reserve stripes, large split type, and strong halftone for the latter two. Evidence: DESIGN-IS-2026-08-11/01-evidence.md#5-unobtrusive and #10-as-little-design-as-possible.
|
||||
3. Principles #3 and #6 — assign semantics by treatment, not red alone: use white fill for selection, a red rule/slash for active state, solid red only for destructive/error, and pulse only for urgency; fix white-on-red small text. Evidence: DESIGN-IS-2026-08-11/01-evidence.md#3-aesthetic and #6-honest.
|
||||
4. Principles #3 and #7 — move the chaos to macro-composition: keep clean module geometry, but vary panel silhouette, title placement, and scale by context instead of repeating the same framed HUD grammar everywhere. Evidence: DESIGN-IS-2026-08-11/01-evidence.md#3-aesthetic and #7-long-lasting.
|
||||
5. Principles #2 and #9 — add a calm mode: stop idle equalizer/pulse/marquee motion when reduced motion is requested and reduce polling when a detail panel is closed. Evidence: DESIGN-IS-2026-08-11/01-evidence.md#2-useful and #9-environmentally-friendly.
|
||||
|
||||
Redesign priorities:
|
||||
1. Principle #4 — every visible control communicates its primary action without memorized mouse-button lore.
|
||||
2. Principles #5/#10 — visual intensity increases deliberately from chrome to pop-out to modal.
|
||||
3. Principles #3/#6 — color, fill, outline, pattern, and motion each have one stable semantic job.
|
||||
|
||||
Deliverables:
|
||||
- New information architecture, not derived mechanically from the old layout.
|
||||
- New labeled primary flow compared side-by-side with the current shell.
|
||||
- Empty/loading/error/success/focus/disabled state matrix.
|
||||
- Migration path that preserves existing service behavior and keybinds.
|
||||
- Cutover criteria based on discoverability, contrast, reduced motion, and visual hierarchy.
|
||||
|
||||
Guard against porting the old structure under new styling, running both hierarchies indefinitely, following generic gaming-HUD trends, or discarding the preserved brand tokens and primitives.
|
||||
```
|
||||
@@ -1,5 +1,3 @@
|
||||
# My dotfiles
|
||||
# desktop rice
|
||||
|
||||

|
||||

|
||||

|
||||
@@ -12,10 +12,7 @@ WINIT_X11_SCALE_FACTOR = "1.0"
|
||||
position = "None"
|
||||
dynamic_padding = true
|
||||
decorations = "None"
|
||||
|
||||
## Fully opaque, no blur. Persona surfaces are flat ink on flat ground —
|
||||
## glass and translucency read as a different design language entirely.
|
||||
opacity = 1.0
|
||||
opacity = 0.9
|
||||
blur = false
|
||||
startup_mode = "Windowed"
|
||||
dynamic_title = true
|
||||
@@ -27,11 +24,10 @@ decorations_theme_variant = "None"
|
||||
columns = 82
|
||||
lines = 24
|
||||
|
||||
## Blank space added around the window in pixels. Roomier than the old 3/0 —
|
||||
## the text needs to sit inside the crimson border, not against it.
|
||||
## Blank space added around the window in pixels.
|
||||
[window.padding]
|
||||
x = 12
|
||||
y = 8
|
||||
x = 30
|
||||
y = 30
|
||||
|
||||
## SCROLLING ------------------------------------------------------
|
||||
[scrolling]
|
||||
@@ -107,9 +103,4 @@ ipc_socket = true
|
||||
## GENERAL --------------------------------------------------------
|
||||
|
||||
## Import additional configuration files.
|
||||
import = ["~/.config/alacritty/catppuccin-mocha.toml", "~/.config/alacritty/fonts.toml"]
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "Return"
|
||||
mods = "Shift"
|
||||
chars = "\u001B\r"
|
||||
import = ["~/.config/alacritty/colors.toml", "~/.config/alacritty/fonts.toml"]
|
||||
@@ -4,11 +4,9 @@ foreground = "#cdd6f4"
|
||||
dim_foreground = "#7f849c"
|
||||
bright_foreground = "#cdd6f4"
|
||||
|
||||
# Cursor in the shell accent (Mocha blue) rather than stock rosewater, so the
|
||||
# terminal caret matches the focus colour everywhere else on the desktop.
|
||||
[colors.cursor]
|
||||
text = "#11111b"
|
||||
cursor = "#89b4fa"
|
||||
text = "#1e1e2e"
|
||||
cursor = "#f5e0dc"
|
||||
|
||||
[colors.vi_mode_cursor]
|
||||
text = "#1e1e2e"
|
||||
|
||||
@@ -4,26 +4,26 @@
|
||||
|
||||
[font]
|
||||
## Font size in points.
|
||||
size = 10
|
||||
size = 14
|
||||
|
||||
## When true, Alacritty will use a custom built-in font for box drawing characters and powerline symbols.
|
||||
builtin_box_drawing = true
|
||||
|
||||
## Normal font family.
|
||||
[font.normal]
|
||||
family = "0xProto Nerd Font Mono"
|
||||
family = "Fira Mono"
|
||||
|
||||
## If the family is not specified, it will fall back to the value specified for the normal font.
|
||||
[font.bold]
|
||||
family = "0xProto Nerd Font Mono"
|
||||
family = "Fira Mono"
|
||||
|
||||
## If the family is not specified, it will fall back to the value specified for the normal font.
|
||||
[font.italic]
|
||||
family = "0xProto Nerd Font Mono"
|
||||
family = "Fira Mono"
|
||||
|
||||
## If the family is not specified, it will fall back to the value specified for the normal font.
|
||||
[font.bold_italic]
|
||||
family = "0xProto Nerd Font Mono"
|
||||
family = "Fira Mono"
|
||||
|
||||
## Offset is the extra space around each character.
|
||||
## 'y' can be thought of as modifying the line spacing, and 'x' as modifying the letter spacing.
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
## Takemi — matched to ~/.config/quickshell/config/Theme.qml and
|
||||
## ~/.config/hypr/modules/takemi.conf.
|
||||
##
|
||||
## Near-black ground, white text, crimson as the only saturated colour. The
|
||||
## sixteen ANSI slots still have to be told apart by syntax highlighters, so the
|
||||
## non-crimson hues survive — but every one of them is pulled down and
|
||||
## desaturated so nothing competes with the accent. Nothing here is neon.
|
||||
|
||||
[colors.primary]
|
||||
background = "#0a0a0c"
|
||||
foreground = "#ffffff"
|
||||
dim_foreground = "#6b6b70"
|
||||
bright_foreground = "#ffffff"
|
||||
|
||||
## Crimson block cursor, black text punched out of it.
|
||||
[colors.cursor]
|
||||
text = "#000000"
|
||||
cursor = "#ff2d40"
|
||||
|
||||
[colors.vi_mode_cursor]
|
||||
text = "#000000"
|
||||
cursor = "#ffffff"
|
||||
|
||||
## Selection is a solid crimson block — the same "active" signal the shell uses.
|
||||
[colors.selection]
|
||||
text = "#000000"
|
||||
background = "#ff2d40"
|
||||
|
||||
[colors.search.matches]
|
||||
foreground = "#000000"
|
||||
background = "#c8c8ce"
|
||||
|
||||
[colors.search.focused_match]
|
||||
foreground = "#000000"
|
||||
background = "#ff2d40"
|
||||
|
||||
[colors.footer_bar]
|
||||
foreground = "#000000"
|
||||
background = "#c8c8ce"
|
||||
|
||||
[colors.hints.start]
|
||||
foreground = "#000000"
|
||||
background = "#ff2d40"
|
||||
|
||||
[colors.hints.end]
|
||||
foreground = "#000000"
|
||||
background = "#c8c8ce"
|
||||
|
||||
## Red is the accent, exactly. The rest are muted enough to sit behind it.
|
||||
[colors.normal]
|
||||
black = "#14141a"
|
||||
red = "#ff2d40"
|
||||
green = "#7f9b6a"
|
||||
yellow = "#d6a24a"
|
||||
blue = "#6f7d99"
|
||||
magenta = "#c0566d"
|
||||
cyan = "#7f9aa0"
|
||||
white = "#c8c8ce"
|
||||
|
||||
[colors.bright]
|
||||
black = "#3a3a44"
|
||||
red = "#ff6b78"
|
||||
green = "#9bb886"
|
||||
yellow = "#f0c070"
|
||||
blue = "#8d9bb8"
|
||||
magenta = "#e07a8e"
|
||||
cyan = "#9db8bd"
|
||||
white = "#ffffff"
|
||||
|
||||
[colors.dim]
|
||||
black = "#0f0f13"
|
||||
red = "#8f1826"
|
||||
green = "#5c704d"
|
||||
yellow = "#9c7635"
|
||||
blue = "#515c70"
|
||||
magenta = "#8c3f4f"
|
||||
cyan = "#5c7075"
|
||||
white = "#6b6b70"
|
||||
|
||||
[[colors.indexed_colors]]
|
||||
index = 16
|
||||
color = "#ff6b78"
|
||||
|
||||
[[colors.indexed_colors]]
|
||||
index = 17
|
||||
color = "#ffffff"
|
||||
+50
-79
@@ -1,23 +1,18 @@
|
||||
#? Config file for btop v.1.4.7
|
||||
#? Config file for btop v. 1.4.5
|
||||
|
||||
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
||||
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
||||
color_theme = "/home/narl/.config/btop/themes/catppuccin_mocha.theme"
|
||||
|
||||
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
||||
theme_background = false
|
||||
theme_background = False
|
||||
|
||||
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
||||
truecolor = true
|
||||
truecolor = True
|
||||
|
||||
#* Set to true to force tty mode regardless if a real tty has been detected or not.
|
||||
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
||||
force_tty = false
|
||||
|
||||
#* Option to disable presets. Either the default preset, custom presets, or all presets.
|
||||
#* "Off" All presets are enabled.
|
||||
#* "Default" preset is disabled.#* "Custom" presets are disabled.#* "All" presets are disabled.
|
||||
disable_presets = "Off"
|
||||
force_tty = False
|
||||
|
||||
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
||||
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
|
||||
@@ -27,16 +22,10 @@ presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:defaul
|
||||
|
||||
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
|
||||
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
||||
vim_keys = true
|
||||
|
||||
#* Disable all mouse events.
|
||||
disable_mouse = false
|
||||
vim_keys = True
|
||||
|
||||
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
||||
rounded_corners = true
|
||||
|
||||
#* Use terminal synchronized output sequences to reduce flickering on supported terminals.
|
||||
terminal_sync = true
|
||||
rounded_corners = True
|
||||
|
||||
#* Default symbols to use for graph creation, "braille", "block" or "tty".
|
||||
#* "braille" offers the highest resolution but might not be included in all fonts.
|
||||
@@ -64,50 +53,44 @@ graph_symbol_proc = "default"
|
||||
shown_boxes = "cpu mem net proc"
|
||||
|
||||
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
|
||||
update_ms = 1000
|
||||
update_ms = 2000
|
||||
|
||||
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
|
||||
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
|
||||
proc_sorting = "cpu direct"
|
||||
|
||||
#* Reverse sorting order, True or False.
|
||||
proc_reversed = false
|
||||
proc_reversed = False
|
||||
|
||||
#* Show processes as a tree.
|
||||
proc_tree = true
|
||||
proc_tree = True
|
||||
|
||||
#* Use the cpu graph colors in the process list.
|
||||
proc_colors = true
|
||||
proc_colors = True
|
||||
|
||||
#* Use a darkening gradient in the process list.
|
||||
proc_gradient = true
|
||||
proc_gradient = True
|
||||
|
||||
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
|
||||
proc_per_core = false
|
||||
proc_per_core = True
|
||||
|
||||
#* Show process memory as bytes instead of percent.
|
||||
proc_mem_bytes = true
|
||||
proc_mem_bytes = True
|
||||
|
||||
#* Show cpu graph for each process.
|
||||
proc_cpu_graphs = true
|
||||
proc_cpu_graphs = True
|
||||
|
||||
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
|
||||
proc_info_smaps = false
|
||||
proc_info_smaps = False
|
||||
|
||||
#* Show proc box on left side of screen instead of right.
|
||||
proc_left = false
|
||||
proc_left = False
|
||||
|
||||
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
||||
proc_filter_kernel = false
|
||||
|
||||
#* Should the process list follow the selected process when detailed view is open.
|
||||
proc_follow_detailed = true
|
||||
proc_filter_kernel = False
|
||||
|
||||
#* In tree-view, always accumulate child process resources in the parent process.
|
||||
proc_aggregate = false
|
||||
|
||||
#* Should cpu and memory usage display be preserved for dead processes when paused.
|
||||
keep_dead_proc_usage = false
|
||||
proc_aggregate = False
|
||||
|
||||
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
|
||||
#* Select from a list of detected attributes from the options menu.
|
||||
@@ -121,28 +104,28 @@ cpu_graph_lower = "Auto"
|
||||
show_gpu_info = "Auto"
|
||||
|
||||
#* Toggles if the lower CPU graph should be inverted.
|
||||
cpu_invert_lower = true
|
||||
cpu_invert_lower = True
|
||||
|
||||
#* Set to True to completely disable the lower CPU graph.
|
||||
cpu_single_graph = false
|
||||
cpu_single_graph = False
|
||||
|
||||
#* Show cpu box at bottom of screen instead of top.
|
||||
cpu_bottom = false
|
||||
cpu_bottom = False
|
||||
|
||||
#* Shows the system uptime in the CPU box.
|
||||
show_uptime = true
|
||||
show_uptime = True
|
||||
|
||||
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
|
||||
show_cpu_watts = true
|
||||
show_cpu_watts = True
|
||||
|
||||
#* Show cpu temperature.
|
||||
check_temp = true
|
||||
check_temp = True
|
||||
|
||||
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
|
||||
cpu_sensor = "Auto"
|
||||
|
||||
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
|
||||
show_coretemp = true
|
||||
show_coretemp = True
|
||||
|
||||
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
|
||||
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
|
||||
@@ -154,20 +137,17 @@ cpu_core_map = ""
|
||||
temp_scale = "celsius"
|
||||
|
||||
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
|
||||
base_10_sizes = false
|
||||
base_10_sizes = False
|
||||
|
||||
#* Show CPU frequency.
|
||||
show_cpu_freq = true
|
||||
|
||||
#* How to calculate CPU frequency, available values: "first", "range", "lowest", "highest" and "average".
|
||||
freq_mode = "first"
|
||||
show_cpu_freq = True
|
||||
|
||||
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
|
||||
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
|
||||
clock_format = "%X"
|
||||
|
||||
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
|
||||
background_update = true
|
||||
background_update = True
|
||||
|
||||
#* Custom cpu model name, empty string to disable.
|
||||
custom_cpu_name = ""
|
||||
@@ -177,61 +157,58 @@ custom_cpu_name = ""
|
||||
disks_filter = ""
|
||||
|
||||
#* Show graphs instead of meters for memory values.
|
||||
mem_graphs = true
|
||||
mem_graphs = True
|
||||
|
||||
#* Show mem box below net box instead of above.
|
||||
mem_below_net = false
|
||||
mem_below_net = False
|
||||
|
||||
#* Count ZFS ARC in cached and available memory.
|
||||
zfs_arc_cached = true
|
||||
zfs_arc_cached = True
|
||||
|
||||
#* If swap memory should be shown in memory box.
|
||||
show_swap = true
|
||||
show_swap = True
|
||||
|
||||
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
|
||||
swap_disk = true
|
||||
swap_disk = True
|
||||
|
||||
#* If mem box should be split to also show disks info.
|
||||
show_disks = true
|
||||
show_disks = True
|
||||
|
||||
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
|
||||
only_physical = true
|
||||
only_physical = True
|
||||
|
||||
#* Read disks list from /etc/fstab. This also disables only_physical.
|
||||
use_fstab = true
|
||||
use_fstab = True
|
||||
|
||||
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
|
||||
zfs_hide_datasets = false
|
||||
zfs_hide_datasets = False
|
||||
|
||||
#* Set to true to show available disk space for privileged users.
|
||||
disk_free_priv = false
|
||||
disk_free_priv = False
|
||||
|
||||
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
|
||||
show_io_stat = true
|
||||
show_io_stat = True
|
||||
|
||||
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
|
||||
io_mode = false
|
||||
io_mode = False
|
||||
|
||||
#* Set to True to show combined read/write io graphs in io mode.
|
||||
io_graph_combined = false
|
||||
io_graph_combined = False
|
||||
|
||||
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
|
||||
#* Example: "/mnt/media:100 /:20 /boot:1".
|
||||
io_graph_speeds = ""
|
||||
|
||||
#* Swap the positions of the upload and download speed graphs. When true, upload will be on top.
|
||||
swap_upload_download = false
|
||||
|
||||
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
|
||||
net_download = 100
|
||||
|
||||
net_upload = 100
|
||||
|
||||
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
|
||||
net_auto = true
|
||||
net_auto = True
|
||||
|
||||
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
|
||||
net_sync = true
|
||||
net_sync = True
|
||||
|
||||
#* Starts with the Network Interface specified here.
|
||||
net_iface = ""
|
||||
@@ -240,35 +217,29 @@ net_iface = ""
|
||||
base_10_bitrate = "Auto"
|
||||
|
||||
#* Show battery stats in top right if battery is present.
|
||||
show_battery = true
|
||||
show_battery = True
|
||||
|
||||
#* Which battery to use if multiple are present. "Auto" for auto detection.
|
||||
selected_battery = "Auto"
|
||||
|
||||
#* Show power stats of battery next to charge indicator.
|
||||
show_battery_watts = true
|
||||
show_battery_watts = True
|
||||
|
||||
#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
|
||||
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
|
||||
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
|
||||
log_level = "WARNING"
|
||||
|
||||
#* Automatically save current settings to config file on exit.
|
||||
save_config_on_exit = true
|
||||
|
||||
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
|
||||
nvml_measure_pcie_speeds = true
|
||||
nvml_measure_pcie_speeds = True
|
||||
|
||||
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
|
||||
rsmi_measure_pcie_speeds = true
|
||||
rsmi_measure_pcie_speeds = True
|
||||
|
||||
#* Horizontally mirror the GPU graph.
|
||||
gpu_mirror_graph = true
|
||||
|
||||
#* Set which GPU vendors to show. Available values are "nvidia amd intel apple"
|
||||
shown_gpus = "nvidia amd intel"
|
||||
gpu_mirror_graph = True
|
||||
|
||||
#* Custom gpu0 model name, empty string to disable.
|
||||
custom_gpu_name0 = "Radeon Vega"
|
||||
custom_gpu_name0 = ""
|
||||
|
||||
#* Custom gpu1 model name, empty string to disable.
|
||||
custom_gpu_name1 = ""
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
--enable-features=AcceleratedVideoDecodeLinuxGL,DefaultANGLEVulkan,VaapiIgnoreDriverChecks,Vulkan,VulkanFromANGLE,AcceleratedVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoEncoder
|
||||
--use-angle=vulkan
|
||||
--use-gl=angle
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
[global]
|
||||
corner_radius = 4
|
||||
transparency = 90
|
||||
frame_color = "#89b4fa"
|
||||
frame_color = "#94e2d5"
|
||||
frame_width = 1
|
||||
separator_color= frame
|
||||
highlight = "#cba6f7"
|
||||
highlight = "#89b4fa"
|
||||
|
||||
[urgency_low]
|
||||
background = "#1e1e2e"
|
||||
|
||||
@@ -1,100 +0,0 @@
|
||||
# Print an optspec for argparse to handle cmd's options that are independent of any subcommand.
|
||||
function __fish_claude_account_global_optspecs
|
||||
string join \n h/help V/version
|
||||
end
|
||||
|
||||
function __fish_claude_account_needs_command
|
||||
# Figure out if the current invocation already has a command.
|
||||
set -l cmd (commandline -opc)
|
||||
set -e cmd[1]
|
||||
argparse -s (__fish_claude_account_global_optspecs) -- $cmd 2>/dev/null
|
||||
or return
|
||||
if set -q argv[1]
|
||||
# Also print the command, so this can be used to figure out what it is.
|
||||
echo $argv[1]
|
||||
return 1
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
function __fish_claude_account_using_subcommand
|
||||
set -l cmd (__fish_claude_account_needs_command)
|
||||
test -z "$cmd"
|
||||
and return 1
|
||||
contains -- $cmd[1] $argv
|
||||
end
|
||||
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -s V -l version -d 'Print version'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "status" -d 'Show every account, every proxy, every name and everything that is wrong'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "list" -d 'List the accounts, one per line'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "switch" -d 'Make an account the one `claude` runs as'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "add" -d 'Register another account, with a profile and a proxy of its own'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "remove" -d 'Forget an account. Its profile directory is left where it is'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "current" -d 'Print the name of the active account'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "dir" -d 'Print the profile directory of an account, for `CLAUDE_CONFIG_DIR`'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "env" -d 'Print the shell lines that put this shell into an account'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "url" -d 'Print the address a name resolves to'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "setup" -d 'Install everything at once: the wrapper, a proxy per account, the router'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "adopt" -d 'Take over the proxy services that were written by hand'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "doctor" -d 'Report every problem and exit non-zero when there is one'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "shim" -d 'The `claude` wrapper in ~/.local/bin'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "headroom" -d 'The proxy of one account'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "router" -d 'The router that resolves <name>.headroom.localhost'
|
||||
complete -c claude-account -n "__fish_claude_account_needs_command" -f -a "completions" -d 'Tab completion, with the account names in it'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand status" -s v -l verbose -d 'Add the last lines each proxy logged'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand status" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand list" -l names -d 'Print the names alone, for scripts and for tab completion'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand list" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand switch" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand add" -l dir -d 'A profile directory elsewhere' -r -F
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand add" -l port -d 'A port for its proxy; the next free one by default' -r
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand add" -l switch -d 'Make it the account `claude` runs as straight away'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand add" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand remove" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand current" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand dir" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand env" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand url" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand setup" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand adopt" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand doctor" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand shim; and not __fish_seen_subcommand_from install uninstall" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand shim; and not __fish_seen_subcommand_from install uninstall" -f -a "install" -d 'Write ~/.local/bin/claude'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand shim; and not __fish_seen_subcommand_from install uninstall" -f -a "uninstall" -d 'Remove it again'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand shim; and __fish_seen_subcommand_from install" -l force -d 'Overwrite a `claude` that this tool did not write'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand shim; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand shim; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and not __fish_seen_subcommand_from install start stop restart uninstall port logs" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and not __fish_seen_subcommand_from install start stop restart uninstall port logs" -f -a "install" -d 'Write the service for an account and start it'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and not __fish_seen_subcommand_from install start stop restart uninstall port logs" -f -a "start" -d 'Start the proxy of an account'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and not __fish_seen_subcommand_from install start stop restart uninstall port logs" -f -a "stop" -d 'Stop it'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and not __fish_seen_subcommand_from install start stop restart uninstall port logs" -f -a "restart" -d 'Stop and start it'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and not __fish_seen_subcommand_from install start stop restart uninstall port logs" -f -a "uninstall" -d 'Stop it and remove its service'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and not __fish_seen_subcommand_from install start stop restart uninstall port logs" -f -a "port" -d 'Give an account another port, and write it everywhere it is named'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and not __fish_seen_subcommand_from install start stop restart uninstall port logs" -f -a "logs" -d 'Print what one proxy logged'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and __fish_seen_subcommand_from start" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and __fish_seen_subcommand_from stop" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and __fish_seen_subcommand_from restart" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and __fish_seen_subcommand_from port" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and __fish_seen_subcommand_from logs" -s n -l lines -d 'How many lines' -r
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand headroom; and __fish_seen_subcommand_from logs" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand router; and not __fish_seen_subcommand_from serve install uninstall port list" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand router; and not __fish_seen_subcommand_from serve install uninstall port list" -f -a "serve" -d 'Serve the names until stopped'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand router; and not __fish_seen_subcommand_from serve install uninstall port list" -f -a "install" -d 'Install the router as a user service'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand router; and not __fish_seen_subcommand_from serve install uninstall port list" -f -a "uninstall" -d 'Stop it and remove its service'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand router; and not __fish_seen_subcommand_from serve install uninstall port list" -f -a "port" -d 'Move the router to another port'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand router; and not __fish_seen_subcommand_from serve install uninstall port list" -f -a "list" -d 'List the names that resolve'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand router; and __fish_seen_subcommand_from serve" -l port -r
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand router; and __fish_seen_subcommand_from serve" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand router; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand router; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand router; and __fish_seen_subcommand_from port" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand router; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand completions" -l install -d 'Write the file where the shell reads it, instead of printing it'
|
||||
complete -c claude-account -n "__fish_claude_account_using_subcommand completions" -s h -l help -d 'Print help'
|
||||
|
||||
# The accounts as they are right now, asked for when Tab is pressed.
|
||||
complete -c claude-account -n '__fish_seen_subcommand_from switch dir env url remove start stop restart logs install uninstall port' -f -a '(claude-account list --names)'
|
||||
@@ -1 +0,0 @@
|
||||
complete --keep-order --exclusive --command enqs-guard --arguments "(COMPLETE=fish enqs-guard -- (commandline --current-process --tokenize --cut-at-cursor) (commandline --current-token))"
|
||||
@@ -1 +0,0 @@
|
||||
complete --keep-order --exclusive --command enqs-headroom --arguments "(COMPLETE=fish enqs-headroom -- (commandline --current-process --tokenize --cut-at-cursor) (commandline --current-token))"
|
||||
@@ -1 +0,0 @@
|
||||
complete --keep-order --exclusive --command enqs-jail --arguments "(COMPLETE=fish enqs-jail -- (commandline --current-process --tokenize --cut-at-cursor) (commandline --current-token))"
|
||||
@@ -1,14 +0,0 @@
|
||||
# This file was created by fish when upgrading to version 4.3, to migrate
|
||||
# the 'fish_key_bindings' variable from its old default scope (universal)
|
||||
# to its new default scope (global). We recommend you delete this file
|
||||
# and configure key bindings in ~/.config/fish/config.fish if needed.
|
||||
|
||||
set --global fish_key_bindings fish_vi_key_bindings
|
||||
|
||||
# Prior to version 4.3, fish shipped an event handler that runs
|
||||
# `set --universal fish_key_bindings fish_default_key_bindings`
|
||||
# whenever the fish_key_bindings variable is erased.
|
||||
# This means that as long as any fish < 4.3 is still running on this system,
|
||||
# we cannot complete the migration.
|
||||
# As a workaround, erase the universal variable at every shell startup.
|
||||
set --erase --universal fish_key_bindings
|
||||
@@ -1,7 +0,0 @@
|
||||
# Path to Oh My Fish install.
|
||||
set -q XDG_DATA_HOME
|
||||
and set -gx OMF_PATH "$XDG_DATA_HOME/omf"
|
||||
or set -gx OMF_PATH "$HOME/.local/share/omf"
|
||||
|
||||
# Load Oh My Fish configuration.
|
||||
source $OMF_PATH/init.fish
|
||||
@@ -1,52 +0,0 @@
|
||||
# Mocha — matched to ~/.config/quickshell/config/Theme.qml,
|
||||
# ~/.config/alacritty/catppuccin-mocha.toml and ~/.config/nvim/lua/takemi.lua.
|
||||
#
|
||||
# Catppuccin Mocha's own fish theme (themes/Catppuccin Mocha.theme), with the
|
||||
# selection and pager rows carried over from the Takemi layout: a solid accent
|
||||
# block with crust punched out of it, rather than a tinted surface. The shell
|
||||
# selects with a blue slab and marks with mauve; the prompt should not
|
||||
# disagree.
|
||||
#
|
||||
# Note that `fish_config` writing a theme from the web UI will recreate
|
||||
# fish_frozen_theme.fish, which sorts before this file and so would lose.
|
||||
|
||||
set --global fish_color_normal cdd6f4
|
||||
set --global fish_color_command 89b4fa
|
||||
set --global fish_color_keyword f38ba8
|
||||
set --global fish_color_param f2cdcd
|
||||
set --global fish_color_option a6e3a1
|
||||
set --global fish_color_quote a6e3a1
|
||||
set --global fish_color_escape eba0ac
|
||||
set --global fish_color_operator f5c2e7
|
||||
set --global fish_color_redirection f5c2e7
|
||||
set --global fish_color_end fab387
|
||||
set --global fish_color_comment 7f849c --italics
|
||||
set --global fish_color_error f38ba8 --bold
|
||||
set --global fish_color_cancel f38ba8
|
||||
set --global fish_color_gray 6c7086
|
||||
set --global fish_color_autosuggestion 6c7086
|
||||
set --global fish_color_selection 11111b --background=89b4fa
|
||||
set --global fish_color_search_match 11111b --background=cba6f7
|
||||
set --global fish_color_match 11111b --background=89b4fa
|
||||
set --global fish_color_history_current --bold
|
||||
set --global fish_color_valid_path --underline
|
||||
set --global fish_color_cwd f9e2af --bold
|
||||
set --global fish_color_cwd_root f38ba8 --bold
|
||||
set --global fish_color_user 94e2d5
|
||||
set --global fish_color_host 89b4fa --bold
|
||||
set --global fish_color_host_remote a6e3a1
|
||||
set --global fish_color_status f38ba8
|
||||
|
||||
set --global fish_pager_color_progress 6c7086 --background=313244
|
||||
set --global fish_pager_color_background
|
||||
set --global fish_pager_color_prefix cba6f7 --bold
|
||||
set --global fish_pager_color_completion cdd6f4
|
||||
set --global fish_pager_color_description 6c7086
|
||||
set --global fish_pager_color_secondary_background --background=181825
|
||||
set --global fish_pager_color_secondary_completion cdd6f4
|
||||
set --global fish_pager_color_secondary_description 6c7086
|
||||
set --global fish_pager_color_secondary_prefix cba6f7 --bold
|
||||
set --global fish_pager_color_selected_background --background=89b4fa
|
||||
set --global fish_pager_color_selected_completion 11111b
|
||||
set --global fish_pager_color_selected_description 11111b
|
||||
set --global fish_pager_color_selected_prefix 11111b --bold
|
||||
+1
-32
@@ -1,40 +1,9 @@
|
||||
if status is-interactive
|
||||
# Commands to run in interactive sessions can go here
|
||||
end
|
||||
# set SPACESHIP_PROMPT_ADD_NEWLINE false
|
||||
# set SPACESHIP_TIME_SHOW false
|
||||
# set SPACESHIP_USER_SHOW always
|
||||
# set SPACESHIP_HOST_SHOW true
|
||||
# set SPACESHIP_CHAR_SYMBOL ""
|
||||
# set SPACESHIP_CHAR_SYMBOL=" "
|
||||
# set SPACESHIP_VI_MODE_INSERT
|
||||
# set SPACESHIP_VI_MODE_NORMAL
|
||||
# Set the cursor shapes for the different vi modes.
|
||||
set fish_cursor_default block blink
|
||||
set fish_cursor_insert line blink
|
||||
set fish_cursor_replace_one underscore blink
|
||||
set fish_cursor_visual block
|
||||
# starship init fish | source
|
||||
fish_vi_key_bindings
|
||||
if test -e ~/.cache/wal/colors.fish
|
||||
source ~/.cache/wal/colors.fish
|
||||
end
|
||||
zoxide init --cmd cd fish | source
|
||||
set -gx PATH ~/.local/bin $PATH
|
||||
# if not pgrep --full ssh-agent | string collect > /dev/null
|
||||
# eval (ssh-agent -c)
|
||||
# set -Ux SSH_AGENT_PID $SSH_AGENT_PID
|
||||
# set -Ux SSH_AUTH_SOCK $SSH_AUTH_SOCK
|
||||
# end
|
||||
# Set SSH_AUTH_SOCK for GNOME Keyring / systemd
|
||||
# The socket path is predictable
|
||||
set -l GCR_SSH_SOCK $XDG_RUNTIME_DIR/gcr/ssh
|
||||
if test -S "$GCR_SSH_SOCK"
|
||||
set -gx SSH_AUTH_SOCK "$GCR_SSH_SOCK"
|
||||
end
|
||||
if status is-login && test -z "$DISPLAY" -a -z "$WAYLAND_DISPLAY"
|
||||
if uwsm check may-start && uwsm select
|
||||
if uwsm check may-start && uwsm select
|
||||
exec uwsm start default
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
franciscolourenco/done
|
||||
jorgebucaran/autopair.fish
|
||||
catppuccin/fish
|
||||
@@ -0,0 +1,130 @@
|
||||
# This file contains fish universal variable definitions.
|
||||
# VERSION: 3.0
|
||||
SETUVAR CUDAToolkit_ROOT:/opt/cuda/
|
||||
SETUVAR DATABASE_URL:sqlite\x3adatabase\x2esqlite
|
||||
SETUVAR GLFW_IM_MODULE:ibus
|
||||
SETUVAR MANPAGER:sh\x20\x2dc\x20\x27col\x20\x2dbx\x20\x7c\x20bat\x20\x2dl\x20man\x20\x2dp\x27
|
||||
SETUVAR RUST_LOG:debug
|
||||
SETUVAR --export SSH_AGENT_PID:967
|
||||
SETUVAR --export SSH_AUTH_SOCK:/tmp/ssh\x2dXXXXXX7Ck8nI/agent\x2e966
|
||||
SETUVAR SXHKD_SHELL:/usr/bin/bash
|
||||
SETUVAR ZO_CMD:zo
|
||||
SETUVAR Z_CMD:z
|
||||
SETUVAR Z_DATA:/home/narl/\x2elocal/share/z/data
|
||||
SETUVAR Z_DATA_DIR:/home/narl/\x2elocal/share/z
|
||||
SETUVAR Z_EXCLUDE:\x5e/home/narl\x24
|
||||
SETUVAR __done_min_cmd_duration:5000
|
||||
SETUVAR __fish_initialized:3800
|
||||
SETUVAR _fisher_catppuccin_2F_fish_files:\x7e/\x2econfig/fish/themes/Catppuccin\x20Frappe\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Latte\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Macchiato\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Mocha\x2etheme
|
||||
SETUVAR _fisher_franciscolourenco_2F_done_files:/home/niru/\x2econfig/fish/conf\x2ed/done\x2efish
|
||||
SETUVAR _fisher_jorgebucaran_2F_autopair_2E_fish_files:/home/niru/\x2econfig/fish/functions/_autopair_backspace\x2efish\x1e/home/niru/\x2econfig/fish/functions/_autopair_insert_left\x2efish\x1e/home/niru/\x2econfig/fish/functions/_autopair_insert_right\x2efish\x1e/home/niru/\x2econfig/fish/functions/_autopair_insert_same\x2efish\x1e/home/niru/\x2econfig/fish/functions/_autopair_tab\x2efish\x1e/home/niru/\x2econfig/fish/conf\x2ed/autopair\x2efish
|
||||
SETUVAR _fisher_plugins:franciscolourenco/done\x1ejorgebucaran/autopair\x2efish\x1ecatppuccin/fish
|
||||
SETUVAR _fisher_upgraded_to_4_4:\x1d
|
||||
SETUVAR fish_color_autosuggestion:6c7086
|
||||
SETUVAR fish_color_cancel:f38ba8
|
||||
SETUVAR fish_color_command:89b4fa
|
||||
SETUVAR fish_color_comment:7f849c
|
||||
SETUVAR fish_color_cwd:f9e2af
|
||||
SETUVAR fish_color_cwd_root:red
|
||||
SETUVAR fish_color_end:fab387
|
||||
SETUVAR fish_color_error:f38ba8
|
||||
SETUVAR fish_color_escape:eba0ac
|
||||
SETUVAR fish_color_gray:6c7086
|
||||
SETUVAR fish_color_history_current:\x2d\x2dbold
|
||||
SETUVAR fish_color_host:89b4fa
|
||||
SETUVAR fish_color_host_remote:a6e3a1
|
||||
SETUVAR fish_color_keyword:f38ba8
|
||||
SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
|
||||
SETUVAR fish_color_normal:cdd6f4
|
||||
SETUVAR fish_color_operator:f5c2e7
|
||||
SETUVAR fish_color_option:a6e3a1
|
||||
SETUVAR fish_color_param:f2cdcd
|
||||
SETUVAR fish_color_quote:a6e3a1
|
||||
SETUVAR fish_color_redirection:f5c2e7
|
||||
SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d313244
|
||||
SETUVAR fish_color_selection:\x2d\x2dbackground\x3d313244
|
||||
SETUVAR fish_color_status:f38ba8
|
||||
SETUVAR fish_color_user:94e2d5
|
||||
SETUVAR fish_color_valid_path:\x2d\x2dunderline
|
||||
SETUVAR fish_greeting:\x1d
|
||||
SETUVAR fish_key_bindings:fish_vi_key_bindings
|
||||
SETUVAR fish_pager_color_background:\x1d
|
||||
SETUVAR fish_pager_color_completion:cdd6f4
|
||||
SETUVAR fish_pager_color_description:6c7086
|
||||
SETUVAR fish_pager_color_prefix:f5c2e7
|
||||
SETUVAR fish_pager_color_progress:6c7086
|
||||
SETUVAR fish_pager_color_secondary_background:\x1d
|
||||
SETUVAR fish_pager_color_secondary_completion:\x1d
|
||||
SETUVAR fish_pager_color_secondary_description:\x1d
|
||||
SETUVAR fish_pager_color_secondary_prefix:\x1d
|
||||
SETUVAR fish_pager_color_selected_background:\x1d
|
||||
SETUVAR fish_pager_color_selected_completion:\x1d
|
||||
SETUVAR fish_pager_color_selected_description:\x1d
|
||||
SETUVAR fish_pager_color_selected_prefix:\x1d
|
||||
SETUVAR fish_user_paths:/home/narl/\x2elocal/share/nvim/mason/bin\x1e/home/niru/\x2escripts\x1e/home/niru/Documents/rust\x2ddev/practice\x2drs/target/release\x1e/opt/cuda/bin\x1e/home/niru/\x2e
|
||||
SETUVAR pure_begin_prompt_with_current_directory:true
|
||||
SETUVAR pure_check_for_new_release:false
|
||||
SETUVAR pure_color_at_sign:pure_color_mute
|
||||
SETUVAR pure_color_aws_profile:pure_color_warning
|
||||
SETUVAR pure_color_command_duration:pure_color_warning
|
||||
SETUVAR pure_color_current_directory:pure_color_primary
|
||||
SETUVAR pure_color_danger:red
|
||||
SETUVAR pure_color_dark:black
|
||||
SETUVAR pure_color_git_branch:pure_color_mute
|
||||
SETUVAR pure_color_git_dirty:pure_color_mute
|
||||
SETUVAR pure_color_git_stash:pure_color_info
|
||||
SETUVAR pure_color_git_unpulled_commits:pure_color_info
|
||||
SETUVAR pure_color_git_unpushed_commits:pure_color_info
|
||||
SETUVAR pure_color_hostname:pure_color_mute
|
||||
SETUVAR pure_color_info:cyan
|
||||
SETUVAR pure_color_jobs:pure_color_normal
|
||||
SETUVAR pure_color_k8s_context:pure_color_success
|
||||
SETUVAR pure_color_k8s_namespace:pure_color_primary
|
||||
SETUVAR pure_color_k8s_prefix:pure_color_info
|
||||
SETUVAR pure_color_light:white
|
||||
SETUVAR pure_color_mute:brblack
|
||||
SETUVAR pure_color_nixdevshell_prefix:pure_color_info
|
||||
SETUVAR pure_color_nixdevshell_symbol:pure_color_mute
|
||||
SETUVAR pure_color_normal:normal
|
||||
SETUVAR pure_color_prefix_root_prompt:pure_color_danger
|
||||
SETUVAR pure_color_primary:blue
|
||||
SETUVAR pure_color_prompt_on_error:pure_color_danger
|
||||
SETUVAR pure_color_prompt_on_success:pure_color_success
|
||||
SETUVAR pure_color_success:magenta
|
||||
SETUVAR pure_color_system_time:pure_color_mute
|
||||
SETUVAR pure_color_username_normal:pure_color_mute
|
||||
SETUVAR pure_color_username_root:pure_color_light
|
||||
SETUVAR pure_color_virtualenv:pure_color_mute
|
||||
SETUVAR pure_color_warning:yellow
|
||||
SETUVAR pure_enable_aws_profile:true
|
||||
SETUVAR pure_enable_container_detection:true
|
||||
SETUVAR pure_enable_git:true
|
||||
SETUVAR pure_enable_k8s:false
|
||||
SETUVAR pure_enable_nixdevshell:false
|
||||
SETUVAR pure_enable_single_line_prompt:false
|
||||
SETUVAR pure_enable_virtualenv:true
|
||||
SETUVAR pure_reverse_prompt_symbol_in_vimode:true
|
||||
SETUVAR pure_separate_prompt_on_error:false
|
||||
SETUVAR pure_shorten_prompt_current_directory_length:0
|
||||
SETUVAR pure_shorten_window_title_current_directory_length:0
|
||||
SETUVAR pure_show_jobs:true
|
||||
SETUVAR pure_show_prefix_root_prompt:false
|
||||
SETUVAR pure_show_subsecond_command_duration:false
|
||||
SETUVAR pure_show_system_time:false
|
||||
SETUVAR pure_symbol_aws_profile_prefix:
|
||||
SETUVAR pure_symbol_container_prefix:
|
||||
SETUVAR pure_symbol_git_dirty:\x2a
|
||||
SETUVAR pure_symbol_git_stash:\u2261
|
||||
SETUVAR pure_symbol_git_unpulled_commits:\u21e3
|
||||
SETUVAR pure_symbol_git_unpushed_commits:\u21e1
|
||||
SETUVAR pure_symbol_k8s_prefix:\u2638
|
||||
SETUVAR pure_symbol_nixdevshell_prefix:\u2744\ufe0f
|
||||
SETUVAR pure_symbol_prefix_root_prompt:\x23
|
||||
SETUVAR pure_symbol_prompt:\x3e_
|
||||
SETUVAR pure_symbol_reverse_prompt:\x7c_
|
||||
SETUVAR pure_symbol_ssh_prefix:
|
||||
SETUVAR pure_symbol_title_bar_separator:\x2d
|
||||
SETUVAR pure_symbol_virtualenv_prefix:
|
||||
SETUVAR pure_threshold_command_duration:5
|
||||
SETUVAR pure_truncate_prompt_current_directory_keeps:\x2d1
|
||||
SETUVAR pure_truncate_window_title_current_directory_keeps:\x2d1
|
||||
@@ -0,0 +1,3 @@
|
||||
function convert_discord --wraps='ffmpeg -i <source> -s 1280x720 <source>-discord.mp4' --description 'alias convert_discord=ffmpeg -i <source> -s 1280x720 <source>-discord.mp4'
|
||||
ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -i $argv[1] -s 1280x720 (string split -r -m1 . $argv[1])[1]-discord.mp4;
|
||||
end
|
||||
@@ -1,3 +0,0 @@
|
||||
function feh --description 'alias feh=feh -.'
|
||||
command feh -. $argv
|
||||
end
|
||||
@@ -1,34 +0,0 @@
|
||||
function fish_prompt --description 'Write out the prompt'
|
||||
set -l last_status $status
|
||||
set -l normal (set_color normal)
|
||||
# White at rest, crimson when the last command failed — the prompt
|
||||
# arrow is the one place the shell says "something is wrong", so it is
|
||||
# the one place that earns the accent. Was brgreen/brpurple, which
|
||||
# spent colour on states that are not worth any.
|
||||
set -l status_color (set_color ffffff)
|
||||
set -l cwd_color (set_color $fish_color_cwd)
|
||||
set -l vcs_color (set_color 6b6b70)
|
||||
set -l prompt_status ""
|
||||
|
||||
# Since we display the prompt on a new line allow the directory names to be longer.
|
||||
set -q fish_prompt_pwd_dir_length
|
||||
or set -lx fish_prompt_pwd_dir_length 0
|
||||
|
||||
# Color the prompt differently when we're root
|
||||
set -l suffix '❯'
|
||||
if functions -q fish_is_root_user; and fish_is_root_user
|
||||
if set -q fish_color_cwd_root
|
||||
set cwd_color (set_color $fish_color_cwd_root)
|
||||
end
|
||||
set suffix '#'
|
||||
end
|
||||
|
||||
# Color the prompt in red on error
|
||||
if test $last_status -ne 0
|
||||
set status_color (set_color $fish_color_error)
|
||||
set prompt_status $status_color "[" $last_status "]" $normal
|
||||
end
|
||||
|
||||
echo -s (prompt_login) ' ' $cwd_color (prompt_pwd) $vcs_color (fish_vcs_prompt) $normal ' ' $prompt_status
|
||||
echo -n -s $status_color $suffix ' ' $normal
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function get_open_ports --wraps='netstat -tunlp' --description 'alias get_open_ports=netstat -tunlp'
|
||||
netstat -tunlp $argv;
|
||||
end
|
||||
@@ -1,3 +0,0 @@
|
||||
function gitzip
|
||||
git archive HEAD -o (basename $PWD).zip
|
||||
end
|
||||
@@ -1,3 +1,3 @@
|
||||
function ls --wraps='exa --long --color=auto' --description 'alias ls=exa --long --color=auto'
|
||||
exa -l --color=auto $argv;
|
||||
exa --long --color=auto $argv;
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function mpv_vr --wraps='mpv --script=360plugin.lua --script-opts=360plugin-enabled=yes' --description 'alias mpv_vr=mpv --script=360plugin.lua --script-opts=360plugin-enabled=yes'
|
||||
mpv --script=~/.config/mpv/scripts/360plugin.lua --script-opts=360plugin-enabled=yes $argv;
|
||||
end
|
||||
@@ -1,3 +0,0 @@
|
||||
function open -d "Open an application detached from the terminal"
|
||||
nohup $argv >/dev/null 2>&1 &
|
||||
end
|
||||
@@ -1,52 +0,0 @@
|
||||
# name: 'Takemi'
|
||||
# url: 'local — matched to ~/.config/quickshell/config/Theme.qml'
|
||||
# preferred_background: 0a0a0c
|
||||
|
||||
# Same rules as the shell and the editor: white does the work, crimson is the
|
||||
# only saturated colour and it means either "load-bearing" (keyword, prefix,
|
||||
# selected) or "wrong" (error, status, root). Everything else is grey, or a hue
|
||||
# pulled far enough down that it reads as grey with a temperature.
|
||||
#
|
||||
# Kept in sync by hand with conf.d/takemi_theme.fish, which is what actually
|
||||
# takes effect at startup. This file exists so `fish_config` can preview it.
|
||||
|
||||
fish_color_normal ffffff
|
||||
fish_color_command ffffff --bold
|
||||
fish_color_keyword ff2d40
|
||||
fish_color_param c8c8ce
|
||||
fish_color_option 8d9bb8
|
||||
fish_color_quote 7f9b6a
|
||||
fish_color_escape 9db8bd
|
||||
fish_color_operator c8c8ce
|
||||
fish_color_redirection ff6b78
|
||||
fish_color_end 6b6b70
|
||||
fish_color_comment 6b6b70 --italics
|
||||
fish_color_error ff2d40 --bold
|
||||
fish_color_cancel ff2d40
|
||||
fish_color_gray 6b6b70
|
||||
fish_color_autosuggestion 4a4a52
|
||||
fish_color_selection 000000 --background=ff2d40
|
||||
fish_color_search_match 000000 --background=c8c8ce
|
||||
fish_color_match 000000 --background=ff2d40
|
||||
fish_color_history_current --bold
|
||||
fish_color_valid_path --underline
|
||||
fish_color_cwd ffffff --bold
|
||||
fish_color_cwd_root ff2d40 --bold
|
||||
fish_color_user c8c8ce
|
||||
fish_color_host ffffff --bold
|
||||
fish_color_host_remote ff6b78
|
||||
fish_color_status ff2d40
|
||||
|
||||
fish_pager_color_progress 6b6b70 --background=141418
|
||||
fish_pager_color_background
|
||||
fish_pager_color_prefix ffffff --bold
|
||||
fish_pager_color_completion c8c8ce
|
||||
fish_pager_color_description 6b6b70
|
||||
fish_pager_color_secondary_background --background=0d0d10
|
||||
fish_pager_color_secondary_completion c8c8ce
|
||||
fish_pager_color_secondary_description 6b6b70
|
||||
fish_pager_color_secondary_prefix ffffff --bold
|
||||
fish_pager_color_selected_background --background=ff2d40
|
||||
fish_pager_color_selected_completion 000000
|
||||
fish_pager_color_selected_description 000000
|
||||
fish_pager_color_selected_prefix 000000 --bold
|
||||
@@ -1,112 +0,0 @@
|
||||
# fluxo-rs configuration
|
||||
# Location: ~/.config/fluxo/config.toml
|
||||
#
|
||||
# The hardware modules below emit raw pipe-delimited values rather than display
|
||||
# strings. The Quickshell config (~/.config/quickshell/services/Sys.qml) parses
|
||||
# them and does its own formatting. The previous human-readable Waybar formats
|
||||
# are preserved in config.toml.waybar-bak.
|
||||
#
|
||||
# Quickshell only consumes cpu, mem, gpu, disk, net, sys and power from fluxo.
|
||||
# Everything else it gets natively — Quickshell.Services.Mpris, .Pipewire,
|
||||
# .UPower, .Notifications, Quickshell.Bluetooth — and Brightness.qml reads
|
||||
# sysfs directly. Those fluxo modules are therefore switched off below: left on,
|
||||
# they held a libpulse context, a BlueZ D-Bus poll every 2 s and an MPRIS
|
||||
# marquee ticker firing twice a second, all feeding a bar that does not exist.
|
||||
|
||||
[general]
|
||||
menu_command = "takemi-dmenu --prompt \"$FLUXO_PROMPT\""
|
||||
|
||||
[signals]
|
||||
network = 1
|
||||
cpu = 2
|
||||
memory = 3
|
||||
gpu = 4
|
||||
sys = 5
|
||||
disk = 6
|
||||
game = 7
|
||||
audio = 8
|
||||
bt = 9
|
||||
power = 10
|
||||
mpris = 11
|
||||
backlight = 12
|
||||
dnd = 13
|
||||
|
||||
[network]
|
||||
format = "{interface}|{ip}|{rx:.3}|{tx:.3}"
|
||||
|
||||
[cpu]
|
||||
format = "{usage:.1}|{temp:.1}"
|
||||
|
||||
[memory]
|
||||
format = "{used:.2}|{total:.2}"
|
||||
|
||||
[sys]
|
||||
format = "{uptime}|{load1:.2}|{load5:.2}|{load15:.2}"
|
||||
|
||||
[disk]
|
||||
format = "{mount}|{used:.1}|{total:.1}"
|
||||
|
||||
|
||||
[power]
|
||||
format = "{percentage}"
|
||||
|
||||
[audio]
|
||||
# Quickshell.Services.Pipewire drives Audio.qml; leaving this on kept a
|
||||
# libpulse context and its callbacks alive for nothing.
|
||||
enabled = false
|
||||
format_sink_unmuted = "{name} {volume:>3}% <span size='large'>{icon}</span>"
|
||||
format_sink_muted = "{name} <span size='large'> {icon}</span>"
|
||||
format_source_unmuted = "{name} {volume:>3}% <span size='large'>{icon}</span>"
|
||||
format_source_muted = "{name} <span size='large'>{icon}</span>"
|
||||
|
||||
[bt]
|
||||
# Quickshell.Bluetooth drives Bt.qml. This module polled BlueZ over D-Bus every
|
||||
# 2 seconds regardless.
|
||||
enabled = false
|
||||
format_plugin = "{alias} [{left}|{right}] {anc} <span size='large'></span>"
|
||||
format_connected = "{alias} <span size='large'></span>"
|
||||
format_disconnected = "Disconnected <span size='large'></span>"
|
||||
format_disabled = "<span size='large'></span>"
|
||||
|
||||
[game]
|
||||
format_active = "<span size='large'></span>"
|
||||
format_inactive = "<span size='large'></span>"
|
||||
|
||||
[mpris]
|
||||
# Quickshell.Services.Mpris drives Media.qml, and MediaPill/MediaPopout do their
|
||||
# own eliding and scrolling. This module was the single most expensive thing in
|
||||
# the daemon: `scroll` woke a ticker every `scroll_speed` ms to advance a marquee
|
||||
# offset for a Waybar that is not running, and each tick drove the signaler.
|
||||
enabled = false
|
||||
format = "{artist} - {title}"
|
||||
max_length = 20
|
||||
scroll = true
|
||||
scroll_speed = 500
|
||||
scroll_separator = " /// "
|
||||
|
||||
[pool]
|
||||
enabled = false
|
||||
format = "{used:>4.0}G / {total:>4.0}G"
|
||||
|
||||
[gpu]
|
||||
enabled = true
|
||||
format_amd = "{usage:.0}|{vram_used:.2}|{vram_total:.2}|{temp:.1}"
|
||||
format_intel = "{usage:.0}|0|0|0"
|
||||
format_nvidia = "{usage:.0}|{vram_used:.2}|{vram_total:.2}|{temp:.1}"
|
||||
|
||||
[keyboard]
|
||||
enabled = false
|
||||
format = "{layout}"
|
||||
|
||||
[backlight]
|
||||
# Was `enable = true` — not a key fluxo reads, so this section was silently
|
||||
# running on its default of enabled. Brightness.qml reads
|
||||
# /sys/class/backlight directly, so the D-Bus watcher here is redundant.
|
||||
enabled = false
|
||||
format = "{percentage}"
|
||||
|
||||
[dnd]
|
||||
# Notifs.qml owns do-not-disturb via Quickshell.Services.Notifications.
|
||||
enabled = false
|
||||
format_dnd = "<span size='large'></span>"
|
||||
format_normal = "<span size='large'></span>"
|
||||
@@ -1,85 +0,0 @@
|
||||
# fluxo-rs configuration
|
||||
# Location: ~/.config/fluxo/config.toml
|
||||
|
||||
[general]
|
||||
menu_command = "fuzzel --dmenu --prompt \"$FLUXO_PROMPT\""
|
||||
|
||||
[signals]
|
||||
network = 1
|
||||
cpu = 2
|
||||
memory = 3
|
||||
gpu = 4
|
||||
sys = 5
|
||||
disk = 6
|
||||
game = 7
|
||||
audio = 8
|
||||
bt = 9
|
||||
power = 10
|
||||
mpris = 11
|
||||
backlight = 12
|
||||
dnd = 13
|
||||
|
||||
[network]
|
||||
format = "{interface} ({ip}): {rx:^4.1} MB/s {tx:^4.1} MB/s"
|
||||
|
||||
[cpu]
|
||||
format = "CPU: {usage:^4.1}% {temp:^4.1}C"
|
||||
|
||||
[memory]
|
||||
format = "MEM: {used:^4.1}/{total:^4.1}GB"
|
||||
|
||||
[sys]
|
||||
format = "UP: {uptime} LOAD: {load1:^3.1} "
|
||||
|
||||
[disk]
|
||||
format = "{mount} {used:^3.0}/{total:^3.0}G"
|
||||
|
||||
|
||||
[power]
|
||||
format = "{percentage:>3}% {icon}"
|
||||
|
||||
[audio]
|
||||
format_sink_unmuted = "{name} {volume:>3}% <span size='large'>{icon}</span>"
|
||||
format_sink_muted = "{name} <span size='large'> {icon}</span>"
|
||||
format_source_unmuted = "{name} {volume:>3}% <span size='large'>{icon}</span>"
|
||||
format_source_muted = "{name} <span size='large'>{icon}</span>"
|
||||
|
||||
[bt]
|
||||
format_plugin = "{alias} [{left}|{right}] {anc} <span size='large'></span>"
|
||||
format_connected = "{alias} <span size='large'></span>"
|
||||
format_disconnected = "Disconnected <span size='large'></span>"
|
||||
format_disabled = "<span size='large'></span>"
|
||||
|
||||
[game]
|
||||
format_active = "<span size='large'></span>"
|
||||
format_inactive = "<span size='large'></span>"
|
||||
|
||||
[mpris]
|
||||
format = "{artist} - {title}"
|
||||
max_length = 20
|
||||
scroll = true
|
||||
scroll_speed = 500
|
||||
scroll_separator = " /// "
|
||||
|
||||
[pool]
|
||||
enabled = false
|
||||
format = "{used:>4.0}G / {total:>4.0}G"
|
||||
|
||||
[gpu]
|
||||
enabled = false
|
||||
format_amd = "AMD: {usage:>3.0}% {vram_used:>4.1}/{vram_total:>4.1}GB {temp:>4.1}C"
|
||||
format_intel = "iGPU: {usage:>3.0}%"
|
||||
format_nvidia = "NV: {usage:>3.0}% {vram_used:>4.1}/{vram_total:>4.1}GB {temp:>4.1}C"
|
||||
|
||||
[keyboard]
|
||||
enabled = false
|
||||
format = "{layout}"
|
||||
|
||||
[backlight]
|
||||
enable = true
|
||||
format = " {icon} {percentage}"
|
||||
|
||||
[dnd]
|
||||
enabled = true
|
||||
format_dnd = "<span size='large'></span>"
|
||||
format_normal = "<span size='large'></span>"
|
||||
Submodule
+1
Submodule fuzzel/catppuccin-fuzzel added at 0af0e26901.
@@ -0,0 +1,13 @@
|
||||
include=~/.config/fuzzel/catppuccin-fuzzel/themes/catppuccin-mocha/mauve.ini
|
||||
|
||||
[main]
|
||||
font=FiraCode Nerd Font:size=14
|
||||
terminal=alacritty
|
||||
dpi-aware=no
|
||||
prompt="> "
|
||||
icon-theme=Papirus-Dark
|
||||
show-actions=yes
|
||||
|
||||
[border]
|
||||
radius=4
|
||||
width=2
|
||||
@@ -1,4 +0,0 @@
|
||||
/* Catppuccin Mocha Blue carries the whole GTK3 palette itself, so there is
|
||||
* nothing to override here — the Takemi branch only needed this file because
|
||||
* it was painting Fluent's greys black. Kept as a hook for the next time the
|
||||
* rice disagrees with stock Catppuccin. */
|
||||
@@ -1,7 +0,0 @@
|
||||
[Settings]
|
||||
gtk-theme-name=catppuccin-mocha-blue-standard+default
|
||||
gtk-icon-theme-name=Papirus-Dark
|
||||
gtk-font-name=Adwaita Sans 11
|
||||
gtk-cursor-theme-name=Bibata-Modern-Classic
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-application-prefer-dark-theme=1
|
||||
@@ -1,4 +0,0 @@
|
||||
/* Catppuccin Mocha Blue, straight from the installed theme. The Takemi branch
|
||||
* overrode Fluent's greys with black here; Mocha needs no override — its own
|
||||
* surfaces are the palette the rest of the rice is built on. */
|
||||
@import url("/usr/share/themes/catppuccin-mocha-blue-standard+default/gtk-4.0/gtk.css");
|
||||
@@ -1,7 +0,0 @@
|
||||
[Settings]
|
||||
gtk-theme-name=catppuccin-mocha-blue-standard+default
|
||||
gtk-icon-theme-name=Papirus-Dark
|
||||
gtk-font-name=Adwaita Sans 11
|
||||
gtk-cursor-theme-name=Bibata-Modern-Classic
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-application-prefer-dark-theme=1
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"$schema": "https://raw.githubusercontent.com/LuaLS/vscode-lua/master/setting/schema.json",
|
||||
"runtime.version": "Lua 5.4",
|
||||
"workspace.library": [
|
||||
"/usr/share/hypr/stubs"
|
||||
],
|
||||
"diagnostics.globals": [
|
||||
"hl"
|
||||
]
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
<div align="center">
|
||||
<h1>✦ Google-ish Hyprlock Theme ✦</h1>
|
||||
<h3></h3>
|
||||
</div>
|
||||
|
||||
## ▶️ Preview
|
||||
<details>
|
||||
<summary><b>Without Profile & User Info</b></summary>
|
||||
<img src="https://github.com/user-attachments/assets/7bbacd47-b0d7-4132-9951-53dc0ead604c" alt="Hyprlock-Without-Profile" width="1280">
|
||||
</details>
|
||||
<details>
|
||||
<summary><b>With Profile & User Info</b></summary>
|
||||
<img src="https://github.com/user-attachments/assets/9a58a6e2-a71f-4b28-998a-8a45c8950aaf" alt="Hyprlock-With-Profile" width="1280">
|
||||
</details>
|
||||
<details>
|
||||
<summary><b>With Profile & User Info [12H Format]</b></summary>
|
||||
<img src="https://github.com/user-attachments/assets/e0049860-7511-432e-8814-8d17d448182b" alt="Hyprlock-With-Profile" width="1280">
|
||||
</details>
|
||||
|
||||
## 📦 Installation
|
||||
><i><b>❗ This configuration is based on a 1080p display, if you are using a higher screen resolution,</br>you may need to reconfigure the sizes and recoordinate all the components.</b></i>
|
||||
|
||||
<b>Auto-Installation :</b>
|
||||
```bash
|
||||
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Tamarindtype/googlish-hyprlock-theme/main/install.sh)"
|
||||
```
|
||||
</br><b>Manual Installation :</b>
|
||||
```bash
|
||||
# Backup your current Hyprlock config first!
|
||||
# Clone the repository
|
||||
git clone https://github.com/Tamarindtype/googlish-hyprlock-theme.git
|
||||
|
||||
# Move all the files to the hyprland config folder
|
||||
mv ./googlish-hyprlock-theme/* ~/.config/hypr/
|
||||
|
||||
# Go to script folder
|
||||
cd $HOME/.config/hypr/hyprlock/
|
||||
|
||||
# Change all the scripts permission to make them executable
|
||||
chmod +x *.sh
|
||||
|
||||
# Run the Hyprlock
|
||||
hyprlock
|
||||
```
|
||||
|
||||
## 🗄️ Directory Structure
|
||||
```md
|
||||
$HOME
|
||||
└── .config
|
||||
└── hypr
|
||||
├── hyprlock
|
||||
│ ├── assets
|
||||
│ ├── battery.sh
|
||||
│ ├── bluetooth.sh
|
||||
│ ├── change_wallpaper.sh
|
||||
│ ├── greeting.sh
|
||||
│ ├── network.sh
|
||||
│ ├── medianotif.sh
|
||||
│ └── weatherinfo.sh
|
||||
└── hyprlock.conf
|
||||
```
|
||||
|
||||
## 🗨️ FAQ
|
||||
| Question | Answer |
|
||||
| --- | --- |
|
||||
| Profile & User info does not appear? | By default, it set without profile and user info. You can enable it by uncomment the `image` @PROFILE PICTURE and `label` @USER INFO in `hyprlock.conf` |
|
||||
| Battery percentage number does not appear? | Change your battery module in `battery.sh`. The default is `BAT0`, you can check it by running this command `ls /sys/class/power_supply/` |
|
||||
| How to change the 24H Format to 12H Format? | Comment the 24H format and uncomment the 12H format. also uncomment the AM/PM `label` & `shape` in `hyprlock.conf` |
|
||||
| null location or Unable to determine your location? | Change the IP Geolocation provider in `weatherinfo.sh` |
|
||||
|
||||
## 🏅 Recommendations
|
||||
| Type | Name | Links |
|
||||
| --- | --- | --- |
|
||||
| Regular | PP Neue Machina | [Pangram Pangram](https://pangrampangram.com/products/neue-machina) |
|
||||
| Nerd Font | Geist & Space Mono | [Nerd Fonts](https://github.com/ryanoasis/nerd-fonts/releases) |
|
||||
| Emoji | Apple Emoji | [apple-emoji-linux](https://github.com/samuelngs/apple-emoji-linux) |
|
||||
|
||||
## ✨ Special Thanks & Credits
|
||||
|
||||
| Details | Credit |
|
||||
| --- | --- |
|
||||
| Battery & Playerctl Widget Scripts | @ashish-kus [minimal Hyprlock](https://gist.github.com/ashish-kus/dd562b0bf5e8488a09e0b9c289f4574c) |
|
||||
| Helped Me Create Dynamic WiFi, Bluetooth, Weathercast and Greeting Widget | @OPENAI [ChatGPT](https://chatgpt.com/)|
|
||||
Submodule
+1
Submodule hypr/catppuccin-hyprland added at c388ac5556.
Submodule
+1
Submodule hypr/catppuccin-hyprlock added at f650895064.
@@ -0,0 +1,20 @@
|
||||
|
||||
# narls hyprland dotfiles
|
||||
source = ~/.config/hypr/modules/plugins.conf
|
||||
|
||||
source = ~/.config/hypr/modules/monitors.conf
|
||||
|
||||
source = ~/.config/hypr/modules/programs.conf
|
||||
|
||||
source = ~/.config/hypr/modules/autostart.conf
|
||||
|
||||
source = ~/.config/hypr/modules/env.conf
|
||||
|
||||
source = ~/.config/hypr/modules/theme.conf
|
||||
|
||||
source = ~/.config/hypr/modules/input.conf
|
||||
|
||||
source = ~/.config/hypr/modules/keybinds.conf
|
||||
|
||||
source = ~/.config/hypr/modules/window_rules.conf
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
-- narls hyprland dotfiles
|
||||
--
|
||||
-- Hyprland 0.55+ reads this file instead of hyprland.conf. Every part lives in
|
||||
-- lua/, and each require() is its own scope: an error in one file does not stop
|
||||
-- the others from loading.
|
||||
--
|
||||
-- Order matters only in two places: palette must exist before anything paints
|
||||
-- with it, and monitors must exist before the lid handler binds to them. Both
|
||||
-- are handled by the requires below, top to bottom.
|
||||
|
||||
-- what the desktop looks like
|
||||
require("lua/palette")
|
||||
require("lua/look")
|
||||
require("lua/animations")
|
||||
|
||||
-- what it runs on
|
||||
require("lua/env")
|
||||
require("lua/monitors")
|
||||
require("lua/lid")
|
||||
require("lua/input")
|
||||
|
||||
-- what it runs
|
||||
require("lua/apps")
|
||||
require("lua/autostart")
|
||||
|
||||
-- how windows behave
|
||||
require("lua/rules/windows")
|
||||
require("lua/rules/layers")
|
||||
|
||||
-- how it is driven
|
||||
require("lua/binds/apps")
|
||||
require("lua/binds/windows")
|
||||
require("lua/binds/workspaces")
|
||||
require("lua/binds/shell")
|
||||
require("lua/binds/media")
|
||||
require("lua/binds/capture")
|
||||
+60
-505
@@ -1,545 +1,100 @@
|
||||
# For more information visit https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/
|
||||
|
||||
source = ~/.config/hypr/catppuccin-hyprland/themes/mocha.conf
|
||||
|
||||
$scrPath = ~/.config/hypr/hyprlock/
|
||||
$imgPath = ~/.config/hypr/hyprlock/assets/
|
||||
|
||||
$USER = narl # Your Alias
|
||||
$host = uname -n #Your Alias
|
||||
$wifi-mode = false # Change the WiFi output. true = show SSID, false = Connected.
|
||||
$bt-mode = false # Change the Bluetooth output. true = show Device name, false = Connected.
|
||||
|
||||
# Default geolocation provider is IP-API.COM, hardcode it if the location does not match the current location.
|
||||
# Hardcode your location (If hardcode does not recognize your City, change it to IP Geolocation provider in weatherinfo.sh)
|
||||
$CITY =
|
||||
$COUNTRY =
|
||||
|
||||
# WALLPAPER
|
||||
# Just comment and uncomment to select
|
||||
$wallpaper = screenshot
|
||||
#$wallpaper = ~/your/wallpaper-path.png
|
||||
$blur = 2
|
||||
|
||||
# ADJUST HERE
|
||||
$rounding = 12
|
||||
$shape-rd = -1
|
||||
$font-text = GeistMono Nerd Font Bold
|
||||
$font-text0 = GeistMono Nerd Font
|
||||
$font-display = PP Neue Machina Ultra-Bold
|
||||
$font-symbol = JetBrainsMono Nerd Font Mono
|
||||
# Input Var
|
||||
$weight = 2
|
||||
$inner-color = rgba($baseAlpha80)
|
||||
$border-color = rgba($mauveAlpha80)
|
||||
|
||||
# Colors
|
||||
$clock-color = $text
|
||||
$fg0 = $text
|
||||
$fg1 = $base
|
||||
$shape-col0 = $mauve
|
||||
$shape-col1 = rgba($surface0Alpha80)
|
||||
$shape-col2 = rgba($surface1Alpha80)
|
||||
$shadow-pass = 2
|
||||
$shadow-size = 3
|
||||
$shadow-color = $crust
|
||||
$shadow-boost = 1.2
|
||||
$text-shadow-pass = 1
|
||||
$text-shadow-boost = 0.5
|
||||
|
||||
source = $HOME/.config/hypr/catppuccin-hyprland/themes/mocha.conf
|
||||
|
||||
$accent = $mauve
|
||||
$accentAlpha = $mauveAlpha
|
||||
$font = JetBrainsMono Nerd Font
|
||||
|
||||
# GENERAL
|
||||
general {
|
||||
no_fade_in = true
|
||||
grace = 1
|
||||
disable_loading_bar = false
|
||||
hide_cursor = true
|
||||
ignore_empty_input = true
|
||||
text_trim = true
|
||||
}
|
||||
|
||||
#BACKGROUND
|
||||
# BACKGROUND
|
||||
background {
|
||||
monitor =
|
||||
path = $wallpaper
|
||||
|
||||
blur_passes = $blur
|
||||
contrast = 0.8916
|
||||
brightness = 0.7172
|
||||
vibrancy = 0.1696
|
||||
vibrancy_darkness = 0
|
||||
path = $HOME/Pictures/wallpapers/rem-latte.jpg
|
||||
blur_passes = 0
|
||||
color = $base
|
||||
}
|
||||
|
||||
# PROFILE PICTURE
|
||||
image {
|
||||
monitor =
|
||||
path = $imgPath/profile.jpg
|
||||
size = 120 # lesser side if not 1:1 ratio
|
||||
opacity = 0.25
|
||||
|
||||
shadow_pass = $shadow-pass
|
||||
shadow_size = $shadow-size
|
||||
shadow_color = $shadow-color
|
||||
shadow_boost = $shadow-boost
|
||||
|
||||
rounding = $rounding # negative values mean circle
|
||||
border_size = 4
|
||||
border_color = $mauve
|
||||
rotate = 0 # degrees, counter-clockwise
|
||||
|
||||
position = 20, -20
|
||||
halign = left
|
||||
valign = top
|
||||
zindex = 1
|
||||
}
|
||||
|
||||
# USER INFO
|
||||
# LAYOUT
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo -e "$USER\n $($host)\n\n$(uname -r)\nPackages: $(pacman -Q | wc -l) pacman"
|
||||
|
||||
shadow_passes = 1
|
||||
shadow_boost = 0.5
|
||||
|
||||
color = $fg0
|
||||
font_size = 11
|
||||
font_family = $font-text
|
||||
|
||||
position = 170, -35
|
||||
text = Layout: $LAYOUT
|
||||
color = $text
|
||||
font_size = 25
|
||||
font_family = $font
|
||||
position = 30, -30
|
||||
halign = left
|
||||
valign = top
|
||||
}
|
||||
|
||||
# WEATHERCAST & LOCATION
|
||||
# TIME
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "$(bash $scrPath/weatherinfo.sh)"
|
||||
|
||||
shadow_passes = 1
|
||||
shadow_boost = 0.5
|
||||
|
||||
color = $fg0
|
||||
font_size = 11
|
||||
font_family = $font-text
|
||||
|
||||
position = 0, -20
|
||||
halign = center
|
||||
text = $TIME
|
||||
color = $text
|
||||
font_size = 90
|
||||
font_family = $font
|
||||
position = -30, 0
|
||||
halign = right
|
||||
valign = top
|
||||
}
|
||||
|
||||
# INPUT FIELD
|
||||
input-field {
|
||||
monitor =
|
||||
size = 275, 55
|
||||
rounding = $rounding
|
||||
|
||||
outline_thickness = $weight
|
||||
outer_color = $border-color
|
||||
dots_size = 0.1 # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 1 # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = true
|
||||
|
||||
inner_color = $inner-color
|
||||
font_color = $fg0
|
||||
fade_on_empty = false
|
||||
|
||||
font_family = $font-text
|
||||
placeholder_text = <span foreground="##$textAlpha"> $USER</span>
|
||||
hide_input = false
|
||||
check_color = $mauve
|
||||
fail_color = $red
|
||||
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
|
||||
capslock_color = $yellow
|
||||
|
||||
position = 0, -240
|
||||
halign = center
|
||||
valign = center
|
||||
zindex = 10
|
||||
}
|
||||
|
||||
# TIME HR
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo -e "$(date +"%H")" # 24-Hour Format
|
||||
#text = cmd[update:1000] echo -e "$(date +"%I")" # 12-Hour Format
|
||||
color = $clock-color
|
||||
|
||||
shadow_pass = $shadow-pass
|
||||
shadow_size = $shadow-size
|
||||
shadow_color = $shadow-color
|
||||
shadow_boost = $shadow-boost
|
||||
|
||||
font_size = 150
|
||||
font_family = $font-display
|
||||
|
||||
position = 0, -155
|
||||
halign = center
|
||||
valign = top
|
||||
}
|
||||
|
||||
# TIME MM
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo -e "$(date +"%M")"
|
||||
color = $clock-color
|
||||
|
||||
shadow_pass = $shadow-pass
|
||||
shadow_size = $shadow-size
|
||||
shadow_color = $shadow-color
|
||||
shadow_boost = $shadow-boost
|
||||
|
||||
font_size = 150
|
||||
font_family = $font-display
|
||||
|
||||
position = 0, -325
|
||||
halign = center
|
||||
valign = top
|
||||
}
|
||||
|
||||
# AM/PM for 12-Hour Format
|
||||
#label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo -e "$(date +"%p")"
|
||||
color = $clock-color
|
||||
|
||||
shadow_pass = $shadow-pass
|
||||
shadow_size = $shadow-size
|
||||
shadow_color = $shadow-color
|
||||
shadow_boost = $shadow-boost
|
||||
|
||||
font_size = 16
|
||||
font_family = $font-display
|
||||
|
||||
position = 0, 17
|
||||
halign = center
|
||||
valign = center
|
||||
zindex = 5
|
||||
}
|
||||
|
||||
# AM/PM BG
|
||||
#shape {
|
||||
monitor =
|
||||
size = 70, 40
|
||||
|
||||
shadow_passes = $text-shadow-pass
|
||||
shadow_boost = $text-shadow-boost
|
||||
|
||||
color = $shape-col2
|
||||
rounding = $rounding
|
||||
border_size =
|
||||
border_color =
|
||||
|
||||
position = 0, 20
|
||||
halign = center
|
||||
valign = center
|
||||
zindex = 1
|
||||
}
|
||||
|
||||
# GREETING
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "$(bash $scrPath/greeting.sh)"
|
||||
|
||||
shadow_passes = $text-shadow-pass
|
||||
shadow_boost = $text-shadow-boost
|
||||
|
||||
color = $fg0
|
||||
font_size = 11
|
||||
font_family = $font-text
|
||||
|
||||
position = 0, -55
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# TODAY IS
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] bash -c 'day=$(date +%A); echo "Today is $day"'
|
||||
|
||||
shadow_passes = $text-shadow-pass
|
||||
shadow_boost = $text-shadow-boost
|
||||
|
||||
color = $fg0
|
||||
font_size = 11
|
||||
font_family = $font-text
|
||||
|
||||
position = 0, -75
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# DATE
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] bash -c 'day=$(date +%d); case "$day" in 1) suffix="st";; 2) suffix="nd";; 3) suffix="rd";; *) suffix="th";; esac; echo -e "$(date +"%B %e")'$day'$suffix, $(date +%Y)"'
|
||||
|
||||
shadow_passes = $text-shadow-pass
|
||||
shadow_boost = $text-shadow-boost
|
||||
|
||||
color = $fg0
|
||||
font_size = 14
|
||||
font_family = $font-text
|
||||
|
||||
position = 0, -115
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# BATTERY
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo -e "$($scrPath/battery.sh)"
|
||||
|
||||
color = $fg1
|
||||
font_size = 12
|
||||
font_family = $font-text
|
||||
|
||||
position = -37, 29
|
||||
text = cmd[update:43200000] date +"%A, %d %B %Y"
|
||||
color = $text
|
||||
font_size = 25
|
||||
font_family = $font
|
||||
position = -30, -150
|
||||
halign = right
|
||||
valign = bottom
|
||||
zindex = 5
|
||||
valign = top
|
||||
}
|
||||
|
||||
# NETWORK
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo -e "$($scrPath/network.sh)"
|
||||
|
||||
color = $fg1
|
||||
font_size = 12
|
||||
font_family = $font-text
|
||||
|
||||
position = 37, 29
|
||||
halign = left
|
||||
valign = bottom
|
||||
zindex = 5
|
||||
# FINGERPRINT
|
||||
{
|
||||
monitor = "";
|
||||
text = "$FPRINTPROMPT";
|
||||
color = "$text";
|
||||
font_size = 14;
|
||||
font_family = $font;
|
||||
position = "0, -107";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
|
||||
# BLUETOOTH
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo -e "$(~/.config/hypr/hyprlock/bluetooth.sh)"
|
||||
|
||||
color = $fg1
|
||||
font_size = 12
|
||||
font_family = $font-text
|
||||
|
||||
position = 37, 85
|
||||
halign = left
|
||||
valign = bottom
|
||||
zindex = 5
|
||||
}
|
||||
|
||||
# BATTERY BG
|
||||
shape {
|
||||
monitor =
|
||||
size = 90, 40
|
||||
|
||||
shadow_passes = $text-shadow-pass
|
||||
shadow_boost = $text-shadow-boost
|
||||
|
||||
color = $shape-col0
|
||||
rounding = $shape-rd
|
||||
border_size =
|
||||
border_color =
|
||||
|
||||
position = -20, 20
|
||||
halign = right
|
||||
valign = bottom
|
||||
zindex = 1
|
||||
}
|
||||
|
||||
# NETWORK BG
|
||||
shape {
|
||||
monitor =
|
||||
size = 150, 40
|
||||
|
||||
shadow_passes = $text-shadow-pass
|
||||
shadow_boost = $text-shadow-boost
|
||||
|
||||
color = $shape-col0
|
||||
rounding = $shape-rd
|
||||
border_size =
|
||||
border_color =
|
||||
|
||||
position = 20, 20
|
||||
halign = left
|
||||
valign = bottom
|
||||
zindex = 1
|
||||
}
|
||||
|
||||
# BLUETOOTH BG
|
||||
shape {
|
||||
monitor =
|
||||
size = 150, 40
|
||||
|
||||
shadow_passes = $text-shadow-pass
|
||||
shadow_boost = $text-shadow-boost
|
||||
|
||||
color = $shape-col0
|
||||
rounding = $shape-rd
|
||||
border_size =
|
||||
border_color =
|
||||
|
||||
position = 20, 75
|
||||
halign = left
|
||||
valign = bottom
|
||||
zindex = 1
|
||||
}
|
||||
|
||||
# MEDIA BG
|
||||
# USER AVATAR
|
||||
image {
|
||||
monitor =
|
||||
path = $imgPath/media-bg-dark-25.png
|
||||
size = 8%
|
||||
opacity = 0.25
|
||||
|
||||
rounding = 5
|
||||
border_size = 0
|
||||
rotate = 0
|
||||
|
||||
position = 0, -10%
|
||||
path = $HOME/.face
|
||||
size = 100
|
||||
border_color = $accent
|
||||
position = 0, 75
|
||||
halign = center
|
||||
valign = center
|
||||
zindex = 1
|
||||
}
|
||||
|
||||
shape {
|
||||
# INPUT FIELD
|
||||
input-field {
|
||||
monitor =
|
||||
size = 35%, 8%
|
||||
|
||||
shadow_passes = $text-shadow-pass
|
||||
shadow_boost = $text-shadow-boost
|
||||
|
||||
color = $shape-col1
|
||||
rounding = $rounding
|
||||
border_size =
|
||||
border_color =
|
||||
|
||||
position = 0, 5%
|
||||
halign = center
|
||||
valign = bottom
|
||||
zindex = 1
|
||||
}
|
||||
|
||||
# PLAYER TITLE
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --title)"
|
||||
|
||||
color = $fg0
|
||||
font_size = 14
|
||||
font_family = $font-text
|
||||
|
||||
position = 0, -40%
|
||||
size = 300, 60
|
||||
outline_thickness = 4
|
||||
dots_size = 0.2
|
||||
dots_spacing = 0.2
|
||||
dots_center = true
|
||||
outer_color = $accent
|
||||
inner_color = $surface0
|
||||
font_color = $text
|
||||
fade_on_empty = false
|
||||
placeholder_text = <span foreground="##$textAlpha"><i> Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>
|
||||
hide_input = false
|
||||
check_color = $accent
|
||||
fail_color = $red
|
||||
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
|
||||
capslock_color = $yellow
|
||||
position = 0, -47
|
||||
halign = center
|
||||
valign = center
|
||||
zindex = 5
|
||||
}
|
||||
|
||||
# PLAYER ARTIST
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --artist)"
|
||||
|
||||
color = $fg0
|
||||
font_size = 11
|
||||
font_family = $font-text
|
||||
|
||||
position = 0, -42%
|
||||
halign = center
|
||||
valign = center
|
||||
zindex = 5
|
||||
}
|
||||
|
||||
# PLAYER ALBUM
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --album)"
|
||||
|
||||
color = $fg0
|
||||
font_size = 11
|
||||
font_family = $font-text0
|
||||
|
||||
position = 0, -44%
|
||||
halign = center
|
||||
valign = center
|
||||
zindex = 5
|
||||
}
|
||||
|
||||
# PLAYER STATUS SYMBOL
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --status-symbol)"
|
||||
|
||||
color = $fg0
|
||||
font_size = 16
|
||||
font_family = $font-symbol
|
||||
|
||||
position = 33.5%, -38%
|
||||
halign = left
|
||||
valign = center
|
||||
zindex = 5
|
||||
}
|
||||
|
||||
# PLAYER STATUS
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --status)"
|
||||
|
||||
color = $fg0
|
||||
font_size = 10
|
||||
font_family = $font-text
|
||||
|
||||
position = 35%, -38%
|
||||
halign = left
|
||||
valign = center
|
||||
zindex = 5
|
||||
}
|
||||
|
||||
# PLAYER SOURCE SYMBOL
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --source-symbol)"
|
||||
|
||||
color = rgba($subtext0Alpha99)
|
||||
font_size = 16
|
||||
font_family = $font-symbol
|
||||
|
||||
position = -33.5%, -38%
|
||||
halign = right
|
||||
valign = center
|
||||
zindex = 5
|
||||
}
|
||||
|
||||
# PLAYER SOURCE
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --source)"
|
||||
|
||||
color = rgba($subtext0Alpha99)
|
||||
font_size = 10
|
||||
font_family = $font-text
|
||||
|
||||
position = -35%, -38%
|
||||
halign = right
|
||||
valign = center
|
||||
zindex = 5
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text =
|
||||
|
||||
color = $fg0
|
||||
font_size = 24
|
||||
font_family = $font-symbol
|
||||
|
||||
position = 0, 1%
|
||||
halign = center
|
||||
valign = bottom
|
||||
}
|
||||
|
||||
|
||||
@@ -1,155 +0,0 @@
|
||||
source = $HOME/.config/hypr/catppuccin-hyprland/themes/mocha.conf
|
||||
|
||||
$accent = $mauve
|
||||
$accentAlpha = $mauveAlpha
|
||||
$font = JetBrainsMono Nerd Font
|
||||
|
||||
# GENERAL
|
||||
general {
|
||||
hide_cursor = true
|
||||
no_fade_in = false
|
||||
grace = 0
|
||||
disable_loading_bar = true
|
||||
}
|
||||
|
||||
# BACKGROUND
|
||||
background {
|
||||
monitor =
|
||||
path = $HOME/Pictures/reze/reze.png
|
||||
blur_passes = 3
|
||||
blur_size = 7
|
||||
noise = 0.0117
|
||||
contrast = 0.8916
|
||||
brightness = 0.8172
|
||||
vibrancy = 0.1696
|
||||
vibrancy_darkness = 0.0
|
||||
color = $base
|
||||
}
|
||||
|
||||
# TIME
|
||||
label {
|
||||
monitor =
|
||||
text = $TIME
|
||||
color = $text
|
||||
font_size = 120
|
||||
font_family = $font
|
||||
position = 0, 300
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# DATE
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:43200000] date +"%A, %d %B %Y"
|
||||
color = $text
|
||||
font_size = 30
|
||||
font_family = $font
|
||||
position = 0, 200
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# USER AVATAR (Center)
|
||||
image {
|
||||
monitor =
|
||||
path = $HOME/.face
|
||||
size = 120
|
||||
border_color = rgba(255, 255, 255, 0.1)
|
||||
position = 0, 50
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# INPUT FIELD (Center)
|
||||
input-field {
|
||||
monitor =
|
||||
size = 300, 60
|
||||
outline_thickness = 2
|
||||
dots_size = 0.2
|
||||
dots_spacing = 0.2
|
||||
dots_center = true
|
||||
outer_color = rgba(255, 255, 255, 0.1)
|
||||
inner_color = rgba(0, 0, 0, 0.2)
|
||||
font_color = $text
|
||||
fade_on_empty = false
|
||||
placeholder_text = <span foreground="##$textAlpha"><i> Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>
|
||||
hide_input = false
|
||||
check_color = $accent
|
||||
fail_color = $red
|
||||
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
|
||||
capslock_color = $yellow
|
||||
position = 0, -60
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# --- MUSIC DASHBOARD (TOP RIGHT) ---
|
||||
|
||||
# ALBUM ART (At the very top right, 80px high, adjusted -3px for perfect alignment)
|
||||
image {
|
||||
monitor =
|
||||
path = /tmp/hyprlock_art.png
|
||||
size = 80
|
||||
rounding = 15
|
||||
border_color = rgba(255, 255, 255, 0.1)
|
||||
reload_time = 2
|
||||
reload_cmd = ~/.config/hypr/scripts/album_art.sh
|
||||
position = -20, -17
|
||||
halign = right
|
||||
valign = top
|
||||
}
|
||||
|
||||
# MUSIC TEXT BOX (To the left of the image, same height)
|
||||
shape {
|
||||
monitor =
|
||||
size = 300, 80
|
||||
color = rgba(0, 0, 0, 0.3)
|
||||
rounding = 15
|
||||
border_size = 1
|
||||
border_color = rgba(255, 255, 255, 0.1)
|
||||
position = -110, -20
|
||||
halign = right
|
||||
valign = top
|
||||
}
|
||||
|
||||
# MUSIC TEXT (Right aligned and vertically centered inside the 80px box)
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] ~/.config/hypr/scripts/songdetail.sh
|
||||
color = $text
|
||||
font_size = 14
|
||||
font_family = $font
|
||||
position = -125, -37
|
||||
halign = right
|
||||
valign = top
|
||||
text_align = right
|
||||
}
|
||||
|
||||
# --- STATUS DASHBOARD (BOTTOM RIGHT) ---
|
||||
|
||||
# SYSTEM INFO BOX (Vertical stack container)
|
||||
shape {
|
||||
monitor =
|
||||
size = 300, 100
|
||||
color = rgba(0, 0, 0, 0.3)
|
||||
rounding = 15
|
||||
border_size = 1
|
||||
border_color = rgba(255, 255, 255, 0.1)
|
||||
position = -20, 20
|
||||
halign = right
|
||||
valign = bottom
|
||||
}
|
||||
|
||||
# SYSTEM INFO TEXT (3 lines, top of each other, right aligned)
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:5000] ~/.config/hypr/scripts/status_info.sh
|
||||
color = $text
|
||||
font_size = 14
|
||||
font_family = $font
|
||||
position = -35, 35
|
||||
halign = right
|
||||
valign = bottom
|
||||
text_align = right
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 7.0 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.6 MiB |
@@ -1,33 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Get the current battery percentage
|
||||
battery_percentage=$(cat /sys/class/power_supply/BAT0/capacity)
|
||||
|
||||
# Get the battery status (Charging or Discharging)
|
||||
battery_status=$(cat /sys/class/power_supply/BAT0/status)
|
||||
|
||||
# Define the battery icons for each 10% segment
|
||||
battery_icons=("" "" "" "" "" "" "" "" "" "")
|
||||
|
||||
# Define the charging icon
|
||||
charging_icon=""
|
||||
|
||||
# Calculate the index for the icon array
|
||||
# Ensure the index is within bounds (0 to 9) for battery percentages 0 to 100
|
||||
icon_index=$((battery_percentage / 10))
|
||||
|
||||
# If the battery is 100%, use the last icon (index 9)
|
||||
if [ "$battery_percentage" -eq 100 ]; then
|
||||
icon_index=9
|
||||
fi
|
||||
|
||||
# Get the corresponding icon
|
||||
battery_icon=${battery_icons[$icon_index]}
|
||||
|
||||
# Check if the battery is charging
|
||||
if [ "$battery_status" = "Charging" ]; then
|
||||
battery_icon="$charging_icon"
|
||||
fi
|
||||
|
||||
# Output the battery percentage and icon
|
||||
echo "$battery_percentage% $battery_icon"
|
||||
@@ -1,47 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Path to the Hyprland configuration file
|
||||
config_file="$HOME/.config/hypr/hyprlock.conf"
|
||||
|
||||
# Read the bt-mode value from the configuration file
|
||||
bt_mode=$(grep -oP '^\$bt-mode\s*=\s*\K\S+' ~/.config/hypr/hyprlock.conf)
|
||||
|
||||
# Get Bluetooth power status
|
||||
bluetooth_status=$(bluetoothctl show | grep "Powered:" | awk '{print $2}')
|
||||
|
||||
# Check if Bluetooth is powered on
|
||||
if [ "$bluetooth_status" != "yes" ]; then
|
||||
echo " Bluetooth Off"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Initialize connected devices
|
||||
connected_devices=$(echo "$connected_devices" | sed 's/[[:space:]]*$//')
|
||||
|
||||
# Process Bluetooth devices
|
||||
while read -r line; do
|
||||
echo "Processing line: $line" >&2
|
||||
device_mac=$(echo "$line" | awk '{print $2}')
|
||||
device_name=$(echo "$line" | cut -d' ' -f3-)
|
||||
echo "Device MAC: $device_mac" >&2
|
||||
echo "Device Name: $device_name" >&2
|
||||
if bluetoothctl info "$device_mac" | grep -q "Connected: yes"; then
|
||||
connected_devices+="$device_name "
|
||||
fi
|
||||
echo "Finished processing $device_mac" >&2
|
||||
echo "---" >&2
|
||||
done < <(bluetoothctl devices)
|
||||
|
||||
# If no connected devices, show "No Devices"
|
||||
if [ -z "$connected_devices" ]; then
|
||||
echo " No Devices"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Display output based on bt-mode
|
||||
if [ "$bt_mode" = "true" ]; then
|
||||
echo " $connected_devices"
|
||||
else
|
||||
echo " Connected"
|
||||
fi
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Only works if you use SWWW for your wallpapers
|
||||
|
||||
SWWW_DIR="$HOME/.cache/swww/"
|
||||
HYPRLOCK="$HOME/.config/hypr/hyprlock.conf"
|
||||
|
||||
# Get a Monitor Cache File
|
||||
FIRST_FILE=$(find "$SWWW_DIR" -type f | head -n 1)
|
||||
|
||||
# Check if SWWW file exists
|
||||
if [ -n "$FIRST_FILE" ] && [ -f "$FIRST_FILE" ]; then
|
||||
WALLPAPER=$(sed -n '2p' "$FIRST_FILE")
|
||||
|
||||
sed -i "s|^\(\$wallpaper[[:space:]]*=[[:space:]]*\).*|\1$WALLPAPER # (screenshot or /path/to/your/wallpaper.jpg)|" "$HYPRLOCK"
|
||||
echo "Wallpaper path updated to $WALLPAPER"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Error
|
||||
echo "Fehler: kein Wallpaper gefunden."
|
||||
exit 1
|
||||
@@ -1,32 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Set your Username
|
||||
# username="TamarindX"
|
||||
|
||||
# Read the username alias from hyprlock.conf
|
||||
username=$(grep -oP '^\$USER\s*=\s*\K\S+' ~/.config/hypr/hyprlock.conf)
|
||||
|
||||
# Check if the username was successfully extracted
|
||||
if [ -z "$username" ]; then
|
||||
echo "Username not found in hyprlock.conf."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get the current hour
|
||||
hour=$(date +%H)
|
||||
|
||||
# Determine the greeting based on the time
|
||||
if [ "$hour" -ge 5 ] && [ "$hour" -lt 12 ]; then
|
||||
greeting="Good Morning"
|
||||
elif [ "$hour" -ge 12 ] && [ "$hour" -lt 17 ]; then
|
||||
greeting="Good Afternoon"
|
||||
elif [ "$hour" -ge 17 ] && [ "$hour" -lt 21 ]; then
|
||||
greeting="Good Evening"
|
||||
elif [ "$hour" -ge 21 ] && [ "$hour" -lt 24 ]; then
|
||||
greeting="Good Night"
|
||||
else
|
||||
greeting="GO TO SLEEP!"
|
||||
fi
|
||||
|
||||
# Output the combined text
|
||||
echo -e "Hello, $username! $greeting"
|
||||
@@ -1,65 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Set this variable to control the output
|
||||
# Set to "true" to show SSID, "false" to show "Connected"
|
||||
# show_ssid=false
|
||||
|
||||
# Read the wifi-mode alias from hyprlock.conf
|
||||
show_ssid=$(grep -oP '^\$wifi-mode\s*=\s*\K\S+' ~/.config/hypr/hyprlock.conf)
|
||||
|
||||
# Check if the SSID was successfully extracted else fallback?!
|
||||
if [ -z "$show_ssid" ]; then
|
||||
show_ssid=false
|
||||
fi
|
||||
|
||||
# Check if any Ethernet connection is active
|
||||
ethernet_connected=$(nmcli -t -f DEVICE,TYPE,STATE dev | grep -E 'ethernet:connected')
|
||||
|
||||
# If Ethernet
|
||||
if [ -n "$ethernet_connected" ]; then
|
||||
echo " Ethernet"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Get Wi-Fi connection status
|
||||
wifi_status=$(nmcli -t -f WIFI g)
|
||||
|
||||
# Check if Wi-Fi is enabled
|
||||
if [ "$wifi_status" != "enabled" ]; then
|
||||
echo " Wi-Fi Off"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Get active Wi-Fi connection details
|
||||
wifi_info=$(nmcli -t -f ACTIVE,SSID,SIGNAL dev wifi | grep '^yes')
|
||||
|
||||
# If no active connection, show "Disconnected"
|
||||
if [ -z "$wifi_info" ]; then
|
||||
echo " No Wi-Fi"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Extract SSID
|
||||
ssid=$(echo "$wifi_info" | cut -d':' -f2)
|
||||
|
||||
# Extract signal strength
|
||||
signal_strength=$(echo "$wifi_info" | cut -d':' -f3)
|
||||
|
||||
# Define Wi-Fi icons based on signal strength
|
||||
wifi_icons=("" "" "" "" "") # From low to high signal
|
||||
|
||||
# Clamp signal strength between 0 and 100
|
||||
signal_strength=$((signal_strength < 0 ? 0 : (signal_strength > 100 ? 100 : signal_strength)))
|
||||
|
||||
# Calculate the icon index based on signal strength
|
||||
icon_index=$((signal_strength / 25))
|
||||
|
||||
# Get the corresponding icon
|
||||
wifi_icon=${wifi_icons[$icon_index]}
|
||||
|
||||
# Output based on show_ssid variable
|
||||
if [ "$show_ssid" = true ]; then
|
||||
echo "$wifi_icon $ssid"
|
||||
else
|
||||
echo "$wifi_icon Connected"
|
||||
fi
|
||||
@@ -1,116 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Usage: $0 --title | --artist | --album | --source | --source-symbol"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Function to get metadata using playerctl
|
||||
get_metadata() {
|
||||
key=$1
|
||||
playerctl metadata --player=%any,chromium,firefox --format "{{ $key }}" 2>/dev/null
|
||||
}
|
||||
|
||||
# Check for arguments
|
||||
|
||||
# Function to determine the source and return an icon and text
|
||||
get_source_info_symbol() {
|
||||
trackid=$(get_metadata "mpris:trackid")
|
||||
if [[ "$trackid" == *"firefox"* ]]; then
|
||||
echo -e ""
|
||||
elif [[ "$trackid" == *"spotify"* ]]; then
|
||||
echo -e ""
|
||||
elif [[ "$trackid" == *"chromium"* ]]; then
|
||||
echo -e ""
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
get_source_info() {
|
||||
trackid=$(get_metadata "mpris:trackid")
|
||||
if [[ "$trackid" == *"firefox"* ]]; then
|
||||
echo -e "Firefox"
|
||||
elif [[ "$trackid" == *"spotify"* ]]; then
|
||||
echo -e "Spotify"
|
||||
elif [[ "$trackid" == *"chromium"* ]]; then
|
||||
echo -e "Chrome"
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to truncate text with ellipsis if necessary
|
||||
truncate_with_ellipsis() {
|
||||
text=$1
|
||||
max_length=$2
|
||||
if [ ${#text} -gt $max_length ]; then
|
||||
echo "${text:0:$((max_length - 3))}..."
|
||||
else
|
||||
echo "$text"
|
||||
fi
|
||||
}
|
||||
|
||||
# Parse the argument
|
||||
case "$1" in
|
||||
--title)
|
||||
title=$(get_metadata "xesam:title")
|
||||
if [ -z "$title" ]; then
|
||||
echo ""
|
||||
else
|
||||
truncate_with_ellipsis "$title" 28 # Limit the output to 50 characters
|
||||
fi
|
||||
;;
|
||||
--artist)
|
||||
artist=$(get_metadata "xesam:artist")
|
||||
if [ -z "$artist" ]; then
|
||||
echo ""
|
||||
else
|
||||
truncate_with_ellipsis "$artist" 28 # Limit the output to 50 characters
|
||||
fi
|
||||
;;
|
||||
--status-symbol)
|
||||
status=$(playerctl status 2>/dev/null)
|
||||
if [[ $status == "Playing" ]]; then
|
||||
echo ""
|
||||
elif [[ $status == "Paused" ]]; then
|
||||
echo ""
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
;;
|
||||
--status)
|
||||
status=$(playerctl status 2>/dev/null)
|
||||
if [[ $status == "Playing" ]]; then
|
||||
echo "Playing Now"
|
||||
elif [[ $status == "Paused" ]]; then
|
||||
echo "Paused"
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
;;
|
||||
--album)
|
||||
album=$(playerctl metadata --player=%any,chromium,firefox --format "{{ xesam:album }}" 2>/dev/null)
|
||||
if [[ -n $album ]]; then
|
||||
echo "$album"
|
||||
else
|
||||
status=$(playerctl status 2>/dev/null)
|
||||
if [[ -n $status ]]; then
|
||||
echo "Not album"
|
||||
else
|
||||
truncate_with_ellipsis "$album" 28 # Limit the output to 50 characters
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
--source-symbol)
|
||||
get_source_info_symbol
|
||||
;;
|
||||
--source)
|
||||
get_source_info
|
||||
;;
|
||||
*)
|
||||
echo "Invalid option: $1"
|
||||
echo "Usage: $0 --title | --artist | --album | --source | --source-symbol"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -1,39 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Get location data using IP Geolocation
|
||||
|
||||
# Recommended with API, but you can try w/o API [IPINFO.IO]
|
||||
# API_TOKEN="YOUR_API_TOKEN"
|
||||
# location_data=$(curl -s "https://ipinfo.io?token=$API_TOKEN" 2>/dev/null)
|
||||
# location_data=$(curl -s https://ipinfo.io 2>/dev/null) #[Limited requests. Require API to send 50k request/month]
|
||||
|
||||
# Extract city and country code (ISO 3166-1 alpha-2 code)
|
||||
# CITY=$(echo "$location_data" | jq -r '.city // empty')
|
||||
# COUNTRY=$(echo "$location_data" | jq -r '.country // empty')
|
||||
|
||||
# IPINFO Alternative [IP-API.COM]
|
||||
location_data=$(curl -s "http://ip-api.com/json/" 2>/dev/null)
|
||||
|
||||
# Extract city and country code
|
||||
CITY=$(echo "$location_data" | jq -r '.city // empty')
|
||||
COUNTRY=$(echo "$location_data" | jq -r '.countryCode // empty')
|
||||
# Visit http://ip-api.com/json/ to find other variables
|
||||
|
||||
# HARDCODE Location
|
||||
# CITY=$(grep -oP '^\$CITY\s*=\s*\K.+' ~/.config/hypr/hyprlock.conf)
|
||||
# COUNTRY=$(grep -oP '^\$COUNTRY\s*=\s*\K.+' ~/.config/hypr/hyprlock.conf)
|
||||
|
||||
# Check if CITY and COUNTRY are valid
|
||||
if [[ -n "$CITY" && -n "$COUNTRY" ]]; then
|
||||
# Fetch weather info for the detected city from wttr.in
|
||||
weather_info=$(curl -s "wttr.in/$CITY?format=%c+%C+%t" 2>/dev/null)
|
||||
|
||||
# Check if the weather info is valid
|
||||
if [[ -n "$weather_info" ]]; then
|
||||
echo "$COUNTRY, $CITY: $weather_info"
|
||||
else
|
||||
echo "Weather info unavailable for $COUNTRY, $CITY"
|
||||
fi
|
||||
else
|
||||
echo "Unable to determine your location"
|
||||
fi
|
||||
+4
-7
@@ -1,7 +1,4 @@
|
||||
wallpaper {
|
||||
monitor =
|
||||
path = ~/.wallpapers/arch.png
|
||||
fit_mode = cover
|
||||
}
|
||||
|
||||
splash = false
|
||||
# preload = ~/Pictures/red_moon/red_moon-latte.jpg
|
||||
preload = ~/Pictures/wallpapers/rem.jpg
|
||||
# wallpaper = ,~/Pictures/red_moon/red_moon-latte.jpg
|
||||
wallpaper = ,~/Pictures/wallpapers/rem.jpg
|
||||
@@ -0,0 +1,3 @@
|
||||
color_scheme=/usr/share/qt6ct/colors/catppuccin-mocha-maroon.conf
|
||||
icon_theme=Papirus
|
||||
style=Fusion
|
||||
@@ -1,97 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Set paths
|
||||
CONFIG_DIR="$HOME/.config/hypr"
|
||||
BACKUP_DIR="$CONFIG_DIR/hyprlock-backup-$(date +%Y%m%d%H%M%S)"
|
||||
REPO_URL="https://github.com/Tamarindtype/googlish-hyprlock-theme.git"
|
||||
TEMP_DIR="$(mktemp -d)"
|
||||
|
||||
read -p "Do you want to see every command executed? [y/N]: " choice
|
||||
choice=${choice,,}
|
||||
|
||||
if [[ "$choice" == "y" ]]; then
|
||||
SHOW_COMMANDS=true
|
||||
else
|
||||
SHOW_COMMANDS=false
|
||||
fi
|
||||
|
||||
run_cmd() {
|
||||
local desc="$1"
|
||||
local cmd="$2"
|
||||
|
||||
if [[ "$SHOW_COMMANDS" == true ]]; then
|
||||
echo -e "\n$desc"
|
||||
echo "-> $cmd"
|
||||
read -p "Run command? [Y/n]: " confirm
|
||||
confirm=${confirm,,}
|
||||
|
||||
if [[ "$confirm" == "n" ]]; then
|
||||
echo "⏭ Skipped."
|
||||
else
|
||||
eval "$cmd"
|
||||
fi
|
||||
else
|
||||
eval "$cmd"
|
||||
fi
|
||||
}
|
||||
|
||||
# Backup existing config
|
||||
if [ -d "$CONFIG_DIR/hyprlock" ] || [ -f "$CONFIG_DIR/hyprlock.conf" ]; then
|
||||
read -p "Do you want to create a backup of your config? [Y/n]: " choice
|
||||
choice=${choice,,}
|
||||
|
||||
if [[ "$choice" != "n" ]]; then
|
||||
run_cmd "Creating backup folder" "mkdir -p \"$BACKUP_DIR\""
|
||||
|
||||
if [ -d "$CONFIG_DIR/hyprlock" ]; then
|
||||
run_cmd "Backing up folder" "mv \"$CONFIG_DIR/hyprlock\" \"$BACKUP_DIR/\""
|
||||
fi
|
||||
|
||||
if [ -f "$CONFIG_DIR/hyprlock.conf" ]; then
|
||||
run_cmd "Backing up file" "mv \"$CONFIG_DIR/hyprlock.conf\" \"$BACKUP_DIR/\""
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "No existing hyprlock config found. Skipping backup."
|
||||
fi
|
||||
|
||||
# Clone the repo
|
||||
run_cmd "Cloning repository..." "git clone \"$REPO_URL\" \"$TEMP_DIR\""
|
||||
|
||||
# Move files
|
||||
run_cmd "Creating config directory" "mkdir -p \"$CONFIG_DIR\""
|
||||
|
||||
if [ -d "$TEMP_DIR/hyprlock" ]; then
|
||||
run_cmd "Moving hyprlock folder" "mv \"$TEMP_DIR/hyprlock\" \"$CONFIG_DIR/\""
|
||||
fi
|
||||
|
||||
if [ -f "$TEMP_DIR/hyprlock.conf" ]; then
|
||||
run_cmd "Moving hyprlock.conf" "mv \"$TEMP_DIR/hyprlock.conf\" \"$CONFIG_DIR/\""
|
||||
fi
|
||||
|
||||
# Make scripts executable
|
||||
if [ -d "$CONFIG_DIR/hyprlock" ]; then
|
||||
run_cmd "Making scripts executable..." "chmod +x \"$CONFIG_DIR/hyprlock\"/*.sh"
|
||||
fi
|
||||
|
||||
# Optional: Run hyprlock
|
||||
run_cmd "Running Hyprlock" "hyprlock"
|
||||
|
||||
read -p "Do you want to install the 'hyprlock-change-wallpaper' command? [Y/n]: " choice
|
||||
choice=${choice,,}
|
||||
|
||||
if [[ "$choice" != "n" ]]; then
|
||||
run_cmd "Installing hyprlock-change-wallpaper shortcut" "sudo ln -sf $CONFIG_DIR/hyprlock/change_wallpaper.sh /usr/local/bin/hyprlock-change-wallpaper"
|
||||
run_cmd "Make command runable" "chmod +x $CONFIG_DIR/hyprlock/change_wallpaper.sh"
|
||||
|
||||
if command -v hyprlock-change-wallpaper &>/dev/null; then
|
||||
echo "hyprlock-change-wallpaper was succesfully installed"
|
||||
else
|
||||
echo "Error while installing hyprlock-change-wallpaper."
|
||||
fi
|
||||
else
|
||||
echo "⏭ installation of hyprlock-change-wallpaper skipped"
|
||||
fi
|
||||
|
||||
# Cleanup
|
||||
run_cmd "Cleaning up temp files..." "rm -rf \"$TEMP_DIR\""
|
||||
@@ -1,47 +0,0 @@
|
||||
-- https://wiki.hypr.land/Configuring/Advanced-and-Cool/Animations/
|
||||
--
|
||||
-- Quick and clean. Motion should get out of the way, not perform.
|
||||
--
|
||||
-- An earlier pass overdid it: a 1.56 overshoot on every window, an 88% popin
|
||||
-- scale, and a borderangle looping forever so the focused border was in
|
||||
-- constant motion. The bounce is dialled back to a hint, the popin barely
|
||||
-- scales, and the border angle does not animate at all.
|
||||
|
||||
hl.config({
|
||||
animations = {
|
||||
enabled = true,
|
||||
},
|
||||
})
|
||||
|
||||
-- ------------------------------------------------------------------- curves
|
||||
hl.curve("snap", { type = "bezier", points = { { 0.16, 1.00 }, { 0.30, 1.00 } } })
|
||||
hl.curve("overshoot", { type = "bezier", points = { { 0.34, 1.12 }, { 0.64, 1.00 } } })
|
||||
hl.curve("hard", { type = "bezier", points = { { 0.55, 0.00 }, { 0.90, 0.35 } } })
|
||||
hl.curve("linear", { type = "bezier", points = { { 0, 0 }, { 1, 1 } } })
|
||||
|
||||
-- --------------------------------------------------------------------- tree
|
||||
-- speed is in ds (1ds = 100ms). Unset leaves inherit their parent.
|
||||
hl.animation({ leaf = "global", enabled = true, speed = 4, bezier = "snap" })
|
||||
hl.animation({ leaf = "border", enabled = true, speed = 5, bezier = "snap" })
|
||||
|
||||
hl.animation({ leaf = "windows", enabled = true, speed = 4, bezier = "snap" })
|
||||
hl.animation({ leaf = "windowsIn", enabled = true, speed = 4, bezier = "overshoot", style = "popin 96%" })
|
||||
hl.animation({ leaf = "windowsOut", enabled = true, speed = 2.6, bezier = "hard", style = "popin 97%" })
|
||||
hl.animation({ leaf = "windowsMove", enabled = true, speed = 3.6, bezier = "snap" })
|
||||
|
||||
hl.animation({ leaf = "fade", enabled = true, speed = 3, bezier = "snap" })
|
||||
hl.animation({ leaf = "fadeIn", enabled = true, speed = 2.4, bezier = "snap" })
|
||||
hl.animation({ leaf = "fadeOut", enabled = true, speed = 1.8, bezier = "hard" })
|
||||
hl.animation({ leaf = "fadeSwitch", enabled = true, speed = 2, bezier = "snap" })
|
||||
hl.animation({ leaf = "fadeShadow", enabled = true, speed = 3, bezier = "snap" })
|
||||
hl.animation({ leaf = "fadeDim", enabled = true, speed = 2.4, bezier = "snap" })
|
||||
|
||||
hl.animation({ leaf = "layers", enabled = true, speed = 3, bezier = "snap" })
|
||||
hl.animation({ leaf = "layersIn", enabled = true, speed = 3, bezier = "snap", style = "slide" })
|
||||
hl.animation({ leaf = "layersOut", enabled = true, speed = 2, bezier = "hard", style = "slide" })
|
||||
|
||||
hl.animation({ leaf = "workspaces", enabled = true, speed = 3, bezier = "snap", style = "slidevert" })
|
||||
hl.animation({ leaf = "workspacesIn", enabled = true, speed = 3, bezier = "snap", style = "slidevert" })
|
||||
hl.animation({ leaf = "workspacesOut", enabled = true, speed = 2.4, bezier = "hard", style = "slidevert" })
|
||||
|
||||
hl.animation({ leaf = "specialWorkspace", enabled = true, speed = 3, bezier = "snap", style = "slidevert" })
|
||||
@@ -1,24 +0,0 @@
|
||||
-- The programs the binds reach for. Exported so lua/binds/* name them once.
|
||||
|
||||
return {
|
||||
terminal = "alacritty",
|
||||
fileManager = "nautilus",
|
||||
-- The launcher lives in the Quickshell process (quickshell/launcher/), so
|
||||
-- the bind toggles it over IPC instead of spawning anything. Nothing to
|
||||
-- start up means it is on screen on the same frame as the keypress.
|
||||
menu = "qs ipc call shell launcher",
|
||||
|
||||
-- Clipboard history. Opens the launcher already in its ":" mode, which
|
||||
-- reads cliphist itself and copies the chosen entry back — so the picker is
|
||||
-- the same window, with the same keys, as everything else.
|
||||
clipboard = "qs ipc call shell prompt :",
|
||||
|
||||
-- Proton Drive search. --fzf re-queries the daemon on every keystroke, so
|
||||
-- results appear as you type; a dmenu could only filter a list it was
|
||||
-- handed once, which made searching a two-step. It spawns its own terminal
|
||||
-- (class pdfs-prompt, floated in lua/rules/windows.lua).
|
||||
pdfs = "pdfs-prompt --gtk",
|
||||
|
||||
-- bluetooth menu
|
||||
bluetooth = "fluxo bt menu",
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
-- https://wiki.hypr.land/Configuring/Basics/Autostart/
|
||||
--
|
||||
-- Everything that used to be exec-once now runs off the start event.
|
||||
|
||||
hl.on("hyprland.start", function()
|
||||
-- Takemi shell — bar, popouts, notifications, OSD, power menu and lock
|
||||
-- screen. Config lives in ~/.config/quickshell. It owns
|
||||
-- org.freedesktop.Notifications, so dunst must stay masked
|
||||
-- (systemctl --user mask dunst.service).
|
||||
hl.exec_cmd("uwsm app -- qs")
|
||||
|
||||
hl.exec_cmd("uwsm app -- nm-applet --indicator")
|
||||
hl.exec_cmd("uwsm app -- hyprpaper")
|
||||
|
||||
-- clipboard history, text and images
|
||||
hl.exec_cmd("wl-paste --type text --watch cliphist store")
|
||||
hl.exec_cmd("wl-paste --type image --watch cliphist store")
|
||||
|
||||
-- pdfs-prompt has no hidden/resident mode, so the first search of the
|
||||
-- session is cold. Run one throwaway query once the Proton Drive daemon
|
||||
-- is up to pull the binary into the page cache and warm the daemon's index.
|
||||
hl.exec_cmd("sh -c 'sleep 15; pdfs-prompt --feed a >/dev/null 2>&1'")
|
||||
|
||||
-- hl.exec_cmd("uwsm app -- nextcloud --background")
|
||||
-- hl.exec_cmd("uwsm app -- rclone mount google_drive: ~/gdrive")
|
||||
-- hl.exec_cmd("uwsm app -- protonvpn-app")
|
||||
-- hl.exec_cmd("uwsm app -- /usr/bin/discord --enable-features=UseOzonePlatform --ozone-platform=wayland --start-minimized")
|
||||
-- hl.exec_cmd("uwsm app -- /usr/lib/xdg-desktop-portal-hyprland")
|
||||
-- hl.exec_cmd("sleep 5 && ~/.config/hypr/scripts/replay-ctrl.sh start")
|
||||
end)
|
||||
@@ -1,14 +0,0 @@
|
||||
-- Launching things.
|
||||
-- https://wiki.hypr.land/Configuring/Basics/Binds/
|
||||
|
||||
local apps = require("lua/apps")
|
||||
local mod = "SUPER" -- Sets "Windows" key as main modifier
|
||||
|
||||
hl.bind(mod .. " + RETURN", hl.dsp.exec_cmd(apps.terminal), { description = "terminal" })
|
||||
hl.bind(mod .. " + E", hl.dsp.exec_cmd(apps.fileManager), { description = "file manager" })
|
||||
hl.bind(mod .. " + SPACE", hl.dsp.exec_cmd(apps.menu), { description = "app launcher" })
|
||||
hl.bind(mod .. " + M", hl.dsp.exec_cmd(apps.pdfs), { description = "pdf picker" })
|
||||
hl.bind(mod .. " + B", hl.dsp.exec_cmd(apps.bluetooth), { description = "bluetooth menu" })
|
||||
|
||||
-- Clipboard history. On release so the picker does not inherit the held ALT.
|
||||
hl.bind("ALT + m", hl.dsp.exec_cmd(apps.clipboard), { release = true, description = "clipboard history" })
|
||||
@@ -1,19 +0,0 @@
|
||||
-- Screenshots, replay buffer, webcam. Everything that records something.
|
||||
|
||||
local scripts = os.getenv("HOME") .. "/.config/hypr/scripts/"
|
||||
|
||||
-- ------------------------------------------------------------- screenshots
|
||||
-- PRINT selects a region, CTRL grabs the focused window, SHIFT saves to disk
|
||||
-- instead of the clipboard.
|
||||
hl.bind("PRINT", hl.dsp.exec_cmd('grim -g "$(slurp)" - | wl-copy'))
|
||||
hl.bind("SHIFT + PRINT", hl.dsp.exec_cmd('grim -g "$(slurp)" ~/Pictures/Screenshots/$(date +\'%Y-%m-%d_%H-%M-%S\').png'))
|
||||
hl.bind("CTRL + PRINT", hl.dsp.exec_cmd(scripts .. "screenshot_window.sh copy"))
|
||||
hl.bind("CTRL + SHIFT + PRINT", hl.dsp.exec_cmd(scripts .. "screenshot_window.sh save"))
|
||||
|
||||
-- ------------------------------------------------------- replay and camera
|
||||
-- On release, so the shortcut is not caught mid-chord.
|
||||
local on_release = { release = true }
|
||||
|
||||
hl.bind("ALT + z", hl.dsp.exec_cmd(scripts .. "replay-ctrl.sh toggle"), on_release)
|
||||
hl.bind("ALT + SHIFT + z", hl.dsp.exec_cmd(scripts .. "replay-ctrl.sh save"), on_release)
|
||||
hl.bind("ALT + SHIFT + c", hl.dsp.exec_cmd(scripts .. "droidcam-ctrl.sh toggle"), on_release)
|
||||
@@ -1,20 +0,0 @@
|
||||
-- Laptop multimedia keys: volume, mic, brightness, transport.
|
||||
-- `locked` keeps them working over the lock screen.
|
||||
|
||||
-- Volume and brightness repeat when held.
|
||||
local held = { locked = true, repeating = true }
|
||||
|
||||
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("fluxo vol up 5"), held)
|
||||
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("fluxo vol down 5"), held)
|
||||
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("fluxo vol mute"), held)
|
||||
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("fluxo mic mute"), held)
|
||||
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl s +10%"), held)
|
||||
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl s 10%-"), held)
|
||||
|
||||
-- Transport. Requires playerctl.
|
||||
local locked = { locked = true }
|
||||
|
||||
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), locked)
|
||||
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), locked)
|
||||
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), locked)
|
||||
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), locked)
|
||||
@@ -1,18 +0,0 @@
|
||||
-- Takemi shell (quickshell) IPC. Config lives in ~/.config/quickshell.
|
||||
|
||||
local mod = "SUPER"
|
||||
|
||||
local function shell(call, opts)
|
||||
hl.bind(opts.key, hl.dsp.exec_cmd("qs ipc call shell " .. call), { description = opts.description })
|
||||
end
|
||||
|
||||
shell("lock", { key = mod .. " + CTRL + L", description = "lock screen" })
|
||||
shell("power", { key = mod .. " + P", description = "power menu" })
|
||||
shell("ask", { key = mod .. " + A", description = "ask claude" })
|
||||
shell("toggleDnd", { key = mod .. " + SHIFT + N", description = "toggle do not disturb" })
|
||||
shell("clearNotifications", { key = mod .. " + CTRL + SHIFT + N", description = "clear notifications" })
|
||||
shell("reloadConfig", { key = mod .. " + SHIFT + R", description = "reload shell config" })
|
||||
|
||||
-- Not a shell call, but it lives with the other session toggles.
|
||||
local mirror = require("lua/mirror")
|
||||
hl.bind(mod .. " + SHIFT + P", mirror.toggle, { description = "mirror laptop to all screens" })
|
||||
@@ -1,30 +0,0 @@
|
||||
-- Focus, layout and groups — everything that acts on the window under you.
|
||||
|
||||
local mod = "SUPER"
|
||||
|
||||
-- ------------------------------------------------------------------- window
|
||||
hl.bind(mod .. " + SHIFT + Q", hl.dsp.window.close())
|
||||
hl.bind(mod .. " + V", hl.dsp.window.float())
|
||||
hl.bind(mod .. " + F", hl.dsp.window.fullscreen())
|
||||
-- hl.bind(mod .. " + t", hl.dsp.layout("togglesplit")) -- dwindle
|
||||
|
||||
-- -------------------------------------------------------------------- focus
|
||||
local directions = { h = "l", l = "r", k = "u", j = "d" }
|
||||
|
||||
for key, direction in pairs(directions) do
|
||||
hl.bind(mod .. " + " .. key, hl.dsp.focus({ direction = direction }))
|
||||
hl.bind(mod .. " + SHIFT + " .. key:upper(), hl.dsp.window.move({ direction = direction, group_aware = true }))
|
||||
end
|
||||
|
||||
-- ------------------------------------------------------------------- groups
|
||||
hl.bind(mod .. " + n", hl.dsp.group.toggle())
|
||||
hl.bind("ALT + Tab", hl.dsp.group.next())
|
||||
-- hl.bind("ALT + Tab", hl.dsp.group.prev())
|
||||
|
||||
-- -------------------------------------------------------------------- mouse
|
||||
hl.bind(mod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
|
||||
hl.bind(mod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
|
||||
|
||||
-- ----------------------------------------------------------------- keyboard
|
||||
-- cycle keyboard layout (dvorak-intl <-> us-intl), see lua/input.lua
|
||||
hl.bind(mod .. " + ALT + SPACE", hl.dsp.exec_cmd("hyprctl switchxkblayout all next"))
|
||||
@@ -1,22 +0,0 @@
|
||||
-- Workspaces, including the two scratchpads.
|
||||
|
||||
local mod = "SUPER"
|
||||
|
||||
-- Switch with mod + [0-9], move the active window with mod + SHIFT + [0-9].
|
||||
for i = 1, 10 do
|
||||
local key = i % 10 -- 10 maps to key 0
|
||||
hl.bind(mod .. " + " .. key, hl.dsp.focus({ workspace = i }))
|
||||
hl.bind(mod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i }))
|
||||
end
|
||||
|
||||
-- Scroll through existing workspaces with mod + scroll
|
||||
hl.bind(mod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
|
||||
hl.bind(mod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" }))
|
||||
|
||||
-- Scratchpads: S holds anything virtual, D holds chat.
|
||||
local special = { S = "virtual", D = "discord" }
|
||||
|
||||
for key, name in pairs(special) do
|
||||
hl.bind(mod .. " + " .. key, hl.dsp.workspace.toggle_special(name))
|
||||
hl.bind(mod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = "special:" .. name }))
|
||||
end
|
||||
@@ -1,38 +0,0 @@
|
||||
-- https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/
|
||||
--
|
||||
-- Note: this session starts through uwsm, which would rather have these in
|
||||
-- ~/.config/uwsm/env (toolkit, cursor, GPU) and ~/.config/uwsm/env-hyprland
|
||||
-- (HYPR*, AQ_*). They are kept here for now so the config stays self-contained.
|
||||
|
||||
-- cursor
|
||||
hl.env("HYPRCURSOR_THEME", "Bibata-Modern-Classic")
|
||||
hl.env("HYPRCURSOR_SIZE", "24")
|
||||
hl.env("XCURSOR_THEME", "Bibata-Modern-Classic")
|
||||
hl.env("XCURSOR_SIZE", "24")
|
||||
|
||||
-- session
|
||||
hl.env("XDG_CURRENT_DESKTOP", "Hyprland")
|
||||
|
||||
-- toolkits
|
||||
hl.env("QT_QPA_PLATFORMTHEME", "qt6ct")
|
||||
hl.env("MOZ_ENABLE_WAYLAND", "1")
|
||||
hl.env("ELECTRON_OZONE_PLATFORM_HINT", "wayland")
|
||||
|
||||
-- AMD graphics / video acceleration
|
||||
hl.env("LIBVA_DRIVER_NAME", "radeonsi")
|
||||
hl.env("VDPAU_DRIVER", "radeonsi")
|
||||
hl.env("AMD_VULKAN_ICD", "RADV")
|
||||
|
||||
-- misc
|
||||
hl.env("EDITOR", "nvim")
|
||||
|
||||
-- hl.env("INTEL_DEBUG", "noccs")
|
||||
-- hl.env("WLR_DRM_NO_ATOMIC", "1")
|
||||
-- hl.env("debug:full_cm_proto", "true")
|
||||
|
||||
|
||||
-- headroom
|
||||
|
||||
hl.env("HEADROOM_ROLLOUT_CHANNEL", "beta")
|
||||
|
||||
hl.env("HEADROOM_OUTPUT_SHAPER", "1")
|
||||
@@ -1,32 +0,0 @@
|
||||
-- https://wiki.hypr.land/Configuring/Basics/Variables/#input
|
||||
|
||||
hl.config({
|
||||
input = {
|
||||
-- index 0 = dvorak-intl (default), index 1 = us-intl
|
||||
-- switch with $mainMod ALT, SPACE (see lua/binds/windows.lua)
|
||||
kb_layout = "us,us",
|
||||
kb_variant = "dvorak-intl,intl",
|
||||
kb_model = "",
|
||||
kb_rules = "",
|
||||
kb_options = "caps:backspace",
|
||||
|
||||
follow_mouse = 0,
|
||||
|
||||
accel_profile = "flat",
|
||||
sensitivity = 0, -- -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = false,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- Layouts are inherited from the global input block so that layout switching
|
||||
-- applies to these too. Only bind resolution differs here.
|
||||
-- https://wiki.hypr.land/Configuring/Advanced-and-Cool/Devices/
|
||||
for _, name in ipairs({
|
||||
"at-translated-set-2-keyboard",
|
||||
"topre-corporation-hhkb-professional",
|
||||
}) do
|
||||
hl.device({ name = name, resolve_binds_by_sym = true })
|
||||
end
|
||||
@@ -1,129 +0,0 @@
|
||||
-- Laptop lid handling.
|
||||
--
|
||||
-- One rule, applied from several triggers:
|
||||
--
|
||||
-- panel off <=> lid is shut AND something else is plugged in
|
||||
--
|
||||
-- Both halves are re-checked every time, so the session can never end up with
|
||||
-- zero outputs. Undocking with the lid shut brings the panel back; booting
|
||||
-- alone after a docked shutdown just works, because nothing about the previous
|
||||
-- session is remembered.
|
||||
--
|
||||
-- That last part is the fix for the old design: scripts/lid_handler.sh wrote a
|
||||
-- lid_state.conf that got sourced on the next start, so a laptop that was shut
|
||||
-- while docked came up believing it still had an external display and blanked
|
||||
-- its own panel. Lid state now comes from the kernel instead, and the external
|
||||
-- check is a live one.
|
||||
|
||||
local monitors = require("lua/monitors")
|
||||
|
||||
-- ------------------------------------------------------------- reading state
|
||||
|
||||
-- The kernel's own view of the hinge. Present on this machine as
|
||||
-- /proc/acpi/button/lid/LID/state; the device name differs per vendor, hence
|
||||
-- the glob. Returns nil if the file is missing or unparseable.
|
||||
local function acpi_lid_closed()
|
||||
local pipe = io.popen("cat /proc/acpi/button/lid/*/state 2>/dev/null")
|
||||
if not pipe then
|
||||
return nil
|
||||
end
|
||||
|
||||
local out = pipe:read("a") or ""
|
||||
pipe:close()
|
||||
|
||||
if out:find("closed", 1, true) then
|
||||
return true
|
||||
elseif out:find("open", 1, true) then
|
||||
return false
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
-- Whatever the last switch event said, used only when ACPI has nothing for us.
|
||||
local last_switch_closed = nil
|
||||
|
||||
local function lid_closed()
|
||||
local acpi = acpi_lid_closed()
|
||||
if acpi ~= nil then
|
||||
return acpi
|
||||
end
|
||||
return last_switch_closed == true
|
||||
end
|
||||
|
||||
-- ---------------------------------------------------------------- reconciling
|
||||
|
||||
-- nil until the first decision, so the first pass always applies.
|
||||
local panel_off = nil
|
||||
|
||||
-- `ignore` is the output being unplugged: during monitor.removed it can still
|
||||
-- be listed, and counting it would keep the panel switched off.
|
||||
local function reconcile(ignore)
|
||||
-- Nothing enumerated yet means we are still parsing the config on a cold
|
||||
-- start. Leave the defaults from lua/monitors.lua alone and wait for the
|
||||
-- start event.
|
||||
local all = hl.get_monitors()
|
||||
if #all == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local externals = 0
|
||||
for _, mon in ipairs(monitors.externals_present()) do
|
||||
if mon.name ~= ignore then
|
||||
externals = externals + 1
|
||||
end
|
||||
end
|
||||
|
||||
local want_off = lid_closed() and externals > 0
|
||||
|
||||
if want_off == panel_off then
|
||||
return
|
||||
end
|
||||
|
||||
-- First decision of the session, and it agrees with what lua/monitors.lua
|
||||
-- already applied: nothing actually moved, so no daemon needs poking.
|
||||
local settled = panel_off == nil and not want_off
|
||||
panel_off = want_off
|
||||
|
||||
if want_off then
|
||||
monitors.disable_builtin()
|
||||
else
|
||||
monitors.enable_builtin()
|
||||
end
|
||||
monitors.apply_external()
|
||||
|
||||
-- Quickshell follows monitor hotplug by itself; only the wallpaper daemon
|
||||
-- needs a kick.
|
||||
if not settled then
|
||||
hl.exec_cmd("systemctl restart --user hyprpaper")
|
||||
end
|
||||
end
|
||||
|
||||
-- ------------------------------------------------------------------ triggers
|
||||
|
||||
hl.bind("switch:on:Lid Switch", function()
|
||||
last_switch_closed = true
|
||||
reconcile()
|
||||
end, { locked = true })
|
||||
|
||||
hl.bind("switch:off:Lid Switch", function()
|
||||
last_switch_closed = false
|
||||
reconcile()
|
||||
end, { locked = true })
|
||||
|
||||
-- Docking and undocking. Removal passes the output that is going away.
|
||||
hl.on("monitor.added", function()
|
||||
reconcile()
|
||||
end)
|
||||
|
||||
hl.on("monitor.removed", function(mon)
|
||||
reconcile(mon and mon.name)
|
||||
end)
|
||||
|
||||
-- Cold start: outputs are not up yet at this point, so this settles once they
|
||||
-- are. On `hyprctl reload` the start event does not fire again, but the
|
||||
-- monitor list is already populated, so run it inline too.
|
||||
hl.on("hyprland.start", function()
|
||||
reconcile()
|
||||
end)
|
||||
|
||||
reconcile()
|
||||
@@ -1,109 +0,0 @@
|
||||
-- Persona × Mocha — Persona 5 shapes on the Catppuccin Mocha palette, matched
|
||||
-- to ~/.config/quickshell.
|
||||
--
|
||||
-- Everything static about how the desktop is painted. Motion lives next door
|
||||
-- in lua/animations.lua.
|
||||
|
||||
local c = require("lua/palette")
|
||||
|
||||
hl.config({
|
||||
-- https://wiki.hypr.land/Configuring/Basics/Variables/
|
||||
general = {
|
||||
gaps_in = 5,
|
||||
gaps_out = { top = 6, right = 8, bottom = 8, left = 8 },
|
||||
|
||||
border_size = 2,
|
||||
|
||||
col = {
|
||||
active_border = c.activeBorder,
|
||||
-- Surface-level, not outline: an idle window's frame is structure,
|
||||
-- and the outline grey was bright enough to compete with the
|
||||
-- focused border.
|
||||
inactive_border = c.surfaceAlt,
|
||||
},
|
||||
|
||||
resize_on_border = false,
|
||||
|
||||
-- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/
|
||||
-- before you turn this on
|
||||
allow_tearing = false,
|
||||
|
||||
layout = "dwindle",
|
||||
},
|
||||
|
||||
decoration = {
|
||||
-- Persona 5 has no rounded corners. Neither do we.
|
||||
rounding = 0,
|
||||
|
||||
-- Fully opaque, both states. Flat ink on flat ground.
|
||||
active_opacity = 1.0,
|
||||
inactive_opacity = 1.0,
|
||||
|
||||
-- A hard crust offset, the same printed drop the shell's panels
|
||||
-- carry, rather than a soft blur. Sharp with a 1px range leaves a
|
||||
-- clean band down the right and bottom edges only.
|
||||
shadow = {
|
||||
enabled = true,
|
||||
sharp = true,
|
||||
range = 1,
|
||||
offset = { 4, 4 },
|
||||
color = c.ink,
|
||||
color_inactive = c.ink,
|
||||
},
|
||||
|
||||
-- Off. Blur is the signature of the glass-and-frost look, which is the
|
||||
-- opposite of what this theme is doing — every surface here is opaque,
|
||||
-- flat and hard-edged. With nothing translucent left to blur it also
|
||||
-- costs three render passes for no visible result.
|
||||
blur = {
|
||||
enabled = false,
|
||||
},
|
||||
},
|
||||
|
||||
misc = {
|
||||
force_default_wallpaper = 0,
|
||||
disable_hyprland_logo = true,
|
||||
-- 0 = off, 1 = always, 2 = fullscreen only (G7 is a 240Hz VRR panel)
|
||||
vrr = 0,
|
||||
font_family = "FiraCode Nerd Font",
|
||||
background_color = c.base,
|
||||
focus_on_activate = true,
|
||||
},
|
||||
|
||||
group = {
|
||||
col = {
|
||||
border_active = c.activeBorder,
|
||||
border_inactive = c.surfaceAlt,
|
||||
},
|
||||
|
||||
groupbar = {
|
||||
font_family = "JetBrainsMono Nerd Font",
|
||||
font_size = 11,
|
||||
|
||||
height = 24,
|
||||
gradients = false,
|
||||
|
||||
-- --- Active tab ---
|
||||
col = {
|
||||
active = c.accent,
|
||||
inactive = c.surface,
|
||||
},
|
||||
text_color = c.ink,
|
||||
|
||||
-- --- Inactive tab ---
|
||||
text_color_inactive = c.muted,
|
||||
|
||||
indicator_height = 3,
|
||||
},
|
||||
},
|
||||
|
||||
-- https://wiki.hypr.land/Configuring/Layouts/Dwindle-Layout/
|
||||
dwindle = {
|
||||
preserve_split = true,
|
||||
},
|
||||
|
||||
-- https://wiki.hypr.land/Configuring/Layouts/Master-Layout/
|
||||
master = {
|
||||
new_status = "master",
|
||||
},
|
||||
})
|
||||
@@ -1,107 +0,0 @@
|
||||
-- Presentation mode: every external output shows the laptop panel.
|
||||
--
|
||||
-- Toggled from lua/binds/shell.lua. Mirroring is just a `mirror` field on the
|
||||
-- monitor rule, so switching it off clears that field and re-applies the specs
|
||||
-- from lua/monitors.lua to put the Samsung back where it belongs.
|
||||
--
|
||||
-- Anything plugged in while mirroring is on gets mirrored too, which is the
|
||||
-- usual order at a talk: press the key, then find the HDMI cable.
|
||||
|
||||
local monitors = require("lua/monitors")
|
||||
|
||||
local M = {}
|
||||
|
||||
local function notify(text)
|
||||
hl.notification.create({ text = text, timeout = 3000 })
|
||||
end
|
||||
|
||||
-- The panel is off while docked with the lid shut, see lua/lid.lua. Mirroring
|
||||
-- a disabled output would leave every screen black.
|
||||
local function builtin()
|
||||
for _, mon in ipairs(hl.get_monitors()) do
|
||||
if mon.name == monitors.laptop then
|
||||
return mon
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
-- A mirroring output drops out of hl.get_monitors(), so the only place left
|
||||
-- to find it is the panel's own `mirrors` list. That list is also the state:
|
||||
-- a Lua flag would reset on every config reload while the outputs stay
|
||||
-- mirrored.
|
||||
local function mirroring(panel)
|
||||
local names = {}
|
||||
for _, mon in ipairs(panel and panel.mirrors or {}) do
|
||||
table.insert(names, mon.name)
|
||||
end
|
||||
return names
|
||||
end
|
||||
|
||||
-- Outputs keep their own mode while mirroring, and the panel image gets
|
||||
-- rescaled to fit it every frame. The Dells at 1920x1200 flicker with that,
|
||||
-- so match the panel's resolution; Hyprland falls back to the preferred mode
|
||||
-- if the output cannot do it.
|
||||
local function mirror_all(panel)
|
||||
local mode = panel.width .. "x" .. panel.height
|
||||
for _, mon in ipairs(monitors.externals_present()) do
|
||||
hl.monitor({ output = mon.name, mirror = monitors.laptop, mode = mode, position = "auto" })
|
||||
end
|
||||
end
|
||||
|
||||
-- The bar and popouts stay on the outputs they were created for, so
|
||||
-- respawn the shell the same way lua/autostart.lua starts it.
|
||||
local function restart_clients()
|
||||
hl.exec_cmd("systemctl restart --user hyprpaper")
|
||||
hl.exec_cmd("sh -c 'qs kill; exec uwsm app -- qs'")
|
||||
end
|
||||
|
||||
-- hl.monitor() only takes effect after the calling handler returns, so
|
||||
-- anything that has to see the new layout goes on a timer.
|
||||
local function later(fn)
|
||||
hl.timer(fn, { timeout = 500, type = "oneshot" })
|
||||
end
|
||||
|
||||
-- Clearing `mirror` alone brings the image back, but Hyprland never
|
||||
-- re-announces the output to clients: hyprpaper and Quickshell keep seeing
|
||||
-- only the panel, however often they restart. Cycling the output through
|
||||
-- disabled makes it a fresh wl_output. Undeclared outputs get their auto
|
||||
-- defaults back, apply_external() then overrides what lua/monitors.lua knows
|
||||
-- better.
|
||||
local function unmirror_all(names)
|
||||
for _, name in ipairs(names) do
|
||||
hl.monitor({ output = name, mirror = "", disabled = true })
|
||||
end
|
||||
later(function()
|
||||
for _, name in ipairs(names) do
|
||||
hl.monitor({ output = name, disabled = false, mode = "preferred", position = "auto" })
|
||||
end
|
||||
monitors.apply_external()
|
||||
later(restart_clients)
|
||||
end)
|
||||
end
|
||||
|
||||
function M.toggle()
|
||||
local panel = builtin()
|
||||
local mirrored = mirroring(panel)
|
||||
|
||||
if #mirrored > 0 then
|
||||
unmirror_all(mirrored)
|
||||
notify("Mirroring off")
|
||||
elseif panel then
|
||||
mirror_all(panel)
|
||||
later(restart_clients)
|
||||
notify("Mirroring " .. monitors.laptop .. " to all screens")
|
||||
else
|
||||
notify("Laptop panel is off, open the lid first")
|
||||
end
|
||||
end
|
||||
|
||||
hl.on("monitor.added", function()
|
||||
local panel = builtin()
|
||||
if #mirroring(panel) > 0 then
|
||||
mirror_all(panel)
|
||||
end
|
||||
end)
|
||||
|
||||
return M
|
||||
@@ -1,62 +0,0 @@
|
||||
-- https://wiki.hypr.land/Configuring/Basics/Monitors/
|
||||
--
|
||||
-- Declares every display once and exports the table, so lua/lid.lua can turn
|
||||
-- the laptop panel on and off without duplicating any of these numbers.
|
||||
--
|
||||
-- Load-time behaviour is deliberately dumb: the built-in panel is always
|
||||
-- enabled here. Deciding to switch it off needs to know whether anything else
|
||||
-- is actually plugged in, and during a cold start the outputs are not
|
||||
-- enumerated yet — so that decision lives in lua/lid.lua, which re-runs it on
|
||||
-- every lid and hotplug event. Worst case the panel flickers on for a moment
|
||||
-- while docked; the alternative failure is a black screen.
|
||||
|
||||
local M = {}
|
||||
|
||||
M.laptop = "eDP-1"
|
||||
|
||||
M.external = {
|
||||
-- samsung home monitor. Other modes it has run at, if you ever need them:
|
||||
-- "2560x1440@144", "1920x1080@144", "1280x720@240"
|
||||
{ output = "desc:Samsung Electric Company LC27G7xT H4ZRA00734", mode = "2560x1440@240", position = "-2560x0", scale = 1 },
|
||||
}
|
||||
|
||||
-- `disabled = false` is load-bearing, not decoration. hl.monitor() merges into
|
||||
-- whatever rule the output already has, so a spec that simply omits the flag
|
||||
-- leaves an earlier `disabled = true` in place: the panel stays dark and the
|
||||
-- mode/position are applied to a monitor nobody can see. Opening the lid while
|
||||
-- docked hit exactly that.
|
||||
M.builtin = { output = M.laptop, mode = "1920x1080@60", position = "0x0", scale = 1, disabled = false }
|
||||
|
||||
-- Anything not declared above falls back to Hyprland's auto placement, so a
|
||||
-- borrowed projector or a monitor at the office still lights up.
|
||||
|
||||
function M.apply_external()
|
||||
for _, mon in ipairs(M.external) do
|
||||
hl.monitor(mon)
|
||||
end
|
||||
end
|
||||
|
||||
function M.enable_builtin()
|
||||
hl.monitor(M.builtin)
|
||||
end
|
||||
|
||||
function M.disable_builtin()
|
||||
hl.monitor({ output = M.laptop, disabled = true })
|
||||
end
|
||||
|
||||
-- Every connected output except the laptop panel. Empty during early startup,
|
||||
-- which callers have to treat as "do not know yet", never as "nothing here".
|
||||
function M.externals_present()
|
||||
local found = {}
|
||||
for _, mon in ipairs(hl.get_monitors()) do
|
||||
if mon.name ~= M.laptop then
|
||||
table.insert(found, mon)
|
||||
end
|
||||
end
|
||||
return found
|
||||
end
|
||||
|
||||
M.enable_builtin()
|
||||
M.apply_external()
|
||||
|
||||
return M
|
||||
@@ -1,52 +0,0 @@
|
||||
-- Mocha palette — kept in step with ~/.config/quickshell/config/Theme.qml.
|
||||
--
|
||||
-- Catppuccin Mocha ground, blue accent, mauve alarm. Nothing else carries hue.
|
||||
--
|
||||
-- Returned as a table, so every module that paints something does
|
||||
-- local c = require("lua/palette")
|
||||
-- and there is exactly one place the colours are written.
|
||||
|
||||
local c = {}
|
||||
|
||||
-- ---------------------------------------------------------------- THE KNOBS
|
||||
-- Two colours in this setup: blue for anything live (window borders, group
|
||||
-- indicators, focus), mauve for anything wrong. Change these lines and every
|
||||
-- painted edge recolours with them.
|
||||
--
|
||||
-- Keep them in step with `accent` / `alarm` in
|
||||
-- ~/.config/quickshell/config/Theme.qml, which is what colours the shell.
|
||||
-- Those are the only places the colours are written.
|
||||
c.accent = "rgb(89b4fa)"
|
||||
c.alarm = "rgb(cba6f7)"
|
||||
|
||||
c.accentDim = "rgb(5a7dc0)"
|
||||
c.accentSoft = "rgb(b4befe)"
|
||||
|
||||
-- ------------------------------------------------------------------ neutrals
|
||||
c.ink = "rgb(11111b)"
|
||||
|
||||
c.base = "rgb(1e1e2e)"
|
||||
c.mantle = "rgb(181825)"
|
||||
c.surface = "rgb(313244)"
|
||||
c.surfaceAlt = "rgb(45475a)"
|
||||
c.overlay = "rgb(585b70)"
|
||||
c.outline = "rgb(6c7086)"
|
||||
|
||||
c.text = "rgb(cdd6f4)"
|
||||
c.subtext = "rgb(a6adc8)"
|
||||
c.muted = "rgb(7f849c)"
|
||||
|
||||
-- Semantic aliases, so existing references resolve without inventing hues.
|
||||
c.primary = c.text
|
||||
c.primaryDim = "rgb(9399b2)"
|
||||
c.glow = c.accent
|
||||
c.blue = c.accent
|
||||
c.deep = c.surfaceAlt
|
||||
c.warn = c.alarm
|
||||
c.ok = c.text
|
||||
|
||||
-- Blue into lavender, on the diagonal. Both ends are the accent's own family,
|
||||
-- so the border never reads as two colours arguing.
|
||||
c.activeBorder = { colors = { c.accent, c.accentSoft }, angle = 135 }
|
||||
|
||||
return c
|
||||
@@ -1,13 +0,0 @@
|
||||
-- https://wiki.hypr.land/Configuring/Basics/Window-Rules/#layer-rules
|
||||
--
|
||||
-- Quickshell surfaces: the bar, popouts, the OSD and the launcher. Note
|
||||
-- decoration.blur is off in lua/look.lua, so these only take effect if blur is
|
||||
-- switched back on.
|
||||
|
||||
for _, namespace in ipairs({ "bottom", "top", "takemi-launcher" }) do
|
||||
hl.layer_rule({
|
||||
match = { namespace = namespace },
|
||||
blur = true,
|
||||
ignore_alpha = 0.5,
|
||||
})
|
||||
end
|
||||
@@ -1,78 +0,0 @@
|
||||
-- https://wiki.hypr.land/Configuring/Basics/Window-Rules/
|
||||
--
|
||||
-- Rules are evaluated top to bottom and the last match wins, so order matters.
|
||||
-- Named rules are all evaluated before anonymous ones.
|
||||
|
||||
-- ==========================================
|
||||
-- MATCHERS
|
||||
-- ==========================================
|
||||
-- Dialogs and utility apps that should float in the center
|
||||
local DIALOG_TITLES = "^(Open Form|Open File|Select a File|Choose a file|Open Workspace|Choose Directory.*|Save As.*|Save File.*|branchdialog|pinentry-gtk-2|Confirm to replace files|File Operation Progress|Open Files.*|Anmelden.*|File Upload.*|TRuDI-Export laden)$"
|
||||
-- pdfs-prompt is the Proton Drive search: io.narl.* is its GTK window, plain
|
||||
-- pdfs-prompt the terminal `pdfs-prompt --fzf` spawns for itself. Every
|
||||
-- terminal it knows how to start sets that same class, so this one rule holds
|
||||
-- whichever is installed.
|
||||
local DIALOG_CLASSES = "^(pavucontrol|blueman-manager|nm-connection-editor|org.pulseaudio.pavucontrol|io.narl.proton-drive-linux-prompt|pdfs-prompt)$"
|
||||
|
||||
local STEAM = "^(steam)$"
|
||||
local GAMESCOPE = "^(gamescope)$"
|
||||
|
||||
-- ==========================================
|
||||
-- GENERAL & FIXES
|
||||
-- ==========================================
|
||||
-- Ignore maximize requests from apps. You'll probably like this.
|
||||
-- hl.window_rule({ match = { class = ".*" }, suppress_event = "maximize" })
|
||||
|
||||
-- Fix some dragging issues with XWayland
|
||||
-- hl.window_rule({
|
||||
-- match = { class = "^$", title = "^$", xwayland = true, float = true, fullscreen = false, pin = false },
|
||||
-- no_focus = true,
|
||||
-- })
|
||||
hl.window_rule({ match = { class = "^$", title = "^$" }, no_blur = true })
|
||||
|
||||
-- ==========================================
|
||||
-- FLOATING & CENTERED DIALOGS
|
||||
-- ==========================================
|
||||
-- Float, size, center, no blur — one rule per matcher instead of four.
|
||||
for _, match in ipairs({ { title = DIALOG_TITLES }, { class = DIALOG_CLASSES } }) do
|
||||
hl.window_rule({
|
||||
match = match,
|
||||
float = true,
|
||||
size = { 800, 600 },
|
||||
center = true,
|
||||
no_blur = true,
|
||||
})
|
||||
end
|
||||
|
||||
-- ==========================================
|
||||
-- WORKSPACE ASSIGNMENTS
|
||||
-- ==========================================
|
||||
-- hl.window_rule({ match = { class = "^(firefox)$" }, workspace = "1" })
|
||||
-- hl.window_rule({ match = { class = "^(kitty)$" }, workspace = "2" })
|
||||
-- hl.window_rule({ match = { class = "^(Code)$" }, workspace = "3" })
|
||||
hl.window_rule({ match = { class = GAMESCOPE }, workspace = "1" })
|
||||
|
||||
-- Special workspaces
|
||||
hl.window_rule({ match = { class = "^(Spotify|spotify)$" }, workspace = "special:virtual" })
|
||||
hl.window_rule({ match = { class = "^(discord|vesktop)$" }, workspace = "special:discord" })
|
||||
|
||||
-- ==========================================
|
||||
-- STEAM & GAMING
|
||||
-- ==========================================
|
||||
-- hl.window_rule({ match = { class = STEAM, title = "^(Steam)$" }, workspace = "3 silent" })
|
||||
|
||||
-- Fixed sizes for specific Steam windows
|
||||
hl.window_rule({ match = { class = STEAM, title = "^(Friends List)$" }, size = { 400, 800 } })
|
||||
hl.window_rule({ match = { class = STEAM, title = "^(Steam Settings)$" }, size = { 1000, 800 } })
|
||||
hl.window_rule({ match = { class = STEAM, title = "^(Add Non-Steam Game)$" }, size = { 1000, 800 } })
|
||||
|
||||
-- Float and disable blur for Steam windows that aren't the main window
|
||||
hl.window_rule({
|
||||
match = { class = STEAM, title = "negative:^(Steam)$" },
|
||||
float = true,
|
||||
no_blur = true,
|
||||
-- center = true,
|
||||
})
|
||||
|
||||
-- Allow tearing for games started with Gamescope
|
||||
hl.window_rule({ match = { class = GAMESCOPE }, immediate = true })
|
||||
@@ -0,0 +1,15 @@
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
|
||||
# exec-once = uwsm app -- waybar
|
||||
# exec-once = uwsm app -- nextcloud --background
|
||||
exec-once = uwsm app -- nm-applet --indicator
|
||||
# exec-once = uwsm app -- rclone mount google_drive: ~/gdrive
|
||||
exec-once = uwsm app -- protonvpn-app
|
||||
exec-once = uwsm app -- hyprpaper
|
||||
# exec-once = uwsm app -- /usr/bin/discord --enable-features=UseOzonePlatform --ozone-platform=wayland --start-minimized &> /dev/null
|
||||
exec-once = sleep 5 && ~/.config/hypr/scripts/replay-ctrl.sh start
|
||||
# exec-once = uwsm app -- /usr/lib/xdg-desktop-portal-hyprland
|
||||
exec-once = wl-paste --type text --watch cliphist store # Stores only text data
|
||||
exec-once = wl-paste --type image --watch cliphist store # Stores only image data
|
||||
@@ -0,0 +1,17 @@
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Environment-variables/
|
||||
|
||||
env = HYPRCURSOR_THEME,Bibata-Modern-Classic
|
||||
env = HYPRCURSOR_SIZE,24
|
||||
env = XCURSOR_SIZE,24
|
||||
env = XCURSOR_THEME,Bibata-Modern-Classic
|
||||
env = XDG_CURRENT_DESKTOP,Hyprland
|
||||
env = debug:full_cm_proto,true
|
||||
env = QT_QPA_PLATFORMTHEME,qt6ct
|
||||
env = LIBVA_DRIVER_NAME,radeonsi
|
||||
env = VDPAU_DRIVER,radeonsi
|
||||
env = MOZ_ENABLE_WAYLAND,1
|
||||
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
|
||||
env = AMD_VULKAN_ICD,RADV
|
||||
env = WLR_NO_HARDWARE_CURSORS,0
|
||||
env = QT_QPA_PLATFORMTHEME,hyprqt6engine
|
||||
@@ -0,0 +1,19 @@
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = us
|
||||
# kb_variant = dvorak-intl, intl
|
||||
kb_variant = intl
|
||||
kb_model =
|
||||
kb_options =
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 0
|
||||
|
||||
accel_profile = flat
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad {
|
||||
natural_scroll = false
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
|
||||
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||
|
||||
bindr = ALT, m, exec, cliphist list | fuzzel --dmenu | cliphist decode | wl-copy
|
||||
bind = , PRINT, exec, grim -g "$(slurp)" - | wl-copy
|
||||
bindr = ALT SHIFT, z, exec, ~/.config/hypr/scripts/replay-ctrl.sh save
|
||||
bindr = ALT, z, exec, ~/.config/hypr/scripts/replay-ctrl.sh toggle
|
||||
bindr = ALT SHIFT, c, exec, ~/.config/hypr/scripts/droidcam-ctrl.sh toggle
|
||||
|
||||
# general binds
|
||||
bind = $mainMod, RETURN, exec, $terminal
|
||||
bind = $mainMod SHIFT, Q, killactive,
|
||||
bind = $mainMod CTRL, L, exec, hyprlock
|
||||
bind = $mainMod, E, exec, $fileManager
|
||||
bind = $mainMod, V, togglefloating,
|
||||
bind = $mainMod, F, fullscreen,
|
||||
bind = $mainMod, SPACE, exec, $menu
|
||||
bind = $mainMod, P, exec, ~/.config/hypr/scripts/powermenu.sh
|
||||
bind = $mainMod, t, togglesplit, # dwindle
|
||||
bind = $mainMod, n, togglegroup
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = $mainMod, h, movefocus, l
|
||||
bind = $mainMod, l, movefocus, r
|
||||
bind = $mainMod, k, movefocus, u
|
||||
bind = $mainMod, j, movefocus, d
|
||||
|
||||
bind = $mainMod SHIFT, H, movewindoworgroup, l
|
||||
bind = $mainMod SHIFT, L, movewindoworgroup, r
|
||||
bind = $mainMod SHIFT, K, movewindoworgroup, u
|
||||
bind = $mainMod SHIFT, J, movewindoworgroup, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, workspace, 1
|
||||
bind = $mainMod, 2, workspace, 2
|
||||
bind = $mainMod, 3, workspace, 3
|
||||
bind = $mainMod, 4, workspace, 4
|
||||
bind = $mainMod, 5, workspace, 5
|
||||
bind = $mainMod, 6, workspace, 6
|
||||
bind = $mainMod, 7, workspace, 7
|
||||
bind = $mainMod, 8, workspace, 8
|
||||
bind = $mainMod, 9, workspace, 9
|
||||
bind = $mainMod, 0, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||
|
||||
# groups
|
||||
# bind = ALT, Tab, changegroupactive, prev
|
||||
bind = ALT, Tab, changegroupactive, next
|
||||
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
bind = $mainMod, S, togglespecialworkspace, magic
|
||||
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||
bind = $mainMod, D, togglespecialworkspace, discord
|
||||
bind = $mainMod SHIFT, D, movetoworkspace, special:discord
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
|
||||
@@ -0,0 +1,10 @@
|
||||
|
||||
monitor = desc:Samsung Electric Company LC27G7xT H4ZRA00734, 2560x1440@240, 0x0, 1
|
||||
# monitorv2 {
|
||||
# desc = Samsung Electric Company LC27G7xT H4ZRA00734
|
||||
# mode = 2560x1440@240
|
||||
# position = 0x0
|
||||
# scale = 1
|
||||
# bitdepth = 10
|
||||
# cm = wide
|
||||
# }
|
||||
@@ -0,0 +1,38 @@
|
||||
exec-once = hyprpm reload -n
|
||||
|
||||
# plugin:hyprfocus {
|
||||
# enabled = yes
|
||||
# animate_floating = yes
|
||||
# animate_workspacechange = yes
|
||||
# focus_animation = shrink
|
||||
# # Beziers for focus animations
|
||||
# bezier = bezIn, 0.5,0.0,1.0,0.5
|
||||
# bezier = bezOut, 0.0,0.5,0.5,1.0
|
||||
# bezier = overshot, 0.05, 0.9, 0.1, 1.05
|
||||
# bezier = smoothOut, 0.36, 0, 0.66, -0.56
|
||||
# bezier = smoothIn, 0.25, 1, 0.5, 1
|
||||
# bezier = realsmooth, 0.28,0.29,.69,1.08
|
||||
# # Flash settings
|
||||
# flash {
|
||||
# flash_opacity = 0.95
|
||||
# in_bezier = realsmooth
|
||||
# in_speed = 0.5
|
||||
# out_bezier = realsmooth
|
||||
# out_speed = 3
|
||||
# }
|
||||
# # Shrink settings
|
||||
# shrink {
|
||||
# shrink_percentage = 0.95
|
||||
# in_bezier = realsmooth
|
||||
# in_speed = 1
|
||||
# out_bezier = realsmooth
|
||||
# out_speed = 2
|
||||
# }
|
||||
# }
|
||||
#
|
||||
# plugin:csgo-vulkan-fix {
|
||||
# res_w = 1280
|
||||
# res_h = 960
|
||||
# class = gamescope
|
||||
# fix_mouse = true
|
||||
# }
|
||||
@@ -0,0 +1,7 @@
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = alacritty
|
||||
$fileManager = nautilus
|
||||
$menu = fuzzel
|
||||
@@ -0,0 +1,113 @@
|
||||
# catppuccin mocha theme
|
||||
source = ~/.config/hypr/catppuccin-hyprland/themes/mocha.conf
|
||||
|
||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
|
||||
general {
|
||||
gaps_in = 5
|
||||
gaps_out = 5, 5, 5, 5
|
||||
|
||||
border_size = 3
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||
# col.active_border = rgba(cba6f7ee) rgba(f38ba8ee) 45deg
|
||||
col.active_border = rgb($mauveAlpha) rgb($blueAlpha) 30deg
|
||||
col.inactive_border = rgb($surface2Alpha)
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = true
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 4
|
||||
rounding_power = 1
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 1.0
|
||||
|
||||
shadow {
|
||||
enabled = true
|
||||
range = 4
|
||||
render_power = 3
|
||||
color = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||
blur {
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
|
||||
vibrancy = 0.1696
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||
animations {
|
||||
enabled = yes, please :)
|
||||
|
||||
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = easeOutQuint,0.23,1,0.32,1
|
||||
bezier = easeInOutCubic,0.65,0.05,0.36,1
|
||||
bezier = linear,0,0,1,1
|
||||
bezier = almostLinear,0.5,0.5,0.75,1.0
|
||||
bezier = quick,0.15,0,0.1,1
|
||||
|
||||
animation = global, 1, 10, default
|
||||
animation = border, 1, 5.39, easeOutQuint
|
||||
animation = windows, 1, 4.79, easeOutQuint
|
||||
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||
animation = fadeIn, 1, 1.73, almostLinear
|
||||
animation = fadeOut, 1, 1.46, almostLinear
|
||||
animation = fade, 1, 3.03, quick
|
||||
animation = layers, 1, 3.81, easeOutQuint
|
||||
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||
animation = layersOut, 1, 1.5, linear, fade
|
||||
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||
animation = workspaces, 1, 1.94, almostLinear, fade
|
||||
animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||
animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true # You probably want this
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
|
||||
vrr = 0
|
||||
font_family = FiraCode Nerd Font
|
||||
}
|
||||
|
||||
group {
|
||||
groupbar {
|
||||
font_size = 14
|
||||
text_color = $text
|
||||
text_color_inactive = $text
|
||||
col.active = $maroon
|
||||
col.inactive = $surface2
|
||||
}
|
||||
col.border_active = $maroon $teal 30deg
|
||||
col.border_inactive = $surface2
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
windowrule = suppressevent maximize, class:.*
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||
windowrulev2=noblur,class:^()$,title:^()$
|
||||
|
||||
|
||||
# games for tearing add the immediate rule
|
||||
|
||||
# Float Windows
|
||||
windowrulev2=float,title:^(Open File)$
|
||||
windowrulev2=float,title:^(Select a File)$
|
||||
windowrulev2=float,title:^(Select Folder)$
|
||||
windowrulev2=float,title:^(Choose a file)$
|
||||
windowrulev2=float,title:^(Save As)$
|
||||
windowrulev2=float,title:^(Save File)$
|
||||
windowrulev2=float,title:^(branchdialog)$
|
||||
windowrulev2=float,title:^(pinentry-gtk-2)$
|
||||
windowrulev2=float,title:^(Confirm to replace files)$
|
||||
windowrulev2=float,title:^(File Operation Progress)$
|
||||
windowrulev2=float,class:^(pavucontrol|blueman-manager|nm-connection-editor)$
|
||||
|
||||
# Center and Resize Windows
|
||||
windowrulev2=size 800 600,title:^(Open File)$
|
||||
windowrulev2=size 800 600,title:^(Select a File)$
|
||||
windowrulev2=size 800 600,title:^(Choose a file)$
|
||||
windowrulev2=size 800 600,title:^(Save As)$
|
||||
windowrulev2=size 800 600,title:^(Save File)$
|
||||
windowrulev2=size 800 600,title:^(branchdialog)$
|
||||
windowrulev2=size 800 600,title:^(pinentry-gtk-2)$
|
||||
windowrulev2=size 800 600,title:^(Confirm to replace files)$
|
||||
windowrulev2=size 800 600,title:^(File Operation Progress)$
|
||||
windowrulev2=size 800 600,class:^(pavucontrol|blueman-manager|nm-connection-editor)$
|
||||
windowrulev2=center,title:^(Open File)$
|
||||
windowrulev2=center,title:^(Select a File)$
|
||||
windowrulev2=center,title:^(Choose a file)$
|
||||
windowrulev2=center,title:^(Save As)$
|
||||
windowrulev2=center,title:^(Save File)$
|
||||
windowrulev2=center,title:^(branchdialog)$
|
||||
windowrulev2=center,title:^(pinentry-gtk-2)$
|
||||
windowrulev2=center,title:^(Confirm to replace files)$
|
||||
windowrulev2=center,title:^(File Operation Progress)$
|
||||
windowrulev2=center,class:^(pavucontrol|blueman-manager|nm-connection-editor)$
|
||||
windowrulev2=noblur,title:^(Open File)$
|
||||
windowrulev2=noblur,title:^(Select a File)$
|
||||
windowrulev2=noblur,title:^(Choose a file)$
|
||||
windowrulev2=noblur,title:^(Save As)$
|
||||
windowrulev2=noblur,title:^(Save File)$
|
||||
windowrulev2=noblur,title:^(branchdialog)$
|
||||
windowrulev2=noblur,title:^(pinentry-gtk-2)$
|
||||
windowrulev2=noblur,title:^(Confirm to replace files)$
|
||||
windowrulev2=noblur,title:^(File Operation Progress)$
|
||||
windowrulev2=noblur,class:^(pavucontrol|blueman-manager|nm-connection-editor)$
|
||||
|
||||
# Workspace Rules
|
||||
# windowrule=workspace 1,class:^(firefox)$
|
||||
# windowrule=workspace 2,class:^(kitty)$
|
||||
# windowrule=workspace 3,class:^(Code)$
|
||||
|
||||
|
||||
windowrulev2=workspace special:magic,class:^(Spotify)$
|
||||
windowrulev2=workspace special:magic,class:^(spotify)$
|
||||
windowrulev2=workspace special:discord,class:^(discord|vesktop)$
|
||||
# windowrulev2=workspace 2, class:^(brave-browser)$
|
||||
|
||||
# steam rules
|
||||
|
||||
windowrulev2=workspace 3 silent, class:^(steam)$, title:^(Steam)$
|
||||
windowrulev2=workspace 4, class:^(gamescope)$
|
||||
|
||||
# fixed sizes for different windows
|
||||
windowrulev2=size 400 800,title:^(Friends List)$ class:^(steam)$
|
||||
windowrulev2=size 1000 800,title:^(Steam Settings)$ class:^(steam)$
|
||||
windowrulev2=size 1000 800,title:^(Add Non-Steam Game)$ class:^(steam)$
|
||||
|
||||
# float windows that arent the main steam window
|
||||
windowrulev2 = float, class:^(steam)$, title:negative:^(Steam)$
|
||||
windowrulev2 = noblur, class:^(steam)$, title:negative:^(Steam)$
|
||||
# windowrulev2 = center, class:^(steam)$, title:negative:^(Steam)$
|
||||
|
||||
# allow tearing for games started with gamescope
|
||||
windowrulev2 = immediate, class:^(gamescope)$
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/bin/bash
|
||||
url=$(playerctl metadata mpris:artUrl 2>/dev/null)
|
||||
if [[ "$url" == file://* ]]; then
|
||||
cp "${url#file://}" /tmp/hyprlock_art.png
|
||||
echo "/tmp/hyprlock_art.png"
|
||||
elif [[ "$url" == http* ]]; then
|
||||
curl -s "$url" -o /tmp/hyprlock_art.png
|
||||
echo "/tmp/hyprlock_art.png"
|
||||
else
|
||||
echo "$HOME/.config/hypr/catppuccin-hyprland/assets/mocha.webp"
|
||||
fi
|
||||
@@ -15,7 +15,13 @@ start() {
|
||||
notify-send -u low "$PROGRAM_NAME" "$PROGRAM_NAME is starting ..."
|
||||
|
||||
ANDROID_SERIAL=$ANDROID_SERIAL droidcam-cli -a -v -size=1920x1080 adb 4747 &> /dev/null &
|
||||
echo $! > "$PID_FILE"
|
||||
PID=$!
|
||||
sleep 1
|
||||
if ! ps -p "$PID" > /dev/null; then
|
||||
notify-send -u critical "$PROGRAM_NAME" "$PROGRAM_NAME did not start"
|
||||
exit 1
|
||||
fi
|
||||
echo "$PID" > "$PID_FILE"
|
||||
}
|
||||
|
||||
|
||||
|
||||
Executable
+18
@@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
options="Shutdown\nReboot\nLock\nLogout"
|
||||
selected=$(echo -e $options | fuzzel --dmenu --prompt='Power:')
|
||||
|
||||
case $selected in
|
||||
"Shutdown")
|
||||
systemctl poweroff
|
||||
;;
|
||||
"Reboot")
|
||||
systemctl reboot
|
||||
;;
|
||||
"Lock")
|
||||
hyprlock
|
||||
;;
|
||||
"Logout")
|
||||
hyprctl dispatch exit
|
||||
;;
|
||||
esac
|
||||
@@ -18,14 +18,14 @@ start() {
|
||||
gpu-screen-recorder \
|
||||
-w screen \
|
||||
-f 60 \
|
||||
-a default_output -a default_input \
|
||||
-a "default_input|default_output" \
|
||||
-fm vfr \
|
||||
-c mkv \
|
||||
-encoder gpu \
|
||||
-bm qp \
|
||||
-cr full \
|
||||
-tune quality \
|
||||
-k av1_10bit \
|
||||
-k av1 \
|
||||
-q high \
|
||||
-r 120 \
|
||||
-replay-storage ram \
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Get active window info in JSON format
|
||||
WINDOW_INFO=$(hyprctl activewindow -j)
|
||||
|
||||
# Extract window class name (app name)
|
||||
APP_NAME=$(echo "$WINDOW_INFO" | jq -r '.class')
|
||||
|
||||
# If app name is empty, null, or invalid, default to "unknown"
|
||||
if [ -z "$APP_NAME" ] || [ "$APP_NAME" = "null" ]; then
|
||||
APP_NAME="unknown"
|
||||
fi
|
||||
|
||||
# Sanitize app name: convert to lowercase and replace characters that aren't letters, numbers, hyphens, or underscores with underscores
|
||||
APP_NAME_SAFE=$(echo "$APP_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9_-]/_/g')
|
||||
|
||||
# Extract geometry: "x,y wxh"
|
||||
GEOMETRY=$(echo "$WINDOW_INFO" | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')
|
||||
|
||||
# Check if geometry is valid
|
||||
if [ -z "$GEOMETRY" ] || [ "$GEOMETRY" = "null,null nullxnull" ]; then
|
||||
notify-send -u normal "Screenshot Error" "No active window found to screenshot."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ACTION=$1
|
||||
|
||||
case "$ACTION" in
|
||||
copy)
|
||||
grim -g "$GEOMETRY" - | wl-copy
|
||||
notify-send -u low "Screenshot" "Active window ($APP_NAME) copied to clipboard"
|
||||
;;
|
||||
save)
|
||||
SCREENSHOTS_DIR="$HOME/Pictures/Screenshots"
|
||||
APP_DIR="$SCREENSHOTS_DIR/$APP_NAME_SAFE"
|
||||
mkdir -p "$APP_DIR"
|
||||
FILE_NAME="$(date +'%Y-%m-%d_%H-%M-%S').png"
|
||||
FILE_PATH="$APP_DIR/$FILE_NAME"
|
||||
|
||||
grim -g "$GEOMETRY" "$FILE_PATH"
|
||||
notify-send -u low "Screenshot" "Saved active window to $APP_NAME_SAFE/$FILE_NAME"
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {copy|save}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
@@ -1,13 +0,0 @@
|
||||
#!/bin/bash
|
||||
status=$(playerctl status 2>/dev/null)
|
||||
if [ "$status" = "Playing" ] || [ "$status" = "Paused" ]; then
|
||||
title=$(playerctl metadata title | sed 's/&/\&/g; s/</\</g; s/>/\>/g')
|
||||
artist=$(playerctl metadata artist | sed 's/&/\&/g; s/</\</g; s/>/\>/g')
|
||||
if [ ${#title} -gt 25 ]; then title="${title:0:22}..."; fi
|
||||
if [ ${#artist} -gt 25 ]; then artist="${artist:0:22}..."; fi
|
||||
echo "<span weight='bold' foreground='#cba6f7'>$title</span>"
|
||||
echo "<span foreground='#bac2de' size='small'>$artist</span>"
|
||||
else
|
||||
echo "<span weight='bold' foreground='#cdd6f4'>No Media</span>"
|
||||
echo "<span size='small' foreground='#a6adc8'>Idling</span>"
|
||||
fi
|
||||
@@ -1,14 +0,0 @@
|
||||
#!/bin/bash
|
||||
# 1. Network
|
||||
net=$(nmcli -t -f active,ssid dev wifi | grep '^yes' | cut -d: -f2 || echo 'Offline')
|
||||
if [ ${#net} -gt 15 ]; then net="${net:0:12}..."; fi
|
||||
# 2. Battery
|
||||
bat_cap=$(cat /sys/class/power_supply/BAT0/capacity)
|
||||
bat_stat=$(cat /sys/class/power_supply/BAT0/status)
|
||||
if [ "$bat_stat" = "Charging" ]; then icon=""; else icon=""; fi
|
||||
# 3. Load
|
||||
cpu=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}' | cut -d. -f1)
|
||||
# Output 3 lines for the vertical stack
|
||||
echo " $net"
|
||||
echo "$icon $bat_cap% ($bat_stat)"
|
||||
echo " Load: $cpu%"
|
||||
@@ -1,166 +0,0 @@
|
||||
{
|
||||
"log_level": "LOG_LEVEL_INFO",
|
||||
"log_subprocesses_to_journal": false,
|
||||
"dbus": {
|
||||
"enabled": true,
|
||||
"connect_timeout": "20s",
|
||||
"connect_interval": "0.200s",
|
||||
"notifications": {
|
||||
"enabled": true
|
||||
},
|
||||
"systray": {
|
||||
"enabled": true
|
||||
},
|
||||
"shortcuts": {
|
||||
"enabled": true
|
||||
},
|
||||
"brightness": {
|
||||
"enabled": true,
|
||||
"adjust_step_percent": 5,
|
||||
"min_brightness": 1,
|
||||
"enable_logind": true,
|
||||
"hud_notifications": true
|
||||
},
|
||||
"power": {
|
||||
"enabled": true,
|
||||
"low_percent": 10,
|
||||
"critical_percent": 5,
|
||||
"hud_notifications": true
|
||||
}
|
||||
},
|
||||
"audio": {
|
||||
"enabled": true,
|
||||
"volume_step_percent": 5,
|
||||
"volume_exceed_maximum": false,
|
||||
"hud_notifications": true
|
||||
},
|
||||
"panels": [
|
||||
{
|
||||
"id": "panel0",
|
||||
"edge": "EDGE_TOP",
|
||||
"size": 34,
|
||||
"monitor": "",
|
||||
"modules": [
|
||||
{
|
||||
"pager": {
|
||||
"icon_size": 14,
|
||||
"active_monitor_only": false,
|
||||
"scroll_wrap_workspaces": true,
|
||||
"scroll_include_inactive": true,
|
||||
"enable_workspace_names": false,
|
||||
"pinned": [1, 2, 3, 4, 5, 6],
|
||||
"preview_width": 256
|
||||
}
|
||||
},
|
||||
{
|
||||
"spacer": {
|
||||
"size": 8,
|
||||
"expand": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"taskbar": {
|
||||
"icon_size": 24,
|
||||
"active_workspace_only": true,
|
||||
"active_monitor_only": true,
|
||||
"group_tasks": true,
|
||||
"expand": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"spacer": {
|
||||
"expand": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"clock": {
|
||||
"time_format": "15:04",
|
||||
"date_format": "%a %d %b",
|
||||
"tooltip_time_format": "15:04",
|
||||
"tooltip_date_format": "Monday, 02 January 2006"
|
||||
}
|
||||
},
|
||||
{
|
||||
"spacer": {
|
||||
"expand": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"systray": {
|
||||
"icon_size": 18,
|
||||
"menu_icon_size": 18,
|
||||
"pinned": [
|
||||
"nm-applet"
|
||||
],
|
||||
"modules": [
|
||||
{
|
||||
"power": {
|
||||
"icon_size": 18,
|
||||
"icon_symbolic": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"spacer": {
|
||||
"size": 8,
|
||||
"expand": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"notifications": {
|
||||
"icon_size": 18,
|
||||
"notification_icon_size": 48,
|
||||
"default_timeout": "7s",
|
||||
"position": "POSITION_TOP_RIGHT",
|
||||
"margin": 24
|
||||
}
|
||||
},
|
||||
{
|
||||
"spacer": {
|
||||
"size": 8,
|
||||
"expand": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"audio": {
|
||||
"icon_size": 18,
|
||||
"icon_symbolic": true,
|
||||
"command_mixer": "pavucontrol",
|
||||
"enable_source": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"spacer": {
|
||||
"size": 8,
|
||||
"expand": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"session": {
|
||||
"icon_size": 18,
|
||||
"icon_symbolic": true,
|
||||
"overlay_icon_size": 64,
|
||||
"overlay_icon_symbolic": true,
|
||||
"command_logout": "uwsm stop",
|
||||
"command_reboot": "systemctl reboot",
|
||||
"command_suspend": "systemctl suspend",
|
||||
"command_shutdown": "systemctl poweroff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"spacer": {
|
||||
"size": 8,
|
||||
"expand": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"launch_wrapper": [
|
||||
"uwsm",
|
||||
"app",
|
||||
"--"
|
||||
]
|
||||
}
|
||||
@@ -1,127 +0,0 @@
|
||||
/* Catppuccin Mocha Palette */
|
||||
@define-color base #1e1e2e;
|
||||
@define-color mantle #181825;
|
||||
@define-color crust #11111b;
|
||||
@define-color surface0 #313244;
|
||||
@define-color surface1 #45475a;
|
||||
@define-color surface2 #585b70;
|
||||
@define-color text #cdd6f4;
|
||||
@define-color subtext0 #a6adc8;
|
||||
@define-color subtext1 #bac2de;
|
||||
@define-color overlay0 #6c7086;
|
||||
@define-color overlay1 #7f849c;
|
||||
@define-color overlay2 #9399b2;
|
||||
@define-color blue #89b4fa;
|
||||
@define-color lavender #b4befe;
|
||||
@define-color sapphire #74c7ec;
|
||||
@define-color sky #89dceb;
|
||||
@define-color teal #94e2d5;
|
||||
@define-color green #a6e3a1;
|
||||
@define-color yellow #f9e2af;
|
||||
@define-color peach #fab387;
|
||||
@define-color maroon #eba0ac;
|
||||
@define-color red #f38ba8;
|
||||
@define-color mauve #cba6f7;
|
||||
@define-color flamingo #f2cdcd;
|
||||
@define-color rosewater #f5e0dc;
|
||||
|
||||
* {
|
||||
font-family: "JetBrainsMono Nerd Font";
|
||||
font-size: 13px;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
window#panel0 {
|
||||
background-color: alpha(@base, 0.7);
|
||||
color: @text;
|
||||
}
|
||||
|
||||
#pager {
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
#pager button {
|
||||
background-color: @surface0;
|
||||
color: @subtext0;
|
||||
border-radius: 12px;
|
||||
margin: 0 2px;
|
||||
padding: 0 12px;
|
||||
transition: all 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
#pager button.active {
|
||||
background-color: @mauve;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
#pager button:hover {
|
||||
background-color: @surface1;
|
||||
color: @text;
|
||||
}
|
||||
|
||||
#taskbar button {
|
||||
background-color: transparent;
|
||||
color: @subtext1;
|
||||
border-radius: 12px;
|
||||
margin: 0 2px;
|
||||
padding: 0 8px;
|
||||
}
|
||||
|
||||
#taskbar button.active {
|
||||
background-color: @surface0;
|
||||
border-bottom: 2px solid @mauve;
|
||||
}
|
||||
|
||||
#clock, #systray, #audio, #session, #notifications {
|
||||
background-color: @surface0;
|
||||
color: @text;
|
||||
border-radius: 15px;
|
||||
margin: 4px 3px;
|
||||
padding: 0 12px;
|
||||
}
|
||||
|
||||
#notifications {
|
||||
color: @yellow;
|
||||
}
|
||||
|
||||
#clock {
|
||||
color: @mauve;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#audio {
|
||||
color: @sapphire;
|
||||
}
|
||||
|
||||
#audio.muted {
|
||||
color: @subtext0;
|
||||
}
|
||||
|
||||
#session {
|
||||
color: @red;
|
||||
padding: 0 8px;
|
||||
}
|
||||
|
||||
/* Notifications and HUD */
|
||||
#notifications {
|
||||
background-color: @base;
|
||||
color: @text;
|
||||
border: 1px solid @surface1;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
#hud {
|
||||
background-color: alpha(@base, 0.8);
|
||||
color: @text;
|
||||
border-radius: 20px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#hud .progress-bar {
|
||||
background-color: @surface1;
|
||||
}
|
||||
|
||||
#hud .progress-bar-fill {
|
||||
background-color: @mauve;
|
||||
}
|
||||
+14
-23
@@ -1,44 +1,35 @@
|
||||
[Default Applications]
|
||||
application/pdf=org.pwmt.zathura-pdf-poppler.desktop
|
||||
image/jpeg=feh.desktop
|
||||
text/html=zen.desktop
|
||||
x-scheme-handler/http=zen.desktop
|
||||
x-scheme-handler/https=zen.desktop
|
||||
x-scheme-handler/about=brave-browser.desktop
|
||||
x-scheme-handler/unknown=brave-browser.desktop
|
||||
image/png=feh.desktop
|
||||
x-scheme-handler/http=brave-browser.desktop
|
||||
x-scheme-handler/https=brave-browser.desktop
|
||||
x-scheme-handler/discord=vesktop.desktop
|
||||
image/jpeg=feh.desktop
|
||||
audio/flac=mpv.desktop
|
||||
x-scheme-handler/ror2mm=r2modman.desktop
|
||||
image/webp=feh.desktop
|
||||
x-scheme-handler/chrome=zen.desktop
|
||||
text/html=brave-browser.desktop
|
||||
application/x-extension-htm=zen.desktop
|
||||
application/x-extension-html=zen.desktop
|
||||
application/x-extension-shtml=zen.desktop
|
||||
application/xhtml+xml=zen.desktop
|
||||
application/x-extension-xhtml=zen.desktop
|
||||
application/x-extension-xht=zen.desktop
|
||||
x-scheme-handler/about=brave-browser.desktop
|
||||
x-scheme-handler/unknown=brave-browser.desktop
|
||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop
|
||||
x-scheme-handler/ror2mm=r2modman.desktop
|
||||
image/webp=feh.desktop
|
||||
x-scheme-handler/claude-cli=claude-code-url-handler.desktop
|
||||
x-scheme-handler/msteams=teams-for-linux.desktop
|
||||
x-scheme-handler/slack=slack.desktop
|
||||
audio/flac=mpv.desktop
|
||||
x-scheme-handler/codex=chatgpt.desktop
|
||||
x-scheme-handler/proton-inbox=proton-mail.desktop
|
||||
|
||||
[Added Associations]
|
||||
application/pdf=org.pwmt.zathura-pdf-poppler.desktop;
|
||||
image/jpeg=feh.desktop;
|
||||
image/png=feh.desktop;
|
||||
image/jpeg=feh.desktop;
|
||||
audio/flac=mpv.desktop;
|
||||
image/webp=feh.desktop;
|
||||
x-scheme-handler/http=zen.desktop;
|
||||
x-scheme-handler/https=zen.desktop;
|
||||
text/html=zen.desktop;
|
||||
x-scheme-handler/chrome=zen.desktop;
|
||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop;
|
||||
image/webp=feh.desktop;
|
||||
text/html=zen.desktop;
|
||||
application/x-extension-htm=zen.desktop;
|
||||
application/x-extension-html=zen.desktop;
|
||||
application/x-extension-shtml=zen.desktop;
|
||||
application/xhtml+xml=zen.desktop;
|
||||
application/x-extension-xhtml=zen.desktop;
|
||||
application/x-extension-xht=zen.desktop;
|
||||
audio/flac=mpv.desktop;
|
||||
text/plain=org.neovim.nvim.desktop;
|
||||
-1
Submodule nvim deleted from 4736228253.
Loaded 100 of 233 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user