Compare commits
95
Commits
qs-shell
...
new-waybar
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f484f5a2c8 | ||
|
|
a43d446f2c | ||
|
|
2d1e44d45b | ||
|
|
1fc8748f91 | ||
|
|
95825dc8d1 | ||
|
|
4cfee8e16b | ||
|
|
9387be3be8 | ||
|
|
49d3f7550e | ||
|
|
2fdc8e735a | ||
|
|
8f0f861b5f | ||
|
|
33b27d9410 | ||
|
|
3517e7be3f | ||
|
|
ffdf09d173 | ||
|
|
3ca3f2eece | ||
|
|
17e404b67c | ||
|
|
66f85fe590 | ||
|
|
1a97f301c2 | ||
|
|
dce6a6cafb | ||
|
|
2ab86906c7 | ||
|
|
589b3f45c7 | ||
|
|
784e1ad891 | ||
|
|
2a81c8c879 | ||
|
|
404c8afebc | ||
|
|
5a92554335 | ||
|
|
708a9f26d2 | ||
|
|
86aa15925f | ||
|
|
e42275cb5b | ||
|
|
e90fe68d24 | ||
|
|
ae331c5f63 | ||
|
|
c7780ea9d8 | ||
|
|
08c3d41ff2 | ||
|
|
ecaab3e673 | ||
|
|
6d2306e3f7 | ||
|
|
0ec2614799 | ||
|
|
62de408edd | ||
|
|
90bc568a06 | ||
|
|
dc2ed58d20 | ||
|
|
c404e5107e | ||
|
|
0f848aa16c | ||
|
|
7e4c52d4d1 | ||
|
|
12622ce815 | ||
|
|
2ecc89b6b3 | ||
|
|
682750bf63 | ||
|
|
cad9b833ae | ||
|
|
b99e6fe109 | ||
|
|
e7e7e7692e | ||
|
|
d3f67649ca | ||
|
|
e37d9f64be | ||
|
|
c51f60064e | ||
|
|
b11a8f82c6 | ||
|
|
e554d98510 | ||
|
|
fd4f36a3c9 | ||
|
|
6123324a1b | ||
|
|
e312c254e8 | ||
|
|
3bec7f4d9e | ||
|
|
4c14251eee | ||
|
|
2570646b62 | ||
|
|
61c1ece03d | ||
|
|
3b9ded9cfd | ||
|
|
b1389e08c0 | ||
|
|
925b530682 | ||
|
|
2daaee35e7 | ||
|
|
856de921a0 | ||
|
|
21475d4dd7 | ||
|
|
2f54941a80 | ||
|
|
4c05ddae93 | ||
|
|
d019822a69 | ||
|
|
0218fde26e | ||
|
|
3247c768ba | ||
|
|
53ceb85731 | ||
|
|
279975a806 | ||
|
|
1e0a89d1a7 | ||
|
|
5a016f5427 | ||
|
|
0a1124a246 | ||
|
|
2ca734a5c9 | ||
|
|
50e62a256d | ||
|
|
6bdd4b8316 | ||
|
|
816d99a8ff | ||
|
|
a776d1760a | ||
|
|
b167d40039 | ||
|
|
be229a7069 | ||
|
|
0f04a7f983 | ||
|
|
277da5187b | ||
|
|
aeed3ecd88 | ||
|
|
8df7e679d4 | ||
|
|
03744cf4c3 | ||
|
|
7240eefc76 | ||
|
|
a895222cde | ||
|
|
9da8cf8fcf | ||
|
|
e4a6ceaa4d | ||
|
|
bd10041d28 | ||
|
|
fab293438e | ||
|
|
dce3c77a29 | ||
|
|
04a5d8919c | ||
|
|
e74b162b91 |
@@ -9,25 +9,18 @@ For my neovim config, see [here](https://git.janishutz.com/janishutz/nvim)
|
||||
*Screenshot outdated, a new screenshot will be added when this update is completed*
|
||||

|
||||
|
||||
The whole desktop will likely eventually move back to Waybar (because it has evolved massively since I last used it and now supports custom menus)
|
||||
|
||||
Furthermore, my system may migrate to NixOS by early September 2026, to finally have my laptop and desktop configs synced properly
|
||||
|
||||
|
||||
## Features
|
||||
- QuickShell-based status bar and QuickActions menu (Coming soon)
|
||||
- QuickShell-based
|
||||
- Astal4 based Status Bar and Quick Actions menu
|
||||
- System info
|
||||
- Hyprland info
|
||||
- Date & Time
|
||||
- Bluetooth picker
|
||||
- some networking settings (more coming later)
|
||||
- Audio and brightness control
|
||||
- battery monitoring
|
||||
- Logout, Reboot, Shutdown, etc
|
||||
- `hyprlauncher` for the app launcher
|
||||
- Wlogout config
|
||||
- DankMaterialShell
|
||||
- Automatically generated GTK Theme and theming of the rest of the desktop using `matugen`
|
||||
- Fish config (with some handy aliases, based on one from ohh-my-fish)
|
||||
- Fastfetch config
|
||||
- kitty config with cursor trail
|
||||
- alacritty config
|
||||
- notification manager uses `swaync`
|
||||
- Linter configs (eslint, clang-format, latexindent and more)
|
||||
- mpv config
|
||||
@@ -36,11 +29,22 @@ For my neovim config, see [here](https://git.janishutz.com/janishutz/nvim)
|
||||
|
||||
|
||||
## TODOs
|
||||
- [ ] Migrate status bar to QuickShell
|
||||
- [ ] Rewrite Hyprland configs using lua
|
||||
- [ ] Waylogout still needed?
|
||||
- [ ] Add the formatter configs back in
|
||||
- [ ] Add the scripts back in
|
||||
- [ ] Finish decman configuration to copy all the files
|
||||
- [ ] Custom yazi theme
|
||||
- [ ] Notifier
|
||||
- [ ] Migrate back to Waybar
|
||||
- [X] Rewrite Hyprland configs using lua
|
||||
- [X] Waylogout still needed?
|
||||
- [X] Add the formatter configs back in
|
||||
- [X] Add the scripts back in
|
||||
- [ ] ~Finish decman configuration to copy all the files~
|
||||
- [X] Custom yazi theme
|
||||
- [ ] Notifier (swaync??)
|
||||
- [ ] Launcher (hyprlauncher??)
|
||||
- [ ] dgop as hw monitor
|
||||
- [ ] No need for nm-applet (even with waybar -> nmcli or nmtui)
|
||||
- [ ] Adapt the GTK, etc config from DMS for my own design
|
||||
- [ ] Update neovim design
|
||||
- [ ] Nix config
|
||||
- [ ] home-manager or what for dotfiles management on nix?
|
||||
- [ ] Yazi more directory links
|
||||
- [ ] Hyprland keybind panel?
|
||||
- [ ] Migrate to zsh (or another POSIX compliant shell)
|
||||
- [ ] Wallpaper picker (for regenerating stuff using matugen). TUI using kitty graphics? Or any lightweight toolkit?
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
grub_theme = "/usr/share/grub/themes/monterey-grub-theme/theme.txt"
|
||||
grub_os_prober = True
|
||||
kernel_args_all = ""
|
||||
kernel_args_debug_only = ""
|
||||
kernel_args_normal_only = ""
|
||||
@@ -0,0 +1,10 @@
|
||||
[general]
|
||||
import = [
|
||||
"~/.config/alacritty/theme.toml"
|
||||
]
|
||||
|
||||
[font]
|
||||
normal = {
|
||||
family = "Source Code Pro", style = "Regular"
|
||||
}
|
||||
size = 12.0
|
||||
+13
-22
@@ -1,38 +1,26 @@
|
||||
alias ls='ls -l --color'
|
||||
alias ll='ls -la --color'
|
||||
alias v='nvim'
|
||||
alias i='vimiv'
|
||||
alias c='clear'
|
||||
alias cv='clear && nvim'
|
||||
alias zs='zathura-sandbox'
|
||||
alias z='zathura'
|
||||
alias bt='bashtop'
|
||||
alias vicfg='nvim ~/projects/nvim/'
|
||||
alias fm='thunar .'
|
||||
alias gl='git ls-files --others --exclude-standard'
|
||||
alias gm='git ls-files -m'
|
||||
alias gpu='git push'
|
||||
alias gp='git pull'
|
||||
alias gpr='git pull --rebase'
|
||||
alias gc='git commit -a -m'
|
||||
alias ga='git add ./*'
|
||||
alias cfh='nvim ~/projects/dotfiles/config/hypr/'
|
||||
alias cfn='nvim ~/projects/nvim/'
|
||||
alias cff='nvim ~/projects/dotfiles/config/fish/'
|
||||
alias cfa='nvim ~/projects/dotfiles/config/astal/'
|
||||
alias cf='nvim ~/projects/dotfiles/'
|
||||
alias cfh='nvim ~/projects/system/dotfiles/config/hypr/'
|
||||
alias cfn='nvim ~/projects/system/nvim/'
|
||||
alias cff='nvim ~/projects/system/dotfiles/config/fish/'
|
||||
alias cfa='nvim ~/projects/system/dotfiles/config/astal/'
|
||||
alias cf='nvim ~/projects/system/dotfiles/'
|
||||
alias g='lazygit'
|
||||
alias open-webui='sudo systemctl start docker && sudo docker start -i open-webui'
|
||||
alias ai='ollama serve'
|
||||
alias ff='fastfetch'
|
||||
alias p='nvimpager -p'
|
||||
alias latexdocs='zathura ~/projects/latex/docs/docs.pdf &>> /dev/null & disown'
|
||||
alias gccerr='gcc -Wall -Wextra -Wpedantic -Werror -Wmissing-prototypes -std=c99'
|
||||
alias linecount='cloc --vcs git .'
|
||||
alias flutter='fvm flutter'
|
||||
|
||||
# Add scripts in ~/projects/dotfiles/scripts/ to path
|
||||
fish_add_path -P ~/projects/dotfiles/scripts/
|
||||
# Add custom scripts to path
|
||||
fish_add_path -P ~/projects/system/dotfiles/scripts/
|
||||
|
||||
function y
|
||||
set tmp (mktemp -t "yazi-cwd.XXXXXX")
|
||||
@@ -121,9 +109,6 @@ if status is-interactive
|
||||
echo -n $white'─'$__fish_prompt_char $normal
|
||||
end
|
||||
|
||||
# NOTE: disable `VIRTUAL_ENV_DISABLE_PROMPT` in `config.fish`
|
||||
# see: https://virtualenv.pypa.io/en/latest/reference/#envvar-VIRTUAL_ENV_DISABLE_PROMPT
|
||||
# support for virtual env name
|
||||
if set -q VIRTUAL_ENV
|
||||
echo -n "($turquoise"(basename "$VIRTUAL_ENV")"$white)"
|
||||
end
|
||||
@@ -133,3 +118,9 @@ end
|
||||
end
|
||||
|
||||
set -g fish_greeting ""
|
||||
set -g VIRTUAL_ENV_DISABLE_PROMPT true
|
||||
|
||||
# TODO: Source all
|
||||
for file in ~/projects/system/dotfiles/system/completions/*
|
||||
source $file
|
||||
end
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
@import 'colors.css';
|
||||
+28
-15
@@ -1,33 +1,45 @@
|
||||
-- Determine current platform
|
||||
--- Trim a string
|
||||
---@param s string the string to process
|
||||
---@return string
|
||||
local function trim_string(s)
|
||||
return s:match("^%s*(.*)"):match("(.-)%s*$")
|
||||
end
|
||||
|
||||
local is_docked = false
|
||||
local laptop_config = false
|
||||
local read_platform = pcall(function()
|
||||
io.popen("cat ~/.config/janishutz/platform-laptop")
|
||||
end)
|
||||
local read_docked = pcall(function()
|
||||
io.popen("cat ~/.config/janishutz/docked")
|
||||
end)
|
||||
local read_platform = trim_string(io.popen("cat ~/.config/janishutz/platform"):read("a")) == "l"
|
||||
local read_docked = trim_string(io.popen("cat ~/.config/janishutz/docked"):read("a")) == "y"
|
||||
|
||||
if read_platform then
|
||||
laptop_config = true
|
||||
end
|
||||
if read_docked then
|
||||
laptop_config = true
|
||||
if read_docked and laptop_config then
|
||||
is_docked = true
|
||||
end
|
||||
|
||||
if is_docked and #hl.get_monitors() <= 1 then
|
||||
hl.notification.create({
|
||||
text = "Emergency docked mode fallback initiated: No external displays detected",
|
||||
timeout = 5000,
|
||||
})
|
||||
is_docked = false
|
||||
end
|
||||
|
||||
-- Core
|
||||
require("colors")
|
||||
require("hyprland.colors")
|
||||
require("hyprland.core.general")
|
||||
require("hyprland.core.input")(laptop_config)
|
||||
require("hyprland.core.input")(laptop_config and not is_docked)
|
||||
require("hyprland.core.group")
|
||||
require("hyprland.core.misc")
|
||||
require("hyprland.core.style")
|
||||
|
||||
-- Binds
|
||||
require("hyprland.binds.device")(laptop_config)
|
||||
require("hyprland.binds.main")
|
||||
require("hyprland.binds.device")
|
||||
require("hyprland.binds.groups")
|
||||
require("hyprland.binds.launch")
|
||||
require("hyprland.binds.main")
|
||||
require("hyprland.binds.group-launch")
|
||||
require("hyprland.binds.notifications")
|
||||
require("hyprland.binds.screenshot")
|
||||
require("hyprland.binds.window")
|
||||
@@ -39,14 +51,15 @@ require("hyprland.windowrules.idle")
|
||||
require("hyprland.windowrules.tags")
|
||||
require("hyprland.windowrules.workspaces")
|
||||
|
||||
-- Workspace rules
|
||||
require("hyprland.workspacerules.main")
|
||||
-- Workspace & Layer rules
|
||||
require("hyprland.workspacerules.main")(laptop_config, is_docked)
|
||||
require("hyprland.layerrules")
|
||||
|
||||
-- Monitors
|
||||
require("hyprland.monitors")(laptop_config, is_docked)
|
||||
|
||||
-- Execs
|
||||
require("hyprland.execs")
|
||||
require("hyprland.execs")(laptop_config)
|
||||
|
||||
hl.device({
|
||||
name = "pnp0c50:00-093a:0255-touchpad",
|
||||
|
||||
@@ -1,50 +1,44 @@
|
||||
return function(is_laptop)
|
||||
local function exit_submap()
|
||||
hl.dispatch(hl.dsp.submap("reset"))
|
||||
end
|
||||
|
||||
-- TODO: Update this for laptop
|
||||
hl.bind("code:232", hl.dsp.exec_cmd("brightnessctl set 5%-"), { description = "Decrease screen brightness" })
|
||||
hl.bind("code:233", hl.dsp.exec_cmd("brightnessctl set +5%"), { description = "Increase screen brightness" })
|
||||
|
||||
hl.bind("code:123", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"), { description = "Increase volume by 5%" })
|
||||
hl.bind("code:122", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { description = "Decrease volume by 5%" })
|
||||
hl.bind("code:121", hl.dsp.exec_cmd("hyprpwcenter"), { description = "Open mixer" })
|
||||
|
||||
hl.define_submap("device", function()
|
||||
hl.bind("m", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"))
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Toggle mute for default audio input device" })
|
||||
|
||||
if is_laptop then
|
||||
hl.bind("d", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("notify-send 'Set to mirror internal display' --app-name'Hyprctl'"))
|
||||
hl.monitor({
|
||||
output = "HDMI-A-1",
|
||||
mirror = "eDP-1",
|
||||
})
|
||||
exit_submap()
|
||||
end)
|
||||
hl.bind("e", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("notify-send 'Set to expand internal display' --app-name'Hyprctl'"))
|
||||
hl.monitor({
|
||||
output = "HDMI-A-1",
|
||||
mirror = "",
|
||||
})
|
||||
exit_submap()
|
||||
end)
|
||||
end
|
||||
|
||||
hl.bind("Shift + T", function ()
|
||||
-- Touchpad
|
||||
hl.bind("SHIFT + T", function()
|
||||
hl.device({
|
||||
name = "pnp0c50:00-093a:0255-touchpad",
|
||||
enabled = false
|
||||
enabled = false,
|
||||
})
|
||||
hl.dispatch(hl.dsp.exec_cmd("notify-send 'Disabled Trackpad' --app-name='Hyprctl'"))
|
||||
end)
|
||||
end, { description = "Disable trackpad" })
|
||||
hl.bind("T", function()
|
||||
hl.device({
|
||||
name = "pnp0c50:00-093a:0255-touchpad",
|
||||
enabled = true
|
||||
enabled = true,
|
||||
})
|
||||
hl.dispatch(hl.dsp.exec_cmd("notify-send 'Enabled Trackpad' --app-name='Hyprctl'"))
|
||||
end)
|
||||
end, { description = "Enable trackpad" })
|
||||
|
||||
-- clipboard history
|
||||
hl.bind("h", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("cliphist list | rofi -dmenu -display-columns 2 | cliphist decode | wl-copy"))
|
||||
exit_submap()
|
||||
end, { description = "Toggle clipboard history panel" })
|
||||
|
||||
hl.bind("Escape", function()
|
||||
exit_submap()
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
local function exit_submap()
|
||||
hl.dispatch(hl.dsp.submap("reset"))
|
||||
end
|
||||
|
||||
hl.define_submap("groupedlaunch", function()
|
||||
hl.bind("e", function()
|
||||
hl.exec_cmd("systemctl start docker")
|
||||
hl.exec_cmd("kitty ~/projects/eth/projects/eyetap/", { workspace = 1 })
|
||||
hl.exec_cmd("kitty ~/projects/eth/projects/eyetap/backend/", { workspace = 10 })
|
||||
hl.exec_cmd("kitty ~/projects/eth/projects/eyetap/frontend/", { workspace = 10 })
|
||||
hl.exec_cmd("librewolf http://localhost:8081")
|
||||
exit_submap()
|
||||
end, { description = "Launch programs for EYE-TAP development" })
|
||||
|
||||
hl.bind("s", function()
|
||||
hl.exec_cmd("kitty ~/projects/eth/eth-summaries/", { workspace = 1 })
|
||||
hl.exec_cmd("kitty ~/NextCloud/Documents/ETH/Semester4/", { workspace = 3 })
|
||||
exit_submap()
|
||||
end, { description = "Launch programs to write ETH summaries" })
|
||||
|
||||
hl.bind("b", function()
|
||||
hl.exec_cmd("alvr_dashboard", { workspace = 1 })
|
||||
hl.exec_cmd("/opt/BSManager/bs-manager", { workspace = 2 })
|
||||
hl.exec_cmd("steam", { workspace = 3 })
|
||||
exit_submap()
|
||||
end, { description = "Launch everything for BeatSaber" })
|
||||
|
||||
hl.bind("Escape", function()
|
||||
exit_submap()
|
||||
end)
|
||||
end)
|
||||
@@ -2,39 +2,40 @@ local function exit_submap()
|
||||
hl.dispatch(hl.dsp.submap("reset"))
|
||||
end
|
||||
|
||||
hl.bind("Super + Q", hl.dsp.exit())
|
||||
hl.bind("SUPER + SHIFT + H", hl.dsp.group.prev(), { description = "Go to previous group member" })
|
||||
hl.bind("SUPER + SHIFT + L", hl.dsp.group.next(), { description = "Go to next group member" })
|
||||
|
||||
hl.define_submap("groups", function()
|
||||
hl.bind("c", function()
|
||||
hl.dispatch(hl.dsp.group.toggle())
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Toggle group" })
|
||||
|
||||
hl.bind("l", function()
|
||||
hl.dispatch(hl.dsp.group.next())
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Go to next group member" })
|
||||
|
||||
hl.bind("h", function()
|
||||
hl.dispatch(hl.dsp.group.prev())
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Go to previous group member" })
|
||||
|
||||
hl.bind("Ctrl + L", function()
|
||||
hl.bind("CTRL + L", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("notify-send 'Group locking toggled' --app-name='Hyprtclt'"))
|
||||
hl.dispatch(hl.dsp.group.lock_active())
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Toggle group lock" })
|
||||
|
||||
hl.bind("Shift + L", function()
|
||||
hl.bind("SHIFT + L", function()
|
||||
hl.dispatch(hl.dsp.window.move({ into_or_create_group = "r" }))
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Move window into group to right" })
|
||||
|
||||
hl.bind("Shift + H", function()
|
||||
hl.bind("SHIFT + H", function()
|
||||
hl.dispatch(hl.dsp.window.move({ into_or_create_group = "l" }))
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Move window into group to left" })
|
||||
|
||||
hl.bind("Escape", function()
|
||||
exit_submap()
|
||||
|
||||
@@ -9,40 +9,42 @@ local function launcher(program)
|
||||
end
|
||||
end
|
||||
|
||||
hl.bind("SUPER + Return", launcher("kitty"))
|
||||
|
||||
hl.define_submap("launch", function()
|
||||
-- Librewolf
|
||||
hl.bind("l", launcher("librewolf"))
|
||||
hl.bind("l", launcher("librewolf"), { description = "Launch Librewolf" })
|
||||
|
||||
-- Steam
|
||||
hl.bind("s", launcher("steam"))
|
||||
hl.bind("s", launcher("steam"), { description = "Launch Steam" })
|
||||
|
||||
-- Discord
|
||||
hl.bind("d", launcher("vesktop"))
|
||||
hl.bind("d", launcher("vesktop"), { description = "Launch Discord" })
|
||||
|
||||
-- Kitty
|
||||
hl.bind("k", launcher("kitty"))
|
||||
hl.bind("Return", launcher("kitty"))
|
||||
hl.bind("k", launcher("kitty"), { description = "Launch kitty" })
|
||||
hl.bind("Return", launcher("kitty"), { description = "Launch kitty" })
|
||||
|
||||
-- Filezilla
|
||||
hl.bind("f", launcher("filezilla"))
|
||||
hl.bind("f", launcher("filezilla"), { description = "Launch Filezilla" })
|
||||
|
||||
-- Thunderbird
|
||||
hl.bind("t", launcher("thunderbird"))
|
||||
hl.bind("t", launcher("thunderbird"), { description = "Launch Thunderbird" })
|
||||
|
||||
-- Zathura
|
||||
hl.bind("z", launcher("zathura"))
|
||||
hl.bind("z", launcher("zathura"), { description = "Launch Zathura (pdf)" })
|
||||
|
||||
-- Brave
|
||||
hl.bind("Shift + B", launcher("brave"))
|
||||
hl.bind("SHIFT + B", launcher("brave"), { description = "Launch Brave" })
|
||||
|
||||
-- bsmanager
|
||||
hl.bind("b", launcher("/opt/bs-manager/bs-manager"))
|
||||
hl.bind("b", launcher("/opt/BSManager/bs-manager"), { description = "Launch BSManager" })
|
||||
|
||||
-- ALVR
|
||||
hl.bind("p", launcher("alvr_dashboard"))
|
||||
hl.bind("p", launcher("alvr_dashboard"), { description = "Launch ALVR" })
|
||||
|
||||
-- Qalculate
|
||||
hl.bind("c", launcher("qalculate-qt"))
|
||||
hl.bind("c", launcher("qalculate-qt"), { description = "Launch Qalculate!" })
|
||||
|
||||
-- AirPlay
|
||||
hl.bind("a", function()
|
||||
@@ -53,7 +55,7 @@ hl.define_submap("launch", function()
|
||||
)
|
||||
)
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Launch AirPlay server" })
|
||||
|
||||
-- Escape
|
||||
hl.bind("Escape", function()
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
hl.bind("Super + X", hl.dsp.submap("launch"))
|
||||
hl.bind("Super + D", hl.dsp.submap("device"))
|
||||
hl.bind("Super + C", hl.dsp.submap("notifications"))
|
||||
hl.bind("Super + G", hl.dsp.submap("groups"))
|
||||
hl.bind("Super + S", hl.dsp.submap("screenshot"))
|
||||
hl.bind("Super + W", hl.dsp.submap("window"))
|
||||
hl.bind("Super + A", hl.dsp.submap("workspace"))
|
||||
hl.bind("Super + Space", hl.dsp.exec_cmd("hyprlauncher"))
|
||||
hl.bind("Super + Escape", hl.dsp.exec_cmd("wlogout"))
|
||||
hl.bind("SUPER + X", hl.dsp.submap("launch"), { description = "Launching programs" })
|
||||
hl.bind("SUPER + D", hl.dsp.submap("device"), { description = "Device controls" })
|
||||
hl.bind("SUPER + C", hl.dsp.submap("notifications"), { description = "Notifications management" })
|
||||
hl.bind("SUPER + G", hl.dsp.submap("groups"), { description = "Window group management" })
|
||||
hl.bind("SUPER + S", hl.dsp.submap("screenshot"), { description = "Screenshots" })
|
||||
hl.bind("SUPER + W", hl.dsp.submap("window"), { description = "Window management" })
|
||||
hl.bind("SUPER + A", hl.dsp.submap("workspace"), { description = "Workspace controls" })
|
||||
hl.bind("SUPER + P", hl.dsp.submap("groupedlaunch"), { description = "Launch groups of programs" })
|
||||
hl.bind("SUPER + Q", hl.dsp.window.close(), { description = "Close active window" })
|
||||
|
||||
hl.bind(
|
||||
"SUPER + Space",
|
||||
hl.dsp.exec_cmd('killall rofi || rofi -show combi -modes combi -combi-modes "window,drun,run"'),
|
||||
{ description = "Toggle app launcher" }
|
||||
)
|
||||
hl.bind("SUPER + Escape", hl.dsp.exec_cmd("wlogout"), { description = "Toggle logout screen" })
|
||||
|
||||
@@ -6,27 +6,32 @@ hl.define_submap("notifications", function()
|
||||
hl.bind("c", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("swaync-client --hide-all"))
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Hide notifications" })
|
||||
|
||||
hl.bind("d", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("swaync-client --clear-all"))
|
||||
hl.dispatch(hl.dsp.exec_cmd("swaync-client --close-all"))
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Delete all notifications" })
|
||||
|
||||
hl.bind("m", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("swaync-client -d"))
|
||||
exit_submap()
|
||||
end, { description = "Toggle Do Not Disturb" })
|
||||
|
||||
hl.bind("h", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("swaync-client -cp"))
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Close notification panel" })
|
||||
|
||||
hl.bind("s", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("swaync-client -op"))
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Open notification panel" })
|
||||
|
||||
hl.bind("t", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("swaync-client -t"))
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Toggle notification panel" })
|
||||
|
||||
hl.bind("Escape", function()
|
||||
exit_submap()
|
||||
|
||||
@@ -4,34 +4,42 @@ end
|
||||
|
||||
hl.define_submap("screenshot", function()
|
||||
hl.bind("y", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("grimblast --notify copy area"))
|
||||
hl.dispatch(hl.dsp.exec_cmd('grim -g "$(slurp -d)" - | wl-copy'))
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Take sceenshot of area and Yank" })
|
||||
|
||||
hl.bind("c", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("grimblast --notify copysave area"))
|
||||
hl.dispatch(
|
||||
hl.dsp.exec_cmd(
|
||||
'grim -g "$(slurp -d)" - | satty -f - --copy-command wl-copy -o "~/Pictures/Screenshots/%Y-%m-%dT%H:%M:%SZ%z.png"'
|
||||
)
|
||||
)
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Take screenshot of area, yank and save" })
|
||||
|
||||
hl.bind("s", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("grimblast --notify save area"))
|
||||
hl.dispatch(hl.dsp.exec_cmd("grim -g '$(slurp -d)' $(xdg-user-dir PICTURES)/Screenshots/$(date +'%Y-%m-%dT%H:%M:%SZ%z.png')"))
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Take screenshot of area and Save" })
|
||||
|
||||
hl.bind("Shift + y", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("grimblast --notify copy screen"))
|
||||
hl.bind("SHIFT + y", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("grim - | wl-copy"))
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Take screenshot and Yank" })
|
||||
|
||||
hl.bind("Shift + c", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("grimblast --notify copysave screen"))
|
||||
hl.bind("SHIFT + c", function()
|
||||
hl.dispatch(
|
||||
hl.dsp.exec_cmd(
|
||||
'grim - | satty -f - --copy-command wl-copy -o "~/Pictures/Screenshots/%Y-%m-%dT%H:%M:%SZ%z.png"'
|
||||
)
|
||||
)
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Take sceenshot, yank and save" })
|
||||
|
||||
hl.bind("Shift + s", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("grimblast --notify save screen"))
|
||||
hl.bind("SHIFT + s", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("grim $(xdg-user-dir PICTURES)/Screenshots/$(date +'%Y-%m-%dT%H:%M:%SZ%z.png')"))
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Take screenshot and Save" })
|
||||
|
||||
hl.bind("Escape", function()
|
||||
exit_submap()
|
||||
|
||||
@@ -2,39 +2,50 @@ local function exit_submap()
|
||||
hl.dispatch(hl.dsp.submap("reset"))
|
||||
end
|
||||
|
||||
hl.bind("Super + Q", hl.dsp.exit())
|
||||
hl.bind("SUPER + mouse:272", hl.dsp.window.drag())
|
||||
hl.bind("SUPER + mouse:273", hl.dsp.window.resize())
|
||||
|
||||
hl.define_submap("window", function()
|
||||
-- Close window
|
||||
hl.bind("x", function()
|
||||
hl.dispatch(hl.dsp.exit())
|
||||
hl.dispatch(hl.dsp.window.close())
|
||||
exit_submap()
|
||||
end)
|
||||
|
||||
end, { description = "Close active window" })
|
||||
hl.bind("q", function()
|
||||
hl.dispatch(hl.dsp.exit())
|
||||
hl.dispatch(hl.dsp.window.close())
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Close active window" })
|
||||
|
||||
-- Fullscreen
|
||||
hl.bind("f", function()
|
||||
hl.dispatch(hl.dsp.window.fullscreen({ mode = "fullscreen" }))
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Toggle fullscreen" })
|
||||
|
||||
-- Floating
|
||||
hl.bind("v", function()
|
||||
hl.dispatch(hl.dsp.window.float())
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Toggle floating" })
|
||||
|
||||
-- Center
|
||||
hl.bind("c", function()
|
||||
hl.dispatch(hl.dsp.window.center())
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Centre window (when floating)" })
|
||||
|
||||
hl.bind("Shift + K", function()
|
||||
-- Kill
|
||||
hl.bind("SHIFT + K", function()
|
||||
hl.dispatch(hl.dsp.exec_cmd("notify-send 'Insta-Kill activated' --app-name='Hyprtclt'"))
|
||||
hl.dispatch(hl.dsp.exec_cmd("hyprctl kill"))
|
||||
exit_submap()
|
||||
end)
|
||||
end, { description = "Activate insta-kill" })
|
||||
|
||||
-- Resize
|
||||
hl.bind("l", hl.dsp.window.resize({ x = 10, y = 0, relative = true }), { description = "Increase size horizontally" })
|
||||
hl.bind("h", hl.dsp.window.resize({ x = -10, y = 0, relative = true }), { description = "Decrease size horizontally" })
|
||||
hl.bind("j", hl.dsp.window.resize({ x = 0, y = 10, relative = true }), { description = "Increase size vertically" })
|
||||
hl.bind("k", hl.dsp.window.resize({ x = 0, y = -10, relative = true }), { description = "Decrease size vertically" })
|
||||
|
||||
hl.bind("Escape", function()
|
||||
exit_submap()
|
||||
|
||||
@@ -2,35 +2,65 @@ local function exit_submap()
|
||||
hl.dispatch(hl.dsp.submap("reset"))
|
||||
end
|
||||
|
||||
for i = 1, 10, 1 do
|
||||
hl.bind("Super + " .. tostring(i % 10), hl.dsp.focus({ workspace = tostring(i) }))
|
||||
hl.bind("Super + Shift + " .. tostring(i % 10), hl.dsp.window.move({ workspace = tostring(i), follow = 1 }))
|
||||
local function add_workspace_keymap(bind_goto, bind_move, num)
|
||||
hl.bind(
|
||||
bind_goto,
|
||||
hl.dsp.focus({ workspace = tostring(num) }),
|
||||
{ description = "Go to workspace " .. tostring(num) }
|
||||
)
|
||||
hl.bind(
|
||||
bind_move,
|
||||
hl.dsp.window.move({ workspace = tostring(num), follow = 1 }),
|
||||
{ description = "Move window to workspace " .. tostring(num) }
|
||||
)
|
||||
end
|
||||
|
||||
hl.bind("Super + h", hl.dsp.focus({ direction = "l" }))
|
||||
hl.bind("Super + l", hl.dsp.focus({ direction = "r" }))
|
||||
hl.bind("Super + j", hl.dsp.focus({ direction = "d" }))
|
||||
hl.bind("Super + k", hl.dsp.focus({ direction = "u" }))
|
||||
|
||||
hl.bind("Super + M", hl.dsp.workspace.toggle_special("main"))
|
||||
hl.bind("Super + Shift + M", hl.dsp.window.move({ workspace = "special:main" }))
|
||||
|
||||
hl.define_submap("notifications", function()
|
||||
for i = 1, 10, 1 do
|
||||
hl.bind(tostring(i % 10), hl.dsp.focus({ workspace = tostring(i) }))
|
||||
hl.bind("Shift + " .. tostring(i % 10), hl.dsp.window.move({ workspace = tostring(i), follow = 1 }))
|
||||
add_workspace_keymap("SUPER + " .. tostring(i % 10), "SUPER + SHIFT + " .. tostring(i % 10), i)
|
||||
end
|
||||
-- Super + - for 11th workspace
|
||||
add_workspace_keymap("SUPER + code:20", "SUPER + SHIFT + code:20", 11)
|
||||
|
||||
hl.bind("h", hl.dsp.focus({ direction = "l" }))
|
||||
hl.bind("l", hl.dsp.focus({ direction = "r" }))
|
||||
hl.bind("j", hl.dsp.focus({ direction = "d" }))
|
||||
hl.bind("k", hl.dsp.focus({ direction = "u" }))
|
||||
hl.bind("SUPER + h", hl.dsp.focus({ direction = "l" }), { description = "Focus next window to left" })
|
||||
hl.bind("SUPER + l", hl.dsp.focus({ direction = "r" }), { description = "Focus next window to right" })
|
||||
hl.bind("SUPER + j", hl.dsp.focus({ direction = "d" }), { description = "Focus next window below" })
|
||||
hl.bind("SUPER + k", hl.dsp.focus({ direction = "u" }), { description = "Focus next window above" })
|
||||
|
||||
hl.bind("Shift + l", hl.dsp.window.move({ workspace = "+1", follow = 1 }))
|
||||
hl.bind("Shift + h", hl.dsp.window.move({ workspace = "-1", follow = 1 }))
|
||||
hl.bind("SUPER + M", hl.dsp.workspace.toggle_special("main"), { description = "Toggle main special workspace" })
|
||||
hl.bind(
|
||||
"SUPER + SHIFT + M",
|
||||
hl.dsp.window.move({ workspace = "special:main" }),
|
||||
{ description = "Move window to main special workspace" }
|
||||
)
|
||||
|
||||
hl.bind("M", hl.dsp.workspace.toggle_special("main"))
|
||||
hl.bind("Shift + M", hl.dsp.window.move({ workspace = "special:main" }))
|
||||
hl.define_submap("workspace", function()
|
||||
for i = 1, 10, 1 do
|
||||
add_workspace_keymap(tostring(i % 10), "SHIFT + " .. tostring(i % 10), i)
|
||||
end
|
||||
add_workspace_keymap("code:20", "SHIFT + code:20", 11)
|
||||
|
||||
hl.bind("h", hl.dsp.focus({ direction = "l" }), { description = "Focus next window to left" })
|
||||
hl.bind("l", hl.dsp.focus({ direction = "r" }), { description = "Focus next window to right" })
|
||||
hl.bind("j", hl.dsp.focus({ direction = "d" }), { description = "Focus next window below" })
|
||||
hl.bind("k", hl.dsp.focus({ direction = "u" }), { description = "Focus next window above" })
|
||||
|
||||
hl.bind(
|
||||
"SHIFT + l",
|
||||
hl.dsp.window.move({ workspace = "+1", follow = 1 }),
|
||||
{ description = "Move one workspace up" }
|
||||
)
|
||||
hl.bind(
|
||||
"SHIFT + h",
|
||||
hl.dsp.window.move({ workspace = "-1", follow = 1 }),
|
||||
{ description = "Move one workspace down" }
|
||||
)
|
||||
|
||||
hl.bind("M", hl.dsp.workspace.toggle_special("main"), { description = "Toggle main special workspace" })
|
||||
hl.bind(
|
||||
"SHIFT + M",
|
||||
hl.dsp.window.move({ workspace = "special:main" }),
|
||||
{ description = "Move window to main special workspace" }
|
||||
)
|
||||
|
||||
hl.bind("Escape", function()
|
||||
exit_submap()
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
hl.config({
|
||||
general = {
|
||||
col = {
|
||||
active_border = { colors = { "rgba(ffaabbcc)", "rgba(ffaabbcc)", "rgba(ffaabbcc)" }, angle = 45 },
|
||||
inactive_border = "rgba(ffaabb33)",
|
||||
},
|
||||
},
|
||||
group = {
|
||||
col = {
|
||||
border_active = "rgba(ffaabb77)",
|
||||
border_inactive = "rgba(ffaabb33)",
|
||||
},
|
||||
},
|
||||
decoration = {
|
||||
shadow = {
|
||||
color = "rgba(ffffff20)",
|
||||
},
|
||||
},
|
||||
})
|
||||
@@ -1,11 +1,11 @@
|
||||
--- @param swap_escape boolean
|
||||
return function(swap_escape)
|
||||
--- @param laptop_config boolean
|
||||
return function(laptop_config)
|
||||
hl.config({
|
||||
inputs = {
|
||||
kb_options = swap_escape and "caps:swapescape" or "",
|
||||
input = {
|
||||
kb_options = laptop_config and "caps:swapescape" or "",
|
||||
kb_layout = "us",
|
||||
kb_variant = "altgr-intl",
|
||||
natural_scroll = "true",
|
||||
natural_scroll = true,
|
||||
|
||||
numlock_by_default = true,
|
||||
repeat_delay = 400,
|
||||
@@ -21,7 +21,7 @@ return function(swap_escape)
|
||||
scroll_factor = 4,
|
||||
},
|
||||
|
||||
focus_on_close = 1,
|
||||
focus_on_close = true,
|
||||
|
||||
sensitivity = 0,
|
||||
},
|
||||
|
||||
@@ -9,12 +9,11 @@ hl.config({
|
||||
allow_session_lock_restore = true,
|
||||
},
|
||||
dwindle = {
|
||||
pseudotile = true,
|
||||
force_split = 2,
|
||||
preserve_split = true,
|
||||
},
|
||||
binds = {
|
||||
workspace_back_and_forth = true,
|
||||
workspace_back_and_forth = false,
|
||||
},
|
||||
cursor = {
|
||||
no_warps = false,
|
||||
|
||||
@@ -18,7 +18,6 @@ hl.config({
|
||||
|
||||
dim_inactive = true,
|
||||
dim_strength = 0.1,
|
||||
-- TODO: Consider adding glow?
|
||||
},
|
||||
animations = {
|
||||
enabled = true,
|
||||
@@ -31,7 +30,7 @@ hl.curve("main-bezier", {
|
||||
})
|
||||
|
||||
hl.animation({
|
||||
leaf = "windowsIn",
|
||||
leaf = "windows",
|
||||
enabled = true,
|
||||
bezier = "main-bezier",
|
||||
speed = 3,
|
||||
@@ -42,29 +41,40 @@ hl.animation({
|
||||
enabled = true,
|
||||
bezier = "main-bezier",
|
||||
speed = 4,
|
||||
style = "popin 80%"
|
||||
style = "popin 80%",
|
||||
})
|
||||
|
||||
hl.animation({
|
||||
leaf = "border",
|
||||
enabled = true,
|
||||
bezier = "default",
|
||||
speed = 8,
|
||||
})
|
||||
|
||||
hl.animation({
|
||||
leaf = "fade",
|
||||
enabled = true,
|
||||
bezier = "default",
|
||||
speed = 3,
|
||||
})
|
||||
|
||||
hl.animation({
|
||||
leaf = "workspace",
|
||||
leaf = "workspaces",
|
||||
enabled = true,
|
||||
bezier = "default",
|
||||
speed = 1,
|
||||
})
|
||||
|
||||
hl.animation({
|
||||
leaf = "specialWorkspace",
|
||||
enabled = true,
|
||||
bezier = "default",
|
||||
speed = 1,
|
||||
})
|
||||
|
||||
hl.animation({
|
||||
leaf = "fadeDpms",
|
||||
enabled = true,
|
||||
bezier = "default",
|
||||
speed = 4,
|
||||
})
|
||||
|
||||
@@ -1,14 +1,30 @@
|
||||
return function(is_laptop)
|
||||
hl.env("QT_QPA_PLATFORM", "wayland")
|
||||
hl.env("QT_QPA_PLATFORM_THEME", "qt6ct")
|
||||
|
||||
hl.on("hyprland.start", function()
|
||||
-- hl.exec_cmd("~/.config/hypr/xdg-portal-hyprland")
|
||||
-- hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XAUTHORITY DISPLAY")
|
||||
-- hl.exec_cmd("systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP")
|
||||
-- Portal fixes
|
||||
hl.exec_cmd("~/.config/hypr/xdg-portal-hyprland")
|
||||
|
||||
-- Environment setup
|
||||
hl.exec_cmd(
|
||||
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XAUTHORITY DISPLAY"
|
||||
)
|
||||
hl.exec_cmd("systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP")
|
||||
hl.exec_cmd("systemctl --user start hyprpolkitagent")
|
||||
|
||||
-- Start bar and utilities
|
||||
hl.exec_cmd("hypridle")
|
||||
hl.exec_cmd("waybar")
|
||||
hl.exec_cmd("hyprpaper")
|
||||
hl.exec_cmd("hyprlauncher -d")
|
||||
hl.exec_cmd("nm-applet")
|
||||
hl.exec_cmd("swaync")
|
||||
hl.exec_cmd("nextcloud --background")
|
||||
hl.exec_cmd("quickshell")
|
||||
hl.exec_cmd("matugen")
|
||||
hl.exec_cmd("wl-paste --type text --watch cliphist store")
|
||||
hl.exec_cmd("wl-paste --watch cliphist store")
|
||||
|
||||
if is_laptop then
|
||||
hl.exec_cmd("hyprctl setcursor oreo_spark_blue_cursors 36")
|
||||
else
|
||||
hl.exec_cmd("hyprctl setcursor oreo_spark_blue_cursors 24")
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
hl.layer_rule({
|
||||
dim_around = true,
|
||||
match = { namespace = "rofi" },
|
||||
})
|
||||
@@ -11,6 +11,12 @@ return function(is_laptop, is_docked)
|
||||
output = "eDP-1",
|
||||
disabled = true,
|
||||
})
|
||||
hl.monitor({
|
||||
output = "DP-1",
|
||||
mode = "1920x1080@144",
|
||||
position = "0x0",
|
||||
scale = 1,
|
||||
})
|
||||
else
|
||||
hl.monitor({
|
||||
output = "eDP-1",
|
||||
@@ -19,20 +25,13 @@ return function(is_laptop, is_docked)
|
||||
scale = 1.5,
|
||||
})
|
||||
end
|
||||
elseif is_laptop and is_docked then
|
||||
hl.monitor({
|
||||
output = "DP-1",
|
||||
mode = "1920x1080@144",
|
||||
position = "0x0",
|
||||
scale = 1,
|
||||
})
|
||||
else
|
||||
hl.monitor({
|
||||
output = "DP-1",
|
||||
mode = "1920x1080@144",
|
||||
position = "0x0",
|
||||
scale = 1,
|
||||
vrr = 2
|
||||
vrr = 2,
|
||||
})
|
||||
hl.monitor({
|
||||
output = "DP-2",
|
||||
|
||||
@@ -23,12 +23,6 @@ hl.window_rule({
|
||||
},
|
||||
fullscreen = true,
|
||||
})
|
||||
hl.window_rule({
|
||||
match = {
|
||||
class = "wlogout",
|
||||
},
|
||||
fullscreen = true,
|
||||
})
|
||||
|
||||
-- Termfilechooser
|
||||
hl.window_rule({
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
hl.window_rule({
|
||||
match = {
|
||||
title = "Bitwarden|secret",
|
||||
},
|
||||
no_screen_share = true
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
match = {
|
||||
class = "nm-connection-editor|[aA]uthentication",
|
||||
},
|
||||
no_screen_share = true
|
||||
})
|
||||
@@ -4,13 +4,13 @@
|
||||
-- Games
|
||||
hl.window_rule({
|
||||
match = {
|
||||
class = "steam_app",
|
||||
class = "steam_app.*",
|
||||
},
|
||||
tag = "+game",
|
||||
})
|
||||
hl.window_rule({
|
||||
match = {
|
||||
title = "Minecraft|Beat Saber",
|
||||
title = "Minecraft.*|Beat Saber",
|
||||
},
|
||||
tag = "+game",
|
||||
})
|
||||
@@ -32,7 +32,7 @@ hl.window_rule({
|
||||
})
|
||||
hl.window_rule({
|
||||
match = {
|
||||
class = "SteamVR Status|Open File|Media viewer|Volume Control|Picture-in-Picture|File Operation Progress|Loading|AG Controller|AG Controller|Qalculate",
|
||||
title = ".*SteamVR.*|Open File.*|Media viewer|Volume Control|Picture-in-Picture|File Operation Progress|Loading.*|AG Controller|.*Qalculate.*",
|
||||
},
|
||||
tag = "+dialog",
|
||||
})
|
||||
|
||||
@@ -7,31 +7,50 @@ hl.window_rule({
|
||||
workspace = 1,
|
||||
})
|
||||
hl.window_rule({
|
||||
match = { title = "ALVR|^hidden-terminator$" },
|
||||
match = { title = "ALVR.*|^hidden-terminator$" },
|
||||
workspace = 1,
|
||||
})
|
||||
|
||||
-- Workspace 2
|
||||
hl.window_rule({
|
||||
match = { class = "evince|okular|org\\.pwmt\\.zathura|librewolf" },
|
||||
match = { class = "evince|okular|org\\.pwmt\\.zathura" },
|
||||
workspace = 2,
|
||||
})
|
||||
hl.window_rule({
|
||||
match = { title = "BSManager" },
|
||||
match = { title = ".*BSManager.*" },
|
||||
workspace = 2,
|
||||
})
|
||||
|
||||
-- Workspace 3
|
||||
hl.window_rule({
|
||||
match = { class = "minecraft-launcher" },
|
||||
workspace = 3,
|
||||
})
|
||||
hl.window_rule({
|
||||
match = { title = "[Ss]team" },
|
||||
match = { tag = "launchers" },
|
||||
workspace = 3,
|
||||
})
|
||||
|
||||
-- Special
|
||||
hl.window_rule({
|
||||
match = { title = "Qalculate|AG Controller" },
|
||||
workspace = "special",
|
||||
match = { title = "Qalculate.*|AG Controller" },
|
||||
workspace = "special:main",
|
||||
})
|
||||
|
||||
-- Workspace 4
|
||||
hl.window_rule({
|
||||
match = { class = "brave-browser" },
|
||||
workspace = 4,
|
||||
})
|
||||
hl.window_rule({
|
||||
match = { title = ".*-summary.pdf|.*cheatsheet.pdf|.*cheat-sheet.pdf" },
|
||||
workspace = 4,
|
||||
})
|
||||
|
||||
-- Workspace 11
|
||||
hl.window_rule({
|
||||
match = { class = "librewolf" },
|
||||
workspace = 11,
|
||||
})
|
||||
|
||||
-- Workspace 10
|
||||
hl.window_rule({
|
||||
match = { class = "vesktop" },
|
||||
workspace = 10,
|
||||
})
|
||||
|
||||
@@ -1,20 +1,55 @@
|
||||
return function(is_laptop, is_docked)
|
||||
hl.workspace_rule({
|
||||
workspace = "1",
|
||||
monitor = "DP-1",
|
||||
default = true,
|
||||
})
|
||||
hl.workspace_rule({
|
||||
workspace = "3",
|
||||
monitor = "DP-1",
|
||||
default = false,
|
||||
})
|
||||
if not is_laptop then
|
||||
hl.workspace_rule({
|
||||
workspace = "2",
|
||||
monitor = "DP-2",
|
||||
default = true,
|
||||
})
|
||||
hl.workspace_rule({
|
||||
workspace = "3",
|
||||
monitor = "DP-1",
|
||||
workspace = "4",
|
||||
monitor = "DP-2",
|
||||
default = false,
|
||||
})
|
||||
hl.workspace_rule({
|
||||
workspace = "10",
|
||||
monitor = "DP-2",
|
||||
default = false,
|
||||
})
|
||||
hl.workspace_rule({
|
||||
workspace = "11",
|
||||
monitor = "DP-2",
|
||||
default = false,
|
||||
})
|
||||
elseif is_docked then
|
||||
hl.workspace_rule({
|
||||
workspace = "2",
|
||||
monitor = "HDMI-A-1",
|
||||
default = true,
|
||||
})
|
||||
hl.workspace_rule({
|
||||
workspace = "4",
|
||||
monitor = "DP-2",
|
||||
default = true,
|
||||
monitor = "HDMI-A-1",
|
||||
default = false,
|
||||
})
|
||||
hl.workspace_rule({
|
||||
workspace = "10",
|
||||
monitor = "HDMI-A-1",
|
||||
default = false,
|
||||
})
|
||||
hl.workspace_rule({
|
||||
workspace = "11",
|
||||
monitor = "HDMI-A-1",
|
||||
default = false,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
ui {
|
||||
window_size = 400 800
|
||||
}
|
||||
@@ -12,9 +12,10 @@
|
||||
# ┌ ┐
|
||||
# │ BACKGROUND │
|
||||
# └ ┘
|
||||
source = ./hyprlock-colors.conf
|
||||
background {
|
||||
monitor =
|
||||
path = /home/janis/NextCloud/Wallpapers/nvim/nvim-simple.png # Or screenshot
|
||||
path = $background_image # Or screenshot
|
||||
|
||||
blur_passes = 1
|
||||
}
|
||||
@@ -29,9 +30,9 @@ input-field {
|
||||
dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = false
|
||||
outer_color = rgb(92, 155, 63)
|
||||
inner_color = rgb(200, 200, 200)
|
||||
font_color = rgb(10, 10, 10)
|
||||
outer_color = $entry_border_color
|
||||
inner_color = $entry_background_color
|
||||
font_color = $entry_color
|
||||
fade_on_empty = true
|
||||
placeholder_text = <i>Input Password...</i> # Text rendered in the input box when it's empty.
|
||||
hide_input = false
|
||||
@@ -56,7 +57,7 @@ label {
|
||||
label {
|
||||
monitor =
|
||||
text = $LAYOUT
|
||||
color = rgba(200, 200, 200, 1.0)
|
||||
color = $text_color
|
||||
font_size = 12
|
||||
font_family = Comfortaa
|
||||
|
||||
@@ -68,7 +69,7 @@ label {
|
||||
label {
|
||||
monitor =
|
||||
text = $USER
|
||||
color = rgba(200, 200, 200, 1.0)
|
||||
color = $text_color
|
||||
font_size = 12
|
||||
font_family = Comfortaa
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# │ Kitty Config │
|
||||
# ╰────────────────────────────────────────────────╯
|
||||
# ────────────────────────────────────────────────────────────────────
|
||||
include colors.conf
|
||||
|
||||
|
||||
# ┌ ┐
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
# Matugen configs
|
||||
Shamelessly copied from [End-4's dotfiles](https://github.com/end-4/dots-hyprland/tree/main/dots/.config/matugen)
|
||||
Sources:
|
||||
- [End-4's dotfiles](https://github.com/end-4/dots-hyprland/tree/main/dots/.config/matugen)
|
||||
- [InioX matugen themes](https://github.com/InioX/matugen-themes)
|
||||
|
||||
|
||||
# TODOs
|
||||
- [ ] Custom yazi theme
|
||||
- [ ] Qt theme
|
||||
- [X] Remove unneeded elements
|
||||
- [ ] Quickshell stuff
|
||||
## Config files
|
||||
- Hyprland (my own)
|
||||
- Hyprlock (my own)
|
||||
- Hyprtoolkit (my own)
|
||||
- Yazi (my own)
|
||||
- Wlogout (Colour template files from InioX)
|
||||
- Waybar (Colour template files from InioX)
|
||||
- Discord theme (fully from InioX)
|
||||
- GTK (From InioX)
|
||||
- Swaync (from InioX)
|
||||
- Qt TODO!
|
||||
|
||||
+57
-11
@@ -1,26 +1,72 @@
|
||||
[config]
|
||||
version_check = false
|
||||
|
||||
[templates.m3colors]
|
||||
input_path = '~/.config/matugen/templates/colors.json'
|
||||
output_path = '~/.local/state/quickshell/user/generated/colors.json'
|
||||
# From https://github.com/InioX/matugen-themes
|
||||
[templates.gtk3]
|
||||
input_path = '~/.config/matugen/templates/gtk/colors.css'
|
||||
output_path = '~/.config/gtk-3.0/colors.css'
|
||||
post_hook = 'gsettings set org.gnome.desktop.interface gtk-theme ""; gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3-{{mode}}'
|
||||
|
||||
[templates.gtk4]
|
||||
input_path = '~/.config/matugen/templates/gtk/colors.css'
|
||||
output_path = '~/.config/gtk-4.0/colors.css'
|
||||
post_hook = '~/.config/matugen/post-hook-scripts/gtk-themes-reload.sh'
|
||||
|
||||
[templates.waybar-colors]
|
||||
input_path = '~/.config/matugen/templates/colors.css'
|
||||
output_path = "~/.config/waybar/colors.css"
|
||||
post_hook = "swaync-client -rs"
|
||||
|
||||
[templates.color-scheme]
|
||||
input_path = '~/.config/matugen/templates/qt/colors.colors'
|
||||
output_path = '~/.local/share/color-schemes/Matugen.colors'
|
||||
|
||||
[templates.kitty]
|
||||
input_path = '~/.config/matugen/templates/kitty/colors.conf'
|
||||
output_path = '~/.config/kitty/colors.conf'
|
||||
|
||||
[templates.alacritty]
|
||||
input_path = '~/.config/matugen/templates/alacritty/theme.toml'
|
||||
output_path = '~/.config/alacritty/colors.toml'
|
||||
|
||||
[templates.vesktop]
|
||||
input_path = '~/.config/matugen/templates/vesktop/midnight.css'
|
||||
output_path = '~/.config/vesktop/themes/midnight-discord.css'
|
||||
|
||||
# From https://github.com/ErikReider/Linux/blob/master/dotfiles/.config/swaync/style.css
|
||||
[templates.swaync]
|
||||
input_path = '~/.config/matugen/templates/swaync/style.css'
|
||||
output_path = "~/.config/swaync/style.css"
|
||||
post_hook = "swaync-client -rs"
|
||||
|
||||
|
||||
# My own
|
||||
[templates.hyprland]
|
||||
input_path = '~/.config/matugen/templates/hyprland/colors.lua'
|
||||
output_path = '~/.config/hypr/hyprland/colors.lua'
|
||||
|
||||
[templates.waybar]
|
||||
input_path = '~/.config/matugen/templates/waybar/style.css'
|
||||
output_path = '~/.config/waybar/style.css'
|
||||
post_hook = 'pkill -SIGUSR2 waybar'
|
||||
|
||||
[templates.hyprlock]
|
||||
input_path = '~/.config/matugen/templates/hyprland/hyprlock-colors.conf'
|
||||
output_path = '~/.config/hypr/hyprlock/colors.conf'
|
||||
output_path = '~/.config/hypr/hyprlock-colors.conf'
|
||||
|
||||
[templates.gtk3]
|
||||
input_path = '~/.config/matugen/templates/gtk-3.0/gtk.css'
|
||||
output_path = '~/.config/gtk-3.0/gtk.css'
|
||||
|
||||
[templates.gtk4]
|
||||
input_path = '~/.config/matugen/templates/gtk-4.0/gtk.css'
|
||||
output_path = '~/.config/gtk-4.0/gtk.css'
|
||||
[templates.hyprpaper]
|
||||
input_path = '~/.config/matugen/templates/hyprland/hyprpaper.conf'
|
||||
output_path = '~/.config/hypr/hyprpaper.conf'
|
||||
post_hook = 'pkill -SIGUSR2 hyprpaper'
|
||||
|
||||
[templates.wlogout]
|
||||
input_path = '~/.config/matugen/templates/wlogout/style.css'
|
||||
output_path = '~/.config/wlogout/style.css'
|
||||
|
||||
[templates.rofi]
|
||||
input_path = '~/.config/matugen/templates/rofi/style.rasi'
|
||||
output_path = '~/.config/rofi/style.rasi'
|
||||
|
||||
[templates.yazi]
|
||||
input_path = '~/.config/matugen/templates/yazi/theme.toml'
|
||||
output_path = '~/.config/yazi/theme.toml'
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Thanks to https://github.com/InioX/matugen-themes/blob/main/post-hook-scripts/gtk-themes-reload.sh
|
||||
|
||||
current=$(gsettings get org.gnome.desktop.interface color-scheme)
|
||||
|
||||
if [[ "$current" == "'prefer-dark'" ]]; then
|
||||
gsettings set org.gnome.desktop.interface color-scheme prefer-light
|
||||
gsettings set org.gnome.desktop.interface color-scheme prefer-dark
|
||||
else
|
||||
gsettings set org.gnome.desktop.interface color-scheme prefer-dark
|
||||
gsettings set org.gnome.desktop.interface color-scheme prefer-light
|
||||
fi
|
||||
@@ -0,0 +1,68 @@
|
||||
[colors.primary]
|
||||
background = '{{colors.background.default.hex}}'
|
||||
foreground = '{{colors.on_surface.default.hex}}'
|
||||
|
||||
[colors.cursor]
|
||||
text = '{{colors.on_surface.default.hex}}'
|
||||
cursor = '{{colors.on_surface_variant.default.hex}}'
|
||||
|
||||
[colors.vi_mode_cursor]
|
||||
text = '{{colors.background.default.hex}}'
|
||||
cursor = '{{colors.primary.default.hex}}'
|
||||
|
||||
[colors.search.matches]
|
||||
foreground = '{{colors.surface_variant.default.hex}}'
|
||||
background = '{{colors.tertiary.default.hex}}'
|
||||
|
||||
[colors.search.focused_match]
|
||||
foreground = '{{colors.surface_variant.default.hex}}'
|
||||
background = '{{colors.primary.default.hex}}'
|
||||
|
||||
[colors.footer_bar]
|
||||
foreground = '{{colors.surface_variant.default.hex}}'
|
||||
background = '{{colors.inverse_surface.default.hex}}'
|
||||
|
||||
[colors.hints.start]
|
||||
foreground = '{{colors.surface_variant.default.hex}}'
|
||||
background = '{{colors.secondary.default.hex}}'
|
||||
|
||||
[colors.hints.end]
|
||||
foreground = '{{colors.surface_variant.default.hex}}'
|
||||
background = '{{colors.secondary.default.hex}}'
|
||||
|
||||
[colors.selection]
|
||||
text = '{{colors.background.default.hex}}'
|
||||
background = '{{colors.primary.default.hex}}'
|
||||
|
||||
|
||||
[colors.normal]
|
||||
black = '#181818'
|
||||
red = '{{colors.error.default.hex}}'
|
||||
green = '{{colors.primary.default.hex}}'
|
||||
yellow = '{{colors.inverse_primary.default.hex}}'
|
||||
blue = '{{colors.primary.default.hex}}'
|
||||
magenta = '{{colors.tertiary.default.hex}}'
|
||||
cyan = '{{colors.secondary.default.hex}}'
|
||||
white = '#BAC2DE'
|
||||
|
||||
|
||||
[colors.bright]
|
||||
black = '#585B70'
|
||||
red = '#F38BA8'
|
||||
green = '#A6E3A1'
|
||||
yellow = '#F9E2AF'
|
||||
blue = '#89B4FA'
|
||||
magenta = '#F5C2E7'
|
||||
cyan = '#94E2D5'
|
||||
white = '#A6ADC8'
|
||||
|
||||
|
||||
[colors.dim]
|
||||
black = '#45475A'
|
||||
red = '#F38BA8'
|
||||
green = '#A6E3A1'
|
||||
yellow = '#F9E2AF'
|
||||
blue = '#89B4FA'
|
||||
magenta = '#F5C2E7'
|
||||
cyan = '#94E2D5'
|
||||
white = '#BAC2DE'
|
||||
@@ -0,0 +1,7 @@
|
||||
/*
|
||||
* Css Colors
|
||||
* Generated with Matugen
|
||||
*/
|
||||
<* for name, value in colors *>
|
||||
@define-color {{name}} {{value.default.hex}};
|
||||
<* endfor *>
|
||||
@@ -1,51 +0,0 @@
|
||||
{
|
||||
"background": "{{colors.background.default.hex}}",
|
||||
"error": "{{colors.error.default.hex}}",
|
||||
"error_container": "{{colors.error_container.default.hex}}",
|
||||
"inverse_on_surface": "{{colors.inverse_on_surface.default.hex}}",
|
||||
"inverse_primary": "{{colors.inverse_primary.default.hex}}",
|
||||
"inverse_surface": "{{colors.inverse_surface.default.hex}}",
|
||||
"on_background": "{{colors.on_background.default.hex}}",
|
||||
"on_error": "{{colors.on_error.default.hex}}",
|
||||
"on_error_container": "{{colors.on_error_container.default.hex}}",
|
||||
"on_primary": "{{colors.on_primary.default.hex}}",
|
||||
"on_primary_container": "{{colors.on_primary_container.default.hex}}",
|
||||
"on_primary_fixed": "{{colors.on_primary_fixed.default.hex}}",
|
||||
"on_primary_fixed_variant": "{{colors.on_primary_fixed_variant.default.hex}}",
|
||||
"on_secondary": "{{colors.on_secondary.default.hex}}",
|
||||
"on_secondary_container": "{{colors.on_secondary_container.default.hex}}",
|
||||
"on_secondary_fixed": "{{colors.on_secondary_fixed.default.hex}}",
|
||||
"on_secondary_fixed_variant": "{{colors.on_secondary_fixed_variant.default.hex}}",
|
||||
"on_surface": "{{colors.on_surface.default.hex}}",
|
||||
"on_surface_variant": "{{colors.on_surface_variant.default.hex}}",
|
||||
"on_tertiary": "{{colors.on_tertiary.default.hex}}",
|
||||
"on_tertiary_container": "{{colors.on_tertiary_container.default.hex}}",
|
||||
"on_tertiary_fixed": "{{colors.on_tertiary_fixed.default.hex}}",
|
||||
"on_tertiary_fixed_variant": "{{colors.on_tertiary_fixed_variant.default.hex}}",
|
||||
"outline": "{{colors.outline.default.hex}}",
|
||||
"outline_variant": "{{colors.outline_variant.default.hex}}",
|
||||
"primary": "{{colors.primary.default.hex}}",
|
||||
"primary_container": "{{colors.primary_container.default.hex}}",
|
||||
"primary_fixed": "{{colors.primary_fixed.default.hex}}",
|
||||
"primary_fixed_dim": "{{colors.primary_fixed_dim.default.hex}}",
|
||||
"scrim": "{{colors.scrim.default.hex}}",
|
||||
"secondary": "{{colors.secondary.default.hex}}",
|
||||
"secondary_container": "{{colors.secondary_container.default.hex}}",
|
||||
"secondary_fixed": "{{colors.secondary_fixed.default.hex}}",
|
||||
"secondary_fixed_dim": "{{colors.secondary_fixed_dim.default.hex}}",
|
||||
"shadow": "{{colors.shadow.default.hex}}",
|
||||
"surface": "{{colors.surface.default.hex}}",
|
||||
"surface_bright": "{{colors.surface_bright.default.hex}}",
|
||||
"surface_container": "{{colors.surface_container.default.hex}}",
|
||||
"surface_container_high": "{{colors.surface_container_high.default.hex}}",
|
||||
"surface_container_highest": "{{colors.surface_container_highest.default.hex}}",
|
||||
"surface_container_low": "{{colors.surface_container_low.default.hex}}",
|
||||
"surface_container_lowest": "{{colors.surface_container_lowest.default.hex}}",
|
||||
"surface_dim": "{{colors.surface_dim.default.hex}}",
|
||||
"surface_tint": "{{colors.surface_tint.default.hex}}",
|
||||
"surface_variant": "{{colors.surface_variant.default.hex}}",
|
||||
"tertiary": "{{colors.tertiary.default.hex}}",
|
||||
"tertiary_container": "{{colors.tertiary_container.default.hex}}",
|
||||
"tertiary_fixed": "{{colors.tertiary_fixed.default.hex}}",
|
||||
"tertiary_fixed_dim": "{{colors.tertiary_fixed_dim.default.hex}}"
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
/*
|
||||
* GTK colors generated with Matugen
|
||||
* The source template is here: ~/.config/matugen/templates/gtk-3.0/gtk.css
|
||||
*/
|
||||
|
||||
/* Accents */
|
||||
@define-color accent_color {{colors.primary.default.hex}};
|
||||
@define-color accent_fg_color {{colors.on_primary.default.hex}};
|
||||
@define-color accent_bg_color {{colors.primary.default.hex}};
|
||||
@define-color destructive_bg_color {{colors.error_container.default.hex}};
|
||||
@define-color destructive_fg_color {{colors.on_error_container.default.hex}};
|
||||
@define-color destructive_color {{colors.error.default.hex}};
|
||||
@define-color success_bg_color #374B3E;
|
||||
@define-color success_fg_color #D1E9D6;
|
||||
@define-color success_color #B5CCBA;
|
||||
/* Base surfaces */
|
||||
@define-color window_bg_color {{colors.background.default.hex}};
|
||||
@define-color window_fg_color {{colors.on_background.default.hex}};
|
||||
@define-color headerbar_bg_color {{colors.surface_container.default.hex}};
|
||||
@define-color headerbar_backdrop_color {{colors.surface_container.default.hex}};
|
||||
@define-color headerbar_fg_color {{colors.on_surface.default.hex}};
|
||||
@define-color card_bg_color {{colors.surface_container.default.hex}};
|
||||
@define-color card_fg_color {{colors.on_surface.default.hex}};
|
||||
@define-color sidebar_bg_color {{colors.surface_container.default.hex}};
|
||||
@define-color sidebar_fg_color {{colors.on_surface.default.hex}};
|
||||
@define-color secondary_sidebar_bg_color {{colors.surface_container_low.default.hex}};
|
||||
@define-color secondary_sidebar_fg_color {{colors.on_surface.default.hex}};
|
||||
@define-color sidebar_border_color @sidebar_bg_color;
|
||||
@define-color sidebar_backdrop_color @sidebar_bg_color;
|
||||
@define-color view_bg_color {{colors.surface_container_lowest.default.hex}};
|
||||
@define-color view_fg_color {{colors.on_surface.default.hex}};
|
||||
@define-color overview_bg_color {{colors.surface_container_lowest.default.hex}};
|
||||
@define-color overview_fg_color {{colors.on_surface.default.hex}};
|
||||
/* Popups */
|
||||
@define-color popover_bg_color {{colors.surface_container_highest.default.hex}};
|
||||
@define-color popover_fg_color {{colors.on_surface.default.hex}};
|
||||
@define-color dialog_bg_color {{colors.surface_container_high.default.hex}};
|
||||
@define-color dialog_fg_color {{colors.on_surface.default.hex}};
|
||||
@@ -1,541 +0,0 @@
|
||||
/*
|
||||
* GTK colors generated with Matugen
|
||||
* The source template is here: ~/.config/matugen/templates/gtk-4.0/gtk.css
|
||||
*/
|
||||
|
||||
@media (prefers-color-scheme: light) {
|
||||
/* Accents */
|
||||
@define-color accent_color {{colors.primary.light.hex}};
|
||||
@define-color accent_hover_color rgba({{colors.primary.light.red}}, {{colors.primary.light.green}}, {{colors.primary.light.blue}}, 0.08);
|
||||
@define-color accent_vibrant_hover_color rgba({{colors.primary.light.red}}, {{colors.primary.light.green}}, {{colors.primary.light.blue}}, 0.18);
|
||||
@define-color accent_active_color rgba({{colors.primary.light.red}}, {{colors.primary.light.green}}, {{colors.primary.light.blue}}, 0.1);
|
||||
@define-color accent_vibrant_active_color rgba({{colors.primary.light.red}}, {{colors.primary.light.green}}, {{colors.primary.light.blue}}, 0.26);
|
||||
@define-color accent_fg_color {{colors.on_primary.light.hex}};
|
||||
@define-color accent_bg_color {{colors.primary.light.hex}};
|
||||
@define-color destructive_bg_color {{colors.error_container.light.hex}};
|
||||
@define-color destructive_fg_color {{colors.on_error_container.light.hex}};
|
||||
@define-color destructive_color {{colors.error.light.hex}};
|
||||
@define-color success_bg_color #B5CCBA;
|
||||
@define-color success_fg_color #213528;
|
||||
@define-color success_color #374B3E;
|
||||
/* Base surfaces */
|
||||
@define-color window_bg_color {{colors.background.light.hex}};
|
||||
@define-color window_fg_color {{colors.on_background.light.hex}};
|
||||
@define-color headerbar_bg_color {{colors.surface_container.light.hex}};
|
||||
@define-color headerbar_backdrop_color {{colors.surface_container.light.hex}};
|
||||
@define-color headerbar_fg_color {{colors.on_surface.light.hex}};
|
||||
@define-color card_bg_color {{colors.surface_container.light.hex}};
|
||||
@define-color card_fg_color {{colors.on_surface.light.hex}};
|
||||
@define-color sidebar_bg_color {{colors.background.light.hex}};
|
||||
@define-color sidebar_fg_color {{colors.on_surface.light.hex}};
|
||||
@define-color sidebar_row_active_bg_color {{colors.secondary_container.light.hex}};
|
||||
@define-color sidebar_row_active_fg_color {{colors.on_secondary_container.light.hex}};
|
||||
@define-color secondary_sidebar_bg_color {{colors.surface_container_low.light.hex}};
|
||||
@define-color secondary_sidebar_backdrop_color {{colors.surface_container_low.light.hex}};
|
||||
@define-color secondary_sidebar_fg_color {{colors.on_surface_variant.light.hex}};
|
||||
@define-color sidebar_border_color @sidebar_bg_color;
|
||||
@define-color sidebar_backdrop_color @sidebar_bg_color;
|
||||
@define-color view_bg_color {{colors.surface_container_lowest.light.hex}};
|
||||
@define-color view_fg_color {{colors.on_surface.light.hex}};
|
||||
@define-color overview_bg_color {{colors.surface_container_lowest.light.hex}};
|
||||
@define-color overview_fg_color {{colors.on_surface.light.hex}};
|
||||
/* Popups */
|
||||
@define-color popover_bg_color {{colors.surface_container_highest.light.hex}};
|
||||
@define-color popover_fg_color {{colors.on_surface.light.hex}};
|
||||
@define-color popover_fg_hover_color rgba({{colors.on_surface.light.red}}, {{colors.on_surface.light.green}}, {{colors.on_surface.light.blue}}, 0.08);
|
||||
@define-color dialog_bg_color {{colors.surface_container_high.light.hex}};
|
||||
@define-color dialog_fg_color {{colors.on_surface.light.hex}};
|
||||
@define-color thumbnail_bg_color {{colors.surface_container_high.light.hex}};
|
||||
@define-color thumbnail_fg_color {{colors.on_surface.light.hex}};
|
||||
|
||||
/* Material */
|
||||
@define-color inverse_on_surface {{colors.inverse_on_surface.light.hex}};
|
||||
@define-color inverse_primary {{colors.inverse_primary.light.hex}};
|
||||
@define-color inverse_surface {{colors.inverse_surface.light.hex}};
|
||||
@define-color surface_container_highest {{colors.surface_container_highest.light.hex}};
|
||||
@define-color surface_container_high {{colors.surface_container_high.light.hex}};
|
||||
@define-color on_surface_variant {{colors.on_surface_variant.light.hex}};
|
||||
@define-color surface_variant {{colors.surface_variant.light.hex}};
|
||||
|
||||
@define-color outline {{colors.outline.light.hex}};
|
||||
|
||||
/* Material state layers */
|
||||
@define-color inverse_on_surface_hover rgba({{colors.inverse_on_surface.light.red}}, {{colors.inverse_on_surface.light.green}}, {{colors.inverse_on_surface.light.blue}}, 0.08);
|
||||
@define-color inverse_on_surface_active rgba({{colors.inverse_on_surface.light.red}}, {{colors.inverse_on_surface.light.green}}, {{colors.inverse_on_surface.light.blue}}, 0.18);
|
||||
@define-color inverse_primary_hover rgba({{colors.inverse_primary.light.red}}, {{colors.inverse_primary.light.green}}, {{colors.inverse_primary.light.blue}}, 0.08);
|
||||
@define-color inverse_primary_active rgba({{colors.inverse_primary.light.red}}, {{colors.inverse_primary.light.green}}, {{colors.inverse_primary.light.blue}}, 0.18);
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
/* Accents */
|
||||
@define-color accent_color {{colors.primary.dark.hex}};
|
||||
@define-color accent_hover_color rgba({{colors.primary.dark.red}}, {{colors.primary.dark.green}}, {{colors.primary.dark.blue}}, 0.08);
|
||||
@define-color accent_vibrant_hover_color rgba({{colors.primary.dark.red}}, {{colors.primary.dark.green}}, {{colors.primary.dark.blue}}, 0.18);
|
||||
@define-color accent_active_color rgba({{colors.primary.dark.red}}, {{colors.primary.dark.green}}, {{colors.primary.dark.blue}}, 0.1);
|
||||
@define-color accent_vibrant_active_color rgba({{colors.primary.dark.red}}, {{colors.primary.dark.green}}, {{colors.primary.dark.blue}}, 0.2);
|
||||
@define-color accent_fg_color {{colors.on_primary.dark.hex}};
|
||||
@define-color accent_bg_color {{colors.primary.dark.hex}};
|
||||
@define-color destructive_bg_color {{colors.error_container.dark.hex}};
|
||||
@define-color destructive_fg_color {{colors.on_error_container.dark.hex}};
|
||||
@define-color destructive_color {{colors.error.dark.hex}};
|
||||
@define-color success_bg_color #374B3E;
|
||||
@define-color success_fg_color #D1E9D6;
|
||||
@define-color success_color #B5CCBA;
|
||||
/* Base surfaces */
|
||||
@define-color window_bg_color {{colors.background.dark.hex}};
|
||||
@define-color window_fg_color {{colors.on_background.dark.hex}};
|
||||
@define-color headerbar_bg_color {{colors.surface_container.dark.hex}};
|
||||
@define-color headerbar_backdrop_color {{colors.surface_container.dark.hex}};
|
||||
@define-color headerbar_fg_color {{colors.on_surface.dark.hex}};
|
||||
@define-color card_bg_color {{colors.surface_container.dark.hex}};
|
||||
@define-color card_fg_color {{colors.on_surface.dark.hex}};
|
||||
@define-color sidebar_bg_color {{colors.background.dark.hex}};
|
||||
@define-color sidebar_fg_color {{colors.on_surface.dark.hex}};
|
||||
@define-color sidebar_row_active_bg_color {{colors.secondary_container.dark.hex}};
|
||||
@define-color sidebar_row_active_fg_color {{colors.on_secondary_container.dark.hex}};
|
||||
@define-color secondary_sidebar_bg_color {{colors.surface_container_low.dark.hex}};
|
||||
@define-color secondary_sidebar_backdrop_color {{colors.surface_container_low.dark.hex}};
|
||||
@define-color secondary_sidebar_fg_color {{colors.on_surface_variant.dark.hex}};
|
||||
@define-color sidebar_border_color @sidebar_bg_color;
|
||||
@define-color sidebar_backdrop_color @sidebar_bg_color;
|
||||
@define-color view_bg_color {{colors.surface_container_lowest.dark.hex}};
|
||||
@define-color view_fg_color {{colors.on_surface.dark.hex}};
|
||||
@define-color overview_bg_color {{colors.surface_container_lowest.dark.hex}};
|
||||
@define-color overview_fg_color {{colors.on_surface.dark.hex}};
|
||||
/* Popups */
|
||||
@define-color popover_bg_color {{colors.surface_container_highest.dark.hex}};
|
||||
@define-color popover_fg_color {{colors.on_surface.dark.hex}};
|
||||
@define-color popover_fg_hover_color rgba({{colors.on_surface.dark.red}}, {{colors.on_surface.dark.green}}, {{colors.on_surface.dark.blue}}, 0.08);
|
||||
@define-color dialog_bg_color {{colors.surface_container_high.dark.hex}};
|
||||
@define-color dialog_fg_color {{colors.on_surface.dark.hex}};
|
||||
@define-color thumbnail_bg_color {{colors.surface_container_high.dark.hex}};
|
||||
@define-color thumbnail_fg_color {{colors.on_surface.dark.hex}};
|
||||
|
||||
/* Material */
|
||||
@define-color inverse_on_surface {{colors.inverse_on_surface.dark.hex}};
|
||||
@define-color inverse_primary {{colors.inverse_primary.dark.hex}};
|
||||
@define-color inverse_surface {{colors.inverse_surface.dark.hex}};
|
||||
@define-color surface_container_highest {{colors.surface_container_highest.dark.hex}};
|
||||
@define-color surface_container_high {{colors.surface_container_high.dark.hex}};
|
||||
@define-color on_surface_variant {{colors.on_surface_variant.dark.hex}};
|
||||
@define-color surface_variant {{colors.surface_variant.dark.hex}};
|
||||
|
||||
@define-color outline {{colors.outline.dark.hex}};
|
||||
|
||||
/* Material state layers */
|
||||
@define-color inverse_on_surface_hover rgba({{colors.inverse_on_surface.dark.red}}, {{colors.inverse_on_surface.dark.green}}, {{colors.inverse_on_surface.dark.blue}}, 0.08);
|
||||
@define-color inverse_on_surface_active rgba({{colors.inverse_on_surface.dark.red}}, {{colors.inverse_on_surface.dark.green}}, {{colors.inverse_on_surface.dark.blue}}, 0.18);
|
||||
@define-color inverse_primary_hover rgba({{colors.inverse_primary.dark.red}}, {{colors.inverse_primary.dark.green}}, {{colors.inverse_primary.dark.blue}}, 0.08);
|
||||
@define-color inverse_primary_active rgba({{colors.inverse_primary.dark.red}}, {{colors.inverse_primary.dark.green}}, {{colors.inverse_primary.dark.blue}}, 0.18);
|
||||
}
|
||||
|
||||
* {
|
||||
caret-color: @accent_color;
|
||||
}
|
||||
|
||||
window {
|
||||
background: @window_bg_color;
|
||||
}
|
||||
|
||||
.text-button {
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
.text-button,
|
||||
.text-button * {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
splitbutton {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
splitbutton button {
|
||||
border-top-left-radius: 999px;
|
||||
border-bottom-left-radius: 999px;
|
||||
border-top-right-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
}
|
||||
|
||||
splitbutton separator {
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
splitbutton menubutton {
|
||||
border-top-left-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-top-right-radius: 999px;
|
||||
border-bottom-right-radius: 999px;
|
||||
}
|
||||
|
||||
.popup-menu-item {
|
||||
background-color: transparent;
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
#NautilusPathBar #NautilusPathButton *,
|
||||
.nautilus-pathbar .nautilus-path-button * {
|
||||
color: @sidebar_row_active_fg_color;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
#NautilusPathBar #NautilusPathButton,
|
||||
.nautilus-pathbar .nautilus-path-button {
|
||||
background: @accent_active_color;
|
||||
border-radius: 4px;
|
||||
margin: 0;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
#NautilusPathBar #NautilusPathButton:hover,
|
||||
.nautilus-pathbar .nautilus-path-button:hover {
|
||||
background: @accent_vibrant_hover_color;
|
||||
}
|
||||
|
||||
#NautilusPathBar #NautilusPathButton:active,
|
||||
.nautilus-pathbar .nautilus-path-button:active {
|
||||
background: @accent_vibrant_active_color;
|
||||
}
|
||||
|
||||
#NautilusPathButton,
|
||||
.nautilus-pathbar {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
#NautilusPathBar box box:first-child #NautilusPathButton,
|
||||
.nautilus-pathbar box box:first-child .nautilus-path-button {
|
||||
border-radius: 24px 4px 4px 24px;
|
||||
}
|
||||
|
||||
#NautilusPathBar box box:last-child #NautilusPathButton,
|
||||
.nautilus-pathbar box box:last-child .nautilus-path-button {
|
||||
border-radius: 4px 24px 24px 4px;
|
||||
}
|
||||
|
||||
#NautilusPathBar #NautilusPathButton.current-dir.current-dir,
|
||||
.nautilus-pathbar .nautilus-path-button.current-dir.current-dir {
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
#NautilusPathBar .dim-label,
|
||||
.nautilus-pathbar .dim-label {
|
||||
font-size: 0;
|
||||
}
|
||||
|
||||
#NautilusPathBar button .dim-label,
|
||||
.nautilus-pathbar button .dim-label {
|
||||
font-size: 14px;
|
||||
opacity: 100%;
|
||||
}
|
||||
|
||||
#NautilusPathBar button,
|
||||
.nautilus-pathbar button {
|
||||
border-radius: 8px;
|
||||
}
|
||||
#NautilusPathBar button:checked,
|
||||
.nautilus-pathbar button:checked {
|
||||
background: @accent_vibrant_hover_color;
|
||||
}
|
||||
|
||||
headerbar button {
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
headerbar >windowhandle box stack > box:nth-child(2) {
|
||||
background: @accent_active_color;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.nautilus-list-view,
|
||||
.nautilus-grid-view {
|
||||
background: @secondary_sidebar_bg_color;
|
||||
border-radius: 16px;
|
||||
}
|
||||
|
||||
.navigation-sidebar row * {
|
||||
color: @sidebar_fg_color;
|
||||
font-weight: 500;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.navigation-sidebar row {
|
||||
border-radius: 999px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.navigation-sidebar row:hover {
|
||||
background: @accent_hover_color;
|
||||
}
|
||||
|
||||
.navigation-sidebar row:active {
|
||||
background: @accent_active_color;
|
||||
}
|
||||
|
||||
.navigation-sidebar row:selected {
|
||||
background: @sidebar_row_active_bg_color;
|
||||
}
|
||||
|
||||
.navigation-sidebar row:selected * {
|
||||
color: @sidebar_row_active_fg_color;
|
||||
}
|
||||
|
||||
banner widget {
|
||||
border-radius: 16px 0 0 16px;
|
||||
margin-bottom: 8px;
|
||||
background-color: @secondary_sidebar_bg_color;
|
||||
}
|
||||
|
||||
.boxed-list {
|
||||
box-shadow: none;
|
||||
background-color: @window_bg_color;
|
||||
}
|
||||
|
||||
.boxed-list row {
|
||||
background: @card_bg_color;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
.boxed-list row.activatable:hover {
|
||||
background-color: @thumbnail_bg_color;
|
||||
}
|
||||
|
||||
.boxed-list row.activatable:active {
|
||||
background-color: @popover_bg_color;
|
||||
}
|
||||
|
||||
.horizontal>listview>row {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.boxed-list row:insensitive {
|
||||
background-color: @card_bg_color;
|
||||
}
|
||||
|
||||
.text-button.toggle {
|
||||
border-radius: 4px;
|
||||
background-color: @surface_container_highest;
|
||||
margin-left: 2px;
|
||||
}
|
||||
|
||||
.text-button.toggle:hover {
|
||||
background-color: @surface_variant;
|
||||
}
|
||||
|
||||
.text-button.toggle:active {
|
||||
background-color: @surface_container_highest;
|
||||
}
|
||||
|
||||
.text-button.toggle * {
|
||||
color: @on_surface_variant;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.boxed-list row:first-child {
|
||||
border-radius: 16px 16px 4px 4px;
|
||||
}
|
||||
|
||||
.boxed-list row:last-child {
|
||||
border-radius: 4px 4px 16px 16px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.text-button.toggle:first-child {
|
||||
border-radius: 16px 4px 4px 16px;
|
||||
}
|
||||
|
||||
.text-button.toggle:last-child {
|
||||
border-radius: 4px 16px 16px 4px;
|
||||
}
|
||||
|
||||
.boxed-list row:first-child:last-child,
|
||||
.text-button.toggle:first-child:last-child {
|
||||
border-radius: 16px;
|
||||
}
|
||||
|
||||
.text-button.toggle:checked {
|
||||
background-color: @accent_bg_color;
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
.text-button.toggle:checked * {
|
||||
color: @accent_fg_color;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
button.back {
|
||||
border-radius: 999px;
|
||||
background-color: @accent_hover_color;
|
||||
padding-left: 4px;
|
||||
padding-right: 6px;
|
||||
}
|
||||
|
||||
button.back * {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
button.back:hover {
|
||||
background-color: @accent_hover_color;
|
||||
}
|
||||
|
||||
button.back:active {
|
||||
background-color: @accent_active_color;
|
||||
}
|
||||
|
||||
/* switch */
|
||||
|
||||
switch {
|
||||
background: @secondary_sidebar_bg_color;
|
||||
border: @outline 2px solid;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
switch:checked {
|
||||
background: @accent_color;
|
||||
border-color: @accent_color;
|
||||
}
|
||||
|
||||
switch slider {
|
||||
background: @outline;
|
||||
margin: 3px;
|
||||
min-width: 0;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
switch:checked slider {
|
||||
background: @accent_fg_color;
|
||||
outline: transparent 2px solid;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
/* toast */
|
||||
|
||||
toast {
|
||||
border-radius: 999px;
|
||||
padding: 6px 6px 6px 10px;
|
||||
background-color: @inverse_surface;
|
||||
color: @inverse_on_surface;
|
||||
}
|
||||
|
||||
toast .heading {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
toast button {
|
||||
background-color: transparent;
|
||||
color: @inverse_primary;
|
||||
}
|
||||
|
||||
toast button:hover {
|
||||
background-color: @inverse_primary_hover;
|
||||
}
|
||||
|
||||
toast button:active {
|
||||
background-color: @inverse_primary_active;
|
||||
}
|
||||
|
||||
toast button:last-child {
|
||||
color: @inverse_on_surface;
|
||||
}
|
||||
|
||||
toast button:last-child:hover {
|
||||
background-color: @inverse_on_surface_hover;
|
||||
}
|
||||
|
||||
toast button:last-child:active {
|
||||
background-color: @inverse_on_surface_active;
|
||||
}
|
||||
|
||||
.collapse-spacing.vertical {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
tabbox {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
tabbox tabboxchild tab,
|
||||
tabbox tabboxchild {
|
||||
background: transparent;
|
||||
padding: 0 8px 3px;
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
tabbox tabboxchild tab {
|
||||
padding: 3px 8px;
|
||||
}
|
||||
|
||||
tab:hover {
|
||||
background: @accent_hover_color;
|
||||
}
|
||||
|
||||
tab:active,
|
||||
tab:selected {
|
||||
background: @accent_active_color;
|
||||
}
|
||||
|
||||
tab .tab-title {
|
||||
padding: 0 12px;
|
||||
color: @secondary_sidebar_fg_color;
|
||||
}
|
||||
|
||||
tab .tab-title label {
|
||||
border: none;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
tab:selected .tab-title label {
|
||||
padding: 6px 0;
|
||||
color: @accent_color;
|
||||
}
|
||||
|
||||
/* popup menu */
|
||||
|
||||
popover listview.view row,
|
||||
popover listview.view row:first-child,
|
||||
popover listview.view row:last-child {
|
||||
background: transparent;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
popover contents,
|
||||
popover arrow {
|
||||
background: @secondary_sidebar_bg_color;
|
||||
}
|
||||
|
||||
popover listview.view row:hover {
|
||||
background: @popover_fg_hover_color;
|
||||
}
|
||||
|
||||
popover listview.view row:active {
|
||||
background: @popover_fg_active_color;
|
||||
}
|
||||
|
||||
modelbutton {
|
||||
padding: 2px 10px;
|
||||
}
|
||||
|
||||
modelbutton * {
|
||||
color: @popover_fg_color;
|
||||
}
|
||||
|
||||
modelbutton:hover {
|
||||
background-color: @popover_fg_hover_color;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
background-color: @inverse_surface;
|
||||
color: @inverse_on_surface;
|
||||
font-size: 11px;
|
||||
padding: 5px 9px;
|
||||
}
|
||||
|
||||
/* search */
|
||||
|
||||
.entry-completion.entry-completion.entry-completion contents {
|
||||
padding: 0;
|
||||
}
|
||||
.image-button.flat arrow {
|
||||
background: transparent;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* GTK Colors
|
||||
* Generated with Matugen
|
||||
*/
|
||||
|
||||
@define-color accent_color {{colors.primary_fixed_dim.default.hex}};
|
||||
@define-color accent_fg_color {{colors.on_primary_fixed.default.hex}};
|
||||
@define-color accent_bg_color {{colors.primary_fixed_dim.default.hex}};
|
||||
@define-color window_bg_color {{colors.surface_dim.default.hex}};
|
||||
@define-color window_fg_color {{colors.on_surface.default.hex}};
|
||||
@define-color headerbar_bg_color {{colors.surface_dim.default.hex}};
|
||||
@define-color headerbar_fg_color {{colors.on_surface.default.hex}};
|
||||
@define-color popover_bg_color {{colors.surface_dim.default.hex}};
|
||||
@define-color popover_fg_color {{colors.on_surface.default.hex}};
|
||||
@define-color view_bg_color {{colors.surface.default.hex}};
|
||||
@define-color view_fg_color {{colors.on_surface.default.hex}};
|
||||
@define-color card_bg_color {{colors.surface.default.hex}};
|
||||
@define-color card_fg_color {{colors.on_surface.default.hex}};
|
||||
@define-color sidebar_bg_color @window_bg_color;
|
||||
@define-color sidebar_fg_color @window_fg_color;
|
||||
@define-color sidebar_border_color @window_bg_color;
|
||||
@define-color sidebar_backdrop_color @window_bg_color;
|
||||
@@ -1,24 +1,46 @@
|
||||
hl.config({
|
||||
general = {
|
||||
col = {
|
||||
active_border = "rgba({{colors.primary.default.hex_stripped}}cc) rgba({{colors.secondary.default.hex_stripped}}cc) rgba({{colors.tertiary.default.hex_stripped}}cc) 45deg",
|
||||
active_border = {
|
||||
colors = {
|
||||
"rgba({{colors.primary.default.hex_stripped}}cc)",
|
||||
"rgba({{colors.secondary.default.hex_stripped}}cc)",
|
||||
"rgba({{colors.tertiary.default.hex_stripped}}cc)",
|
||||
},
|
||||
angle = 45,
|
||||
},
|
||||
inactive_border = "rgba({{colors.surface_container_low.default.hex_stripped}}33)",
|
||||
},
|
||||
},
|
||||
group = {
|
||||
col = {
|
||||
active_border = "rgba({{colors.outline_variant.default.hex_stripped}}77)",
|
||||
inactive_border = "rgba({{colors.surface_container_high.default.hex_stripped}}33)",
|
||||
border_active = "rgba({{colors.secondary.default.hex_stripped}}cc)",
|
||||
border_inactive = "rgba({{colors.surface_container_high.default.hex_stripped}}33)",
|
||||
border_locked_active = "rgba({{colors.tertiary.default.hex_stripped}}cc)",
|
||||
border_locked_inactive = "rgba({{colors.surface_container_high.default.hex_stripped}}33)",
|
||||
},
|
||||
groupbar = {
|
||||
font_family = "Comfortaa",
|
||||
height = 13,
|
||||
font_size = 12,
|
||||
text_color = "rgba({{colors.on_secondary.default.hex_stripped}}ff)",
|
||||
text_color_inactive = "rgba({{colors.on_surface.default.hex_stripped}}ff)",
|
||||
text_color_locked_active = "rgba({{colors.on_error.default.hex_stripped}}ff)",
|
||||
text_color_locked_inactive = "rgba({{colors.on_surface.default.hex_stripped}}ff)",
|
||||
indicator_gap = 0,
|
||||
indicator_height = 3,
|
||||
rounding = 3,
|
||||
col = {
|
||||
active = "rgba({{colors.secondary.default.hex_stripped}}ff)",
|
||||
inactive = "rgba({{colors.surface_container_low.default.hex_stripped}}aa)",
|
||||
locked_inactive = "rgba({{colors.surface_container_high.default.hex_stripped}}ff)",
|
||||
locked_active = "rgba({{colors.error.default.hex_stripped}}aa)",
|
||||
},
|
||||
},
|
||||
},
|
||||
decoration = {
|
||||
shadow = {
|
||||
color = "rgba({{colors.shadow.default.hex_stripped}}20)",
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
match = { pin = 1 },
|
||||
border_color = "rgba({{colors.primary.default.hex_stripped}}AA) rgba({{colors.primary.default.hex_stripped}}77)",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
wallpaper {
|
||||
monitor =
|
||||
path = {{image}}
|
||||
fit_mode = cover
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
# This configuration is generated by matugen
|
||||
# Changing these variables with matugen still enabled will overwrite them.
|
||||
|
||||
background = rgba({{colors.background.default.hex_stripped}}FF)
|
||||
base = rgba({{colors.surface.default.hex_stripped}}FF)
|
||||
alternate_base = rgba({{colors.surface.default.hex_stripped | lighten: -5.0}}FF)
|
||||
text = rgba({{colors.on_background.default.hex_stripped}}FF)
|
||||
accent = rgba({{colors.primary.default.hex_stripped}}FF)
|
||||
accent_secondary = rgba({{colors.secondary.default.hex_stripped}}FF)
|
||||
font_family = Comfortaa
|
||||
font_family_monospace = Source Code Pro
|
||||
font_size = 13
|
||||
h1_size = 22
|
||||
h2_size = 18
|
||||
h3_size = 15
|
||||
@@ -0,0 +1,27 @@
|
||||
# --- Main Colors ---
|
||||
background {{ colors.surface.default.hex | lighten: -2.5 }}
|
||||
foreground {{ colors.on_surface.default.hex }}
|
||||
cursor {{ colors.on_surface.default.hex }}
|
||||
cursor_text_color {{ colors.surface.default.hex }}
|
||||
|
||||
selection_background {{ colors.secondary_container.default.hex }}
|
||||
selection_foreground {{ colors.on_secondary_container.default.hex }}
|
||||
|
||||
url_color {{ colors.tertiary.default.hex }}
|
||||
|
||||
# --- UI Elements ---
|
||||
active_tab_foreground {{ colors.on_primary.default.hex }}
|
||||
active_tab_background {{ colors.primary.default.hex }}
|
||||
inactive_tab_foreground {{ colors.on_primary_container.default.hex }}
|
||||
inactive_tab_background {{ colors.primary_container.default.hex }}
|
||||
|
||||
active_border_color {{ colors.primary.default.hex }}
|
||||
inactive_border_color {{ colors.outline.default.hex }}
|
||||
|
||||
# --- Marks ---
|
||||
mark1_foreground {{ colors.on_primary_fixed.default.hex }}
|
||||
mark1_background {{ colors.primary_fixed.default.hex }}
|
||||
mark2_foreground {{ colors.on_secondary_fixed.default.hex }}
|
||||
mark2_background {{ colors.secondary_fixed.default.hex }}
|
||||
mark3_foreground {{ colors.on_tertiary_fixed.default.hex }}
|
||||
mark3_background {{ colors.tertiary_fixed.default.hex }}
|
||||
@@ -0,0 +1,149 @@
|
||||
[ColorEffects:Disabled]
|
||||
Color={{colors.surface_dim.default.hex}}
|
||||
ColorAmount=0
|
||||
ColorEffect=0
|
||||
ContrastAmount=0.65
|
||||
ContrastEffect=1
|
||||
IntensityAmount=0.1
|
||||
IntensityEffect=2
|
||||
|
||||
[ColorEffects:Inactive]
|
||||
ChangeSelectionColor=true
|
||||
Color={{colors.surface_variant.default.hex}}
|
||||
ColorAmount=0.025
|
||||
ColorEffect=2
|
||||
ContrastAmount=0.1
|
||||
ContrastEffect=2
|
||||
Enable=false
|
||||
IntensityAmount=0
|
||||
IntensityEffect=0
|
||||
|
||||
[Colors:Button]
|
||||
BackgroundAlternate={{colors.surface_container_low.default.hex}}
|
||||
BackgroundNormal={{colors.surface_container_high.default.hex}}
|
||||
DecorationFocus={{colors.primary.default.hex}}
|
||||
DecorationHover={{colors.primary.default.hex}}
|
||||
ForegroundActive={{colors.primary.default.hex}}
|
||||
ForegroundInactive={{colors.on_surface_variant.default.hex}}
|
||||
ForegroundLink={{colors.secondary.default.hex}}
|
||||
ForegroundNegative={{colors.error.default.hex}}
|
||||
ForegroundNeutral={{colors.tertiary.default.hex}}
|
||||
ForegroundNormal={{colors.on_surface.default.hex}}
|
||||
ForegroundPositive={{colors.tertiary_fixed.default.hex}}
|
||||
ForegroundVisited={{colors.on_secondary_container.default.hex}}
|
||||
|
||||
[Colors:Complementary]
|
||||
BackgroundAlternate={{colors.surface_container_low.default.hex}}
|
||||
BackgroundNormal={{colors.surface.default.hex}}
|
||||
DecorationFocus={{colors.primary.default.hex}}
|
||||
DecorationHover={{colors.primary.default.hex}}
|
||||
ForegroundActive={{colors.primary.default.hex}}
|
||||
ForegroundInactive={{colors.on_surface_variant.default.hex}}
|
||||
ForegroundLink={{colors.secondary.default.hex}}
|
||||
ForegroundNegative={{colors.error.default.hex}}
|
||||
ForegroundNeutral={{colors.tertiary.default.hex}}
|
||||
ForegroundNormal={{colors.on_primary_container.default.hex}}
|
||||
ForegroundPositive={{colors.tertiary_fixed.default.hex}}
|
||||
ForegroundVisited={{colors.on_secondary_container.default.hex}}
|
||||
|
||||
[Colors:Header]
|
||||
BackgroundAlternate={{colors.surface.default.hex}}
|
||||
BackgroundNormal={{colors.surface_container.default.hex}}
|
||||
DecorationFocus={{colors.primary.default.hex}}
|
||||
DecorationHover={{colors.primary.default.hex}}
|
||||
ForegroundActive={{colors.primary.default.hex}}
|
||||
ForegroundInactive={{colors.on_surface_variant.default.hex}}
|
||||
ForegroundLink={{colors.secondary.default.hex}}
|
||||
ForegroundNegative={{colors.error.default.hex}}
|
||||
ForegroundNeutral={{colors.tertiary.default.hex}}
|
||||
ForegroundNormal={{colors.on_surface.default.hex}}
|
||||
ForegroundPositive={{colors.tertiary_fixed.default.hex}}
|
||||
ForegroundVisited={{colors.on_secondary_container.default.hex}}
|
||||
|
||||
[Colors:Header][Inactive]
|
||||
BackgroundAlternate={{colors.surface_container.default.hex}}
|
||||
BackgroundNormal={{colors.surface_container.default.hex}}
|
||||
DecorationFocus={{colors.primary.default.hex}}
|
||||
DecorationHover={{colors.primary.default.hex}}
|
||||
ForegroundActive={{colors.primary.default.hex}}
|
||||
ForegroundInactive={{colors.on_surface_variant.default.hex}}
|
||||
ForegroundLink={{colors.secondary.default.hex}}
|
||||
ForegroundNegative={{colors.error.default.hex}}
|
||||
ForegroundNeutral={{colors.tertiary.default.hex}}
|
||||
ForegroundNormal={{colors.on_surface.default.hex}}
|
||||
ForegroundPositive={{colors.tertiary_fixed.default.hex}}
|
||||
ForegroundVisited={{colors.on_secondary_container.default.hex}}
|
||||
|
||||
[Colors:Selection]
|
||||
BackgroundAlternate={{colors.surface_container_low.default.hex}}
|
||||
BackgroundNormal={{colors.primary.default.hex}}
|
||||
DecorationFocus={{colors.primary.default.hex}}
|
||||
DecorationHover={{colors.primary.default.hex}}
|
||||
ForegroundActive={{colors.on_primary.default.hex}}
|
||||
ForegroundInactive={{colors.on_surface_variant.default.hex}}
|
||||
ForegroundLink={{colors.secondary_fixed.default.hex}}
|
||||
ForegroundNegative={{colors.error_container.default.hex}}
|
||||
ForegroundNeutral={{colors.tertiary_fixed_dim.default.hex}}
|
||||
ForegroundNormal={{colors.secondary_fixed.default.hex}}
|
||||
ForegroundPositive={{colors.tertiary_container.default.hex}}
|
||||
ForegroundVisited={{colors.on_secondary_container.default.hex}}
|
||||
|
||||
[Colors:Tooltip]
|
||||
BackgroundAlternate={{colors.surface.default.hex}}
|
||||
BackgroundNormal={{colors.surface_container.default.hex}}
|
||||
DecorationFocus={{colors.primary.default.hex}}
|
||||
DecorationHover={{colors.primary.default.hex}}
|
||||
ForegroundActive={{colors.primary.default.hex}}
|
||||
ForegroundInactive={{colors.on_surface_variant.default.hex}}
|
||||
ForegroundLink={{colors.secondary.default.hex}}
|
||||
ForegroundNegative={{colors.error.default.hex}}
|
||||
ForegroundNeutral={{colors.tertiary.default.hex}}
|
||||
ForegroundNormal={{colors.on_background.default.hex}}
|
||||
ForegroundPositive={{colors.tertiary_fixed.default.hex}}
|
||||
ForegroundVisited={{colors.on_secondary_container.default.hex}}
|
||||
|
||||
[Colors:View]
|
||||
BackgroundAlternate={{colors.surface_container.default.hex}}
|
||||
BackgroundNormal={{colors.background.default.hex}}
|
||||
DecorationFocus={{colors.primary_container.default.hex}}
|
||||
DecorationHover={{colors.on_primary.default.hex}}
|
||||
ForegroundActive={{colors.primary.default.hex}}
|
||||
ForegroundInactive={{colors.on_surface_variant.default.hex}}
|
||||
ForegroundLink={{colors.secondary.default.hex}}
|
||||
ForegroundNegative={{colors.error.default.hex}}
|
||||
ForegroundNeutral={{colors.tertiary.default.hex}}
|
||||
ForegroundNormal={{colors.on_background.default.hex}}
|
||||
ForegroundPositive={{colors.tertiary_fixed.default.hex}}
|
||||
ForegroundVisited={{colors.on_secondary_container.default.hex}}
|
||||
|
||||
[Colors:Window]
|
||||
BackgroundAlternate={{colors.primary_container.default.hex}}
|
||||
BackgroundNormal={{colors.surface_container.default.hex}}
|
||||
DecorationFocus={{colors.primary.default.hex}}
|
||||
DecorationHover={{colors.primary.default.hex}}
|
||||
ForegroundActive={{colors.primary.default.hex}}
|
||||
ForegroundInactive={{colors.on_surface_variant.default.hex}}
|
||||
ForegroundLink={{colors.secondary.default.hex}}
|
||||
ForegroundNegative={{colors.error.default.hex}}
|
||||
ForegroundNeutral={{colors.tertiary.default.hex}}
|
||||
ForegroundNormal={{colors.on_background.default.hex}}
|
||||
ForegroundPositive={{colors.tertiary_fixed.default.hex}}
|
||||
ForegroundVisited={{colors.on_secondary_container.default.hex}}
|
||||
|
||||
[General]
|
||||
ColorScheme=Matugen
|
||||
Name=Matugen
|
||||
|
||||
[Appearance]
|
||||
color_scheme=Matugen
|
||||
|
||||
[KDE]
|
||||
contrast=4
|
||||
|
||||
[WM]
|
||||
activeBackground={{colors.primary_container.default.hex}}
|
||||
activeBlend={{colors.on_primary_container.default.hex}}
|
||||
activeForeground={{colors.on_primary_container.default.hex}}
|
||||
inactiveBackground={{colors.surface.default.hex}}
|
||||
inactiveBlend={{colors.on_surface_variant.default.hex}}
|
||||
inactiveForeground={{colors.on_surface_variant.default.hex}}
|
||||
@@ -0,0 +1,82 @@
|
||||
* {
|
||||
background: {{colors.background.default.hex}};
|
||||
background-selected: {{colors.primary.default.hex}};
|
||||
foreground: {{colors.on_background.default.hex}};
|
||||
foreground-selected: {{colors.on_primary.default.hex}};
|
||||
accent: {{colors.secondary.default.hex}};
|
||||
inactive: {{colors.outline.default.hex}};
|
||||
spacing: 2;
|
||||
width: 30em;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#window {
|
||||
background-color: @background;
|
||||
border-color: @accent;
|
||||
border: 1px;
|
||||
border-radius: 10px;
|
||||
padding: 0;
|
||||
location: center;
|
||||
anchor: center;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#mainbox {
|
||||
background-color: @background;
|
||||
spacing: 10px;
|
||||
margin: 10px 0 0 0;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
#inputbar {
|
||||
children: [prompt,entry];
|
||||
background-color: @background;
|
||||
}
|
||||
|
||||
#listview {
|
||||
background-color: @background;
|
||||
fixed-height: true;
|
||||
margin: 5px 0 0 10px;
|
||||
}
|
||||
|
||||
#element {
|
||||
padding: 5px;
|
||||
background-color: @background;
|
||||
text-color: @foreground;
|
||||
}
|
||||
|
||||
element selected {
|
||||
background-color: @background-selected;
|
||||
text-color: @foreground-selected;
|
||||
border: 1px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
element-text {
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
}
|
||||
|
||||
element-icon {
|
||||
background-color: inherit;
|
||||
margin: 0 4px 0 0;
|
||||
size: 35px;
|
||||
}
|
||||
|
||||
#entry {
|
||||
background-color: @background;
|
||||
text-color: @accent;
|
||||
placeholder: "Search";
|
||||
placeholder-color: @inactive;
|
||||
font: "Comfortaa Regular 20";
|
||||
}
|
||||
|
||||
#prompt {
|
||||
background-color: @background;
|
||||
padding: 0 4px;
|
||||
margin: 0 5px 0 0;
|
||||
text-color: @foreground;
|
||||
font: "Adwaita Sans Regular 20";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
:root {
|
||||
--border-radius: 22px;
|
||||
--cc-bg: transparent;
|
||||
|
||||
--widget-background: {{ colors.surface.default.rgba | set_alpha: 0.7 }};
|
||||
--noti-bg-alpha: 0.6;
|
||||
|
||||
--padding: calc(var(--border-radius) / 2);
|
||||
}
|
||||
|
||||
.control-center {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.widgets>.widget,
|
||||
.widget-mpris>carouselindicatordots,
|
||||
.widget-mpris>box>button {
|
||||
background: var(--widget-background);
|
||||
border-radius: var(--border-radius);
|
||||
padding: calc(var(--border-radius) / 2);
|
||||
border: var(--border);
|
||||
}
|
||||
|
||||
.control-center-list-placeholder {
|
||||
padding: var(--border-radius);
|
||||
}
|
||||
|
||||
.notification-group {
|
||||
border-radius: var(--border-radius);
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.widget.widget-mpris {
|
||||
background: transparent;
|
||||
border-radius: 0;
|
||||
padding: 0;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.widget.widget-mpris>carouselindicatordots {
|
||||
--dots-padding: 4px;
|
||||
padding: var(--dots-padding);
|
||||
padding-left: var(--dots-padding);
|
||||
padding-right: calc(6px + var(--dots-padding));
|
||||
margin: 0;
|
||||
margin-top: var(--padding);
|
||||
}
|
||||
|
||||
.widget-mpris>box>button:hover {
|
||||
background: rgba(46, 46, 46, 1);
|
||||
}
|
||||
|
||||
.widget-mpris-player {
|
||||
box-shadow: none;
|
||||
border: var(--border);
|
||||
margin: 0 var(--padding);
|
||||
}
|
||||
|
||||
.widget-mpris-player:only-child {
|
||||
margin: 0;
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
/**
|
||||
* @name midnight
|
||||
* @description A dark, rounded discord theme.
|
||||
* @author refact0r
|
||||
* @version 1.6.2
|
||||
* @invite nz87hXyvcy
|
||||
* @website https://github.com/refact0r/midnight-discord
|
||||
* @source https://github.com/refact0r/midnight-discord/blob/master/midnight.theme.css
|
||||
* @authorId 508863359777505290
|
||||
* @authorLink https://www.refact0r.dev
|
||||
*/
|
||||
|
||||
/* IMPORTANT: make sure to enable dark mode in discord settings for the theme to apply properly!!! */
|
||||
|
||||
@import url('https://refact0r.github.io/midnight-discord/build/midnight.css');
|
||||
|
||||
/* customize things here */
|
||||
:root {
|
||||
/* font, change to 'gg sans' for default discord font*/
|
||||
--font: 'figtree';
|
||||
|
||||
/* top left corner text */
|
||||
--corner-text: 'Midnight';
|
||||
|
||||
/* color of status indicators and window controls */
|
||||
--online-indicator: #23a55a;
|
||||
--dnd-indicator: #f13f43;
|
||||
--idle-indicator: #f0b232;
|
||||
--streaming-indicator: #593695;
|
||||
|
||||
/* accent colors */
|
||||
--accent-1: {{colors.tertiary.default.hex}}; /* links */
|
||||
--accent-2: {{colors.primary.default.hex}}; /* general unread/mention elements, some icons when active */
|
||||
--accent-3: {{colors.primary.default.hex}}; /* accent buttons */
|
||||
--accent-4: {{colors.surface_bright.default.hex}}; /* accent buttons when hovered */
|
||||
--accent-5: {{colors.primary_fixed_dim.default.hex}}; /* accent buttons when clicked */
|
||||
--accent-new: {{colors.inverse_primary.default.hex}}; /* user panel mute & deafen buttons */
|
||||
--mention: {{colors.surface.default.hex}}; /* mentions & mention messages */
|
||||
--mention-hover: {{colors.surface_bright.default.hex}}; /* mentions & mention messages when hovered */
|
||||
|
||||
/* text colors */
|
||||
--text-0: {{colors.surface.default.hex}}; /* text on colored elements */
|
||||
--text-1: {{colors.on_surface.default.hex}}; /* other normally white text */
|
||||
--text-2: {{colors.on_surface.default.hex}}; /* headings and important text */
|
||||
--text-3: {{colors.on_surface_variant.default.hex}}; /* normal text */
|
||||
--text-4: {{colors.on_surface_variant.default.hex}}; /* icon buttons and channels */
|
||||
--text-5: {{colors.outline.default.hex}}; /* muted channels/chats and timestamps */
|
||||
|
||||
/* background and dark colors */
|
||||
--bg-1: {{colors.surface_variant.default.hex}}; /* dark buttons when clicked */
|
||||
--bg-2: {{colors.surface_container_high.default.hex}}; /* dark buttons */
|
||||
--bg-3: {{colors.surface_container_low.default.hex}}; /* spacing, secondary elements */
|
||||
--bg-4: {{colors.surface.default.hex | lighten: -1.0}}; /* main background color */
|
||||
--hover: {{colors.surface_bright.default.hex}}; /* channels and buttons when hovered */
|
||||
--active: {{colors.surface_bright.default.hex}}; /* channels and buttons when clicked or selected */
|
||||
--message-hover: {{colors.surface_bright.default.hex}}; /* messages when hovered */
|
||||
|
||||
/* amount of spacing and padding */
|
||||
--spacing: 12px;
|
||||
|
||||
/* animations */
|
||||
/* ALL ANIMATIONS CAN BE DISABLED WITH REDUCED MOTION IN DISCORD SETTINGS */
|
||||
--list-item-transition: 0.2s ease; /* channels/members/settings hover transition */
|
||||
--unread-bar-transition: 0.2s ease; /* unread bar moving into view transition */
|
||||
--moon-spin-transition: 0.4s ease; /* moon icon spin */
|
||||
--icon-spin-transition: 1s ease; /* round icon button spin (settings, emoji, etc.) */
|
||||
|
||||
/* corner roundness (border-radius) */
|
||||
--roundness-xl: 22px; /* roundness of big panel outer corners */
|
||||
--roundness-l: 20px; /* popout panels */
|
||||
--roundness-m: 16px; /* smaller panels, images, embeds */
|
||||
--roundness-s: 12px; /* members, settings inputs */
|
||||
--roundness-xs: 10px; /* channels, buttons */
|
||||
--roundness-xxs: 8px; /* searchbar, small elements */
|
||||
|
||||
/* direct messages moon icon */
|
||||
/* change to block to show, none to hide */
|
||||
--discord-icon: none; /* discord icon */
|
||||
--moon-icon: block; /* moon icon */
|
||||
--moon-icon-url: url('https://upload.wikimedia.org/wikipedia/commons/c/c4/Font_Awesome_5_solid_moon.svg'); /* custom icon url */
|
||||
--moon-icon-size: auto;
|
||||
|
||||
/* filter uncolorable elements to fit theme */
|
||||
/* (just set to none, they're too much work to configure) */
|
||||
--login-bg-filter: saturate(0.3) hue-rotate(-15deg) brightness(0.4); /* login background artwork */
|
||||
--green-to-accent-3-filter: hue-rotate(56deg) saturate(1.43); /* add friend page explore icon */
|
||||
--blurple-to-accent-3-filter: hue-rotate(304deg) saturate(0.84) brightness(1.2); /* add friend page school icon */
|
||||
}
|
||||
|
||||
/* Selected chat/friend text */
|
||||
.selected_f5eb4b,
|
||||
.selected_f6f816 .link_d8bfb3 {
|
||||
color: var(--text-0) !important;
|
||||
background: var(--accent-3) !important;
|
||||
}
|
||||
|
||||
.selected_f6f816 .link_d8bfb3 * {
|
||||
color: var(--text-0) !important;
|
||||
fill: var(--text-0) !important;
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
@import "colors.css";
|
||||
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
font-family: 'Comfortaa, FiraMono Nerd Font';
|
||||
font-weight: bold;
|
||||
font-size: 15px;
|
||||
min-height: 0;
|
||||
margin-left: 3px;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: {{ colors.shadow.default.rgba | set_alpha: 0.5 }};
|
||||
color: @primary;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
background-color: @background;
|
||||
border-radius: 10px;
|
||||
border-width: 2px;
|
||||
border-style: solid;
|
||||
border-color: @outline;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 3px;
|
||||
background-color: @primary_container;
|
||||
color: @on_primary_container;
|
||||
margin-right: 1px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
color: @on_primary;
|
||||
background-color: @primary;
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
color: @on_secondary;
|
||||
background-color: @secondary;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
color: @on_error;
|
||||
background-color: @error;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
color: @on_secondary;
|
||||
background-color: @secondary;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
background-color: black;
|
||||
border-radius: 10px;
|
||||
margin-left: 10px;
|
||||
padding-right: 0px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
#clock,
|
||||
#tray,
|
||||
#submap,
|
||||
#workspaces {
|
||||
background-color: @surface;
|
||||
color: @primary;
|
||||
padding: 3px 9px;
|
||||
margin: 3px 2px;
|
||||
margin-top: 9px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#window {
|
||||
border-radius: 10px;
|
||||
margin-left: 60px;
|
||||
margin-right: 60px;
|
||||
background-color: @surface;
|
||||
}
|
||||
|
||||
#clock {
|
||||
min-width: 125px;
|
||||
}
|
||||
|
||||
#pulseaudio,
|
||||
#memory,
|
||||
#network,
|
||||
#bluetooth,
|
||||
#brightness,
|
||||
#backlight,
|
||||
#battery,
|
||||
#cpu {
|
||||
padding: 3px 5px;
|
||||
margin: 3px 0px;
|
||||
margin-top: 9px;
|
||||
border-radius: 0;
|
||||
background-color: @surface;
|
||||
color: @primary;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
padding-left: 9px;
|
||||
}
|
||||
|
||||
#pulseaudio.microphone {
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
padding-right: 9px;
|
||||
}
|
||||
@@ -7,7 +7,7 @@ window {
|
||||
font-family: monospace;
|
||||
font-size: 14pt;
|
||||
color: {{colors.on_background.default.hex}}; /* text */
|
||||
background-color: {{colors.primary.background.hex}}60;
|
||||
background-color: rgba({{colors.background.default.red}}, {{colors.background.default.green}}, {{colors.background.default.blue}}, 0.3);
|
||||
}
|
||||
|
||||
button {
|
||||
@@ -23,10 +23,11 @@ button {
|
||||
|
||||
button:hover {
|
||||
background-color: {{colors.primary.default.hex}};
|
||||
color: {{colors.on_primary.default.hex}};
|
||||
}
|
||||
|
||||
button:focus {
|
||||
background-color: {{colors.primary.default.hex}}80;
|
||||
background-color: rgba({{colors.primary.default.red}}, {{colors.primary.default.green}}, {{colors.primary.default.blue}}, 0.8);
|
||||
color: {{colors.on_primary.default.hex}};
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
[app]
|
||||
overall = {
|
||||
bg = "{{ colors.background.default.hex }}"
|
||||
}
|
||||
|
||||
[mgr]
|
||||
cwd = {
|
||||
bg = "{{ colors.background.default.hex }}",
|
||||
fg = "{{ colors.tertiary.default.hex }}"
|
||||
}
|
||||
find_keyword = {
|
||||
bg = "{{ colors.secondary.default.hex }}",
|
||||
fg = "{{ colors.on_secondary.default.hex }}"
|
||||
}
|
||||
find_position = {
|
||||
bg = "{{ colors.secondary.default.hex }}",
|
||||
fg = "{{ colors.on_secondary.default.hex }}"
|
||||
}
|
||||
symlink_target = {
|
||||
bg = "{{ colors.background.default.hex }}",
|
||||
fg = "{{ colors.primary.default.hex }}"
|
||||
}
|
||||
border_style = {
|
||||
bg = "{{ colors.background.default.hex }}",
|
||||
fg = "{{ colors.tertiary.default.hex }}"
|
||||
}
|
||||
|
||||
[indicator]
|
||||
parent = {
|
||||
bg = "{{ colors.primary.default.hex }}",
|
||||
fg = "{{ colors.on_primary.default.hex }}"
|
||||
}
|
||||
current = {
|
||||
bg = "{{ colors.primary.default.hex }}",
|
||||
fg = "{{ colors.on_primary.default.hex }}"
|
||||
}
|
||||
preview = {
|
||||
bg = "{{ colors.background.default.hex }}",
|
||||
fg = "{{ colors.primary.default.hex }}",
|
||||
underline = true
|
||||
}
|
||||
|
||||
[tabs]
|
||||
active = {
|
||||
bg = "{{ colors.secondary.default.hex }}",
|
||||
fg = "{{ colors.on_secondary.default.hex }}"
|
||||
}
|
||||
inactive = {
|
||||
bg = "{{ colors.surface.default.hex }}",
|
||||
fg = "{{ colors.on_surface.default.hex }}"
|
||||
}
|
||||
|
||||
|
||||
[which]
|
||||
mask = {
|
||||
bg = "{{ colors.surface_variant.default.hex }}",
|
||||
fg = "{{ colors.on_surface_variant.default.hex }}"
|
||||
}
|
||||
cand = {
|
||||
bg = "{{ colors.surface_variant.default.hex }}",
|
||||
fg = "{{ colors.primary.default.hex }}",
|
||||
}
|
||||
rest = {
|
||||
bg = "{{ colors.surface_variant.default.hex }}",
|
||||
fg = "{{ colors.on_surface_variant.default.hex }}",
|
||||
}
|
||||
desc = {
|
||||
bg = "{{ colors.surface_variant.default.hex }}",
|
||||
fg = "{{ colors.on_surface_variant.default.hex }}",
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
[Appearance]
|
||||
color_scheme_path=~/.local/share/color-schemes/Matugen.colors
|
||||
custom_palette=true
|
||||
standard_dialogs=default
|
||||
style=Fusion
|
||||
|
||||
[Fonts]
|
||||
fixed="Source Code Pro,9,-1,2,400,0,0,0,0,0,0,0,0,0,0,1,,0,0"
|
||||
general="Comfortaa,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,,0,0"
|
||||
@@ -0,0 +1,28 @@
|
||||
[Appearance]
|
||||
color_scheme_path=~/.local/share/color-schemes/Matugen.colors
|
||||
custom_palette=true
|
||||
standard_dialogs=default
|
||||
style=Fusion
|
||||
|
||||
[Fonts]
|
||||
fixed="Source Code Pro,9,-1,2,400,0,0,0,0,0,0,0,0,0,0,1,,0,0"
|
||||
general="Comfortaa,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,,0,0"
|
||||
|
||||
[Interface]
|
||||
activate_item_on_single_click=1
|
||||
buttonbox_layout=0
|
||||
cursor_flash_time=1000
|
||||
dialog_buttons_have_icons=1
|
||||
double_click_interval=400
|
||||
gui_effects=@Invalid()
|
||||
keyboard_scheme=2
|
||||
menus_have_icons=true
|
||||
show_shortcuts_in_context_menus=true
|
||||
stylesheets=@Invalid()
|
||||
toolbutton_style=4
|
||||
underline_shortcut=1
|
||||
wheel_scroll_lines=3
|
||||
|
||||
[Troubleshooting]
|
||||
force_raster_widgets=1
|
||||
ignored_applications=@Invalid()
|
||||
@@ -1,4 +0,0 @@
|
||||
# Quickshell Status bar
|
||||
Many of the components were taken and adapted from the [End-4 configs](https://github.com/end-4/dots-hyprland).
|
||||
|
||||
All of the files in `utils/` are taken from the End-4 configs
|
||||
@@ -1,35 +0,0 @@
|
||||
import Quickshell
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import "./widgets/"
|
||||
import "../config"
|
||||
|
||||
Scope {
|
||||
Variants {
|
||||
model: Quickshell.screens
|
||||
|
||||
PanelWindow {
|
||||
id: barRoot
|
||||
property var modelData
|
||||
screen: modelData
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
left: true
|
||||
right: true
|
||||
}
|
||||
|
||||
color: Appearance.colors.m3background
|
||||
|
||||
implicitHeight: 40
|
||||
|
||||
RowLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
spacing: 0
|
||||
|
||||
Clock {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import "../config/"
|
||||
|
||||
// Mostly from here: https://github.com/ChrisTitusTech/quickshell/blob/main/bar/BarBlock.qml
|
||||
Rectangle {
|
||||
id: root
|
||||
radius: Appearance.rounding.barItems
|
||||
|
||||
Layout.preferredWidth: contentContainer.implicitWidth + 20
|
||||
Layout.preferredHeight: 30
|
||||
|
||||
property Item content: Text {
|
||||
text: "No content"
|
||||
}
|
||||
property bool hoverEnabled: false
|
||||
property Item mouseArea: mouseArea
|
||||
|
||||
property bool dim: false
|
||||
property var onClicked: function () {}
|
||||
property int leftPadding
|
||||
property int rightPadding
|
||||
|
||||
// Background color
|
||||
color: {
|
||||
if (mouseArea.containsMouse)
|
||||
return Appearance.colors.m3primary;
|
||||
return Appearance.colors.m3background;
|
||||
}
|
||||
|
||||
states: [
|
||||
State {
|
||||
when: mouseArea.containsMouse
|
||||
PropertyChanges {
|
||||
target: root
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
Behavior on color {
|
||||
ColorAnimation {
|
||||
duration: 200
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
// Contents of the bar block
|
||||
id: contentContainer
|
||||
implicitWidth: content.implicitWidth
|
||||
implicitHeight: content.implicitHeight
|
||||
anchors.centerIn: parent
|
||||
children: content
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
enabled: root.hoverEnabled
|
||||
id: mouseArea
|
||||
anchors.fill: root
|
||||
hoverEnabled: true
|
||||
acceptedButtons: Qt.LeftButton
|
||||
onClicked: root.onClicked()
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
Bar 1.0 Bar.qml
|
||||
WidgetWrapper 1.0 WidgetWrapper.qml
|
||||
@@ -1,4 +0,0 @@
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
|
||||
Scope {}
|
||||
@@ -1,10 +0,0 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import "."
|
||||
import "../../config"
|
||||
|
||||
Text {
|
||||
text: `${ClockHandler.date}, ${ClockHandler.time}`
|
||||
color: Appearance.colors.m3onBackground
|
||||
Layout.leftMargin: 10
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import QtQuick
|
||||
|
||||
Singleton {
|
||||
property string time
|
||||
property string date
|
||||
|
||||
Process {
|
||||
id: dateProc
|
||||
command: ["date", "+%a %e %b|%T"]
|
||||
running: true
|
||||
|
||||
stdout: SplitParser {
|
||||
onRead: data => {
|
||||
date = data.split("|")[0];
|
||||
time = data.split("|")[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
interval: 1000
|
||||
running: true
|
||||
repeat: true
|
||||
onTriggered: dateProc.running = true
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
import Quickshell
|
||||
import QtQuick
|
||||
|
||||
Scope {
|
||||
id: root
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
Clock 1.0 Clock.qml
|
||||
singleton ClockHandler 1.0 ClockHandler.qml
|
||||
@@ -1,114 +0,0 @@
|
||||
pragma Singleton
|
||||
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
|
||||
Singleton {
|
||||
id: root
|
||||
property QtObject colors
|
||||
property QtObject fonts
|
||||
property QtObject fontsizes
|
||||
property QtObject rounding
|
||||
|
||||
// From end-4 configs
|
||||
colors: QtObject {
|
||||
property color m3background: "#141313"
|
||||
property color m3onBackground: "#e6e1e1"
|
||||
property color m3surface: "#141313"
|
||||
property color m3surfaceDim: "#141313"
|
||||
property color m3surfaceBright: "#3a3939"
|
||||
property color m3surfaceContainerLowest: "#0f0e0e"
|
||||
property color m3surfaceContainerLow: "#1c1b1c"
|
||||
property color m3surfaceContainer: "#201f20"
|
||||
property color m3surfaceContainerHigh: "#2b2a2a"
|
||||
property color m3surfaceContainerHighest: "#363435"
|
||||
property color m3onSurface: "#e6e1e1"
|
||||
property color m3surfaceVariant: "#49464a"
|
||||
property color m3onSurfaceVariant: "#cbc5ca"
|
||||
property color m3inverseSurface: "#e6e1e1"
|
||||
property color m3inverseOnSurface: "#313030"
|
||||
property color m3outline: "#948f94"
|
||||
property color m3outlineVariant: "#49464a"
|
||||
property color m3shadow: "#000000"
|
||||
property color m3scrim: "#000000"
|
||||
property color m3surfaceTint: "#cbc4cb"
|
||||
property color m3primary: "#cbc4cb"
|
||||
property color m3onPrimary: "#322f34"
|
||||
property color m3primaryContainer: "#2d2a2f"
|
||||
property color m3onPrimaryContainer: "#bcb6bc"
|
||||
property color m3inversePrimary: "#615d63"
|
||||
property color m3secondary: "#cac5c8"
|
||||
property color m3onSecondary: "#323032"
|
||||
property color m3secondaryContainer: "#4d4b4d"
|
||||
property color m3onSecondaryContainer: "#ece6e9"
|
||||
property color m3tertiary: "#d1c3c6"
|
||||
property color m3onTertiary: "#372e30"
|
||||
property color m3tertiaryContainer: "#31292b"
|
||||
property color m3onTertiaryContainer: "#c1b4b7"
|
||||
property color m3error: "#ffb4ab"
|
||||
property color m3onError: "#690005"
|
||||
property color m3errorContainer: "#93000a"
|
||||
property color m3onErrorContainer: "#ffdad6"
|
||||
property color m3primaryFixed: "#e7e0e7"
|
||||
property color m3primaryFixedDim: "#cbc4cb"
|
||||
property color m3onPrimaryFixed: "#1d1b1f"
|
||||
property color m3onPrimaryFixedVariant: "#49454b"
|
||||
property color m3secondaryFixed: "#e6e1e4"
|
||||
property color m3secondaryFixedDim: "#cac5c8"
|
||||
property color m3onSecondaryFixed: "#1d1b1d"
|
||||
property color m3onSecondaryFixedVariant: "#484648"
|
||||
property color m3tertiaryFixed: "#eddfe1"
|
||||
property color m3tertiaryFixedDim: "#d1c3c6"
|
||||
property color m3onTertiaryFixed: "#211a1c"
|
||||
property color m3onTertiaryFixedVariant: "#4e4447"
|
||||
property color m3success: "#B5CCBA"
|
||||
property color m3onSuccess: "#213528"
|
||||
property color m3successContainer: "#374B3E"
|
||||
property color m3onSuccessContainer: "#D1E9D6"
|
||||
}
|
||||
|
||||
rounding: QtObject {
|
||||
property int barItems: 10
|
||||
}
|
||||
|
||||
function reapplyTheme() {
|
||||
themeFileView.reload();
|
||||
}
|
||||
|
||||
function applyTheme(fileContent) {
|
||||
const json = JSON.parse(fileContent);
|
||||
for (const key in json) {
|
||||
if (json.hasOwnProperty(key)) {
|
||||
// Convert snake_case to CamelCase
|
||||
const camelCaseKey = key.replace(/_([a-z])/g, g => g[1].toUpperCase());
|
||||
const m3Key = `${camelCaseKey}`;
|
||||
root.colors[m3Key] = json[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: delayedFileRead
|
||||
interval: 1000
|
||||
repeat: false
|
||||
running: false
|
||||
onTriggered: {
|
||||
root.applyTheme(themeFileView.text());
|
||||
}
|
||||
}
|
||||
|
||||
FileView {
|
||||
id: themeFileView
|
||||
path: Qt.resolvedUrl(Paths.materialColorsPath)
|
||||
watchChanges: true
|
||||
onFileChanged: {
|
||||
this.reload();
|
||||
delayedFileRead.start();
|
||||
}
|
||||
onLoadedChanged: {
|
||||
const fileContent = themeFileView.text();
|
||||
root.applyTheme(fileContent);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
import QtCore
|
||||
import "../utils/"
|
||||
|
||||
Singleton {
|
||||
readonly property string home: StandardPaths.standardLocations(StandardPaths.HomeLocation)[0]
|
||||
readonly property string config: StandardPaths.standardLocations(StandardPaths.ConfigLocation)[0]
|
||||
readonly property string state: StandardPaths.standardLocations(StandardPaths.StateLocation)[0]
|
||||
readonly property string cache: StandardPaths.standardLocations(StandardPaths.CacheLocation)[0]
|
||||
|
||||
property string materialColorsPath: FileUtils.trimFileProtocol(`${Paths.state}/user/generated/colors.json`)
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
singleton Appearance 1.0 Appearance.qml
|
||||
singleton Paths 1.0 Paths.qml
|
||||
@@ -1,95 +0,0 @@
|
||||
// From https://github.com/quickshell-mirror/quickshell-examples/blob/master/volume-osd/shell.qml
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import Quickshell
|
||||
import Quickshell.Services.Pipewire
|
||||
import Quickshell.Widgets
|
||||
import "../config/"
|
||||
|
||||
Scope {
|
||||
id: root
|
||||
|
||||
// Bind the pipewire node so its volume will be tracked
|
||||
PwObjectTracker {
|
||||
objects: [Pipewire.defaultAudioSink]
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: Pipewire.defaultAudioSink?.audio
|
||||
|
||||
function onVolumeChanged() {
|
||||
root.shouldShowOsd = true;
|
||||
hideTimer.restart();
|
||||
}
|
||||
}
|
||||
|
||||
property bool shouldShowOsd: false
|
||||
|
||||
Timer {
|
||||
id: hideTimer
|
||||
interval: 1000
|
||||
onTriggered: root.shouldShowOsd = false
|
||||
}
|
||||
|
||||
// The OSD window will be created and destroyed based on shouldShowOsd.
|
||||
// PanelWindow.visible could be set instead of using a loader, but using
|
||||
// a loader will reduce the memory overhead when the window isn't open.
|
||||
LazyLoader {
|
||||
active: root.shouldShowOsd
|
||||
|
||||
PanelWindow {
|
||||
// Since the panel's screen is unset, it will be picked by the compositor
|
||||
// when the window is created. Most compositors pick the current active monitor.
|
||||
|
||||
anchors.bottom: true
|
||||
margins.bottom: screen.height / 5
|
||||
exclusiveZone: 0
|
||||
|
||||
implicitWidth: 300
|
||||
implicitHeight: 50
|
||||
color: "transparent"
|
||||
|
||||
// An empty click mask prevents the window from blocking mouse events.
|
||||
mask: Region {}
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
radius: height / 2
|
||||
color: Appearance.colors.m3background
|
||||
|
||||
RowLayout {
|
||||
anchors {
|
||||
fill: parent
|
||||
leftMargin: 10
|
||||
rightMargin: 15
|
||||
}
|
||||
|
||||
IconImage {
|
||||
implicitSize: 30
|
||||
source: Quickshell.iconPath("audio-volume-high-symbolic")
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
// Stretches to fill all left-over space
|
||||
Layout.fillWidth: true
|
||||
|
||||
implicitHeight: 10
|
||||
radius: 20
|
||||
color: "#50ffffff"
|
||||
|
||||
Rectangle {
|
||||
anchors {
|
||||
left: parent.left
|
||||
top: parent.top
|
||||
bottom: parent.bottom
|
||||
}
|
||||
|
||||
implicitWidth: parent.width * (Pipewire.defaultAudioSink?.audio.volume ?? 0)
|
||||
radius: parent.radius
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
Volume 1.0 Volume.qml
|
||||
@@ -1,15 +0,0 @@
|
||||
import Quickshell
|
||||
import QtQuick
|
||||
import "config"
|
||||
import "bar"
|
||||
import "osd"
|
||||
|
||||
ShellRoot {
|
||||
Component.onCompleted: {
|
||||
// Load themes
|
||||
Appearance.reapplyTheme();
|
||||
}
|
||||
|
||||
Bar {}
|
||||
Volume {}
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
|
||||
Singleton {
|
||||
id: root
|
||||
|
||||
/**
|
||||
* Trims the File protocol off the input string
|
||||
* @param {string} str
|
||||
* @returns {string}
|
||||
*/
|
||||
function trimFileProtocol(str) {
|
||||
let s = str;
|
||||
if (typeof s !== "string") s = str.toString(); // Convert to string if it's an url or whatever
|
||||
return s.startsWith("file://") ? s.slice(7) : s;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts the file name from a file path
|
||||
* @param {string} str
|
||||
* @returns {string}
|
||||
*/
|
||||
function fileNameForPath(str) {
|
||||
if (typeof str !== "string") return "";
|
||||
const trimmed = trimFileProtocol(str);
|
||||
return trimmed.split(/[\\/]/).pop();
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts the folder name from a directory path
|
||||
* @param {string} str
|
||||
* @returns {string}
|
||||
*/
|
||||
function folderNameForPath(str) {
|
||||
if (typeof str !== "string") return "";
|
||||
const trimmed = trimFileProtocol(str);
|
||||
// Remove trailing slash if present
|
||||
const noTrailing = trimmed.endsWith("/") ? trimmed.slice(0, -1) : trimmed;
|
||||
if (!noTrailing) return "";
|
||||
return noTrailing.split(/[\\/]/).pop();
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the file extension from a file path or name
|
||||
* @param {string} str
|
||||
* @returns {string}
|
||||
*/
|
||||
function trimFileExt(str) {
|
||||
if (typeof str !== "string") return "";
|
||||
const trimmed = trimFileProtocol(str);
|
||||
const lastDot = trimmed.lastIndexOf(".");
|
||||
if (lastDot > -1 && lastDot > trimmed.lastIndexOf("/")) {
|
||||
return trimmed.slice(0, lastDot);
|
||||
}
|
||||
return trimmed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the parent directory of a given file path
|
||||
* @param {string} str
|
||||
* @returns {string}
|
||||
*/
|
||||
function parentDirectory(str) {
|
||||
if (typeof str !== "string") return "";
|
||||
const trimmed = trimFileProtocol(str);
|
||||
const parts = trimmed.split(/[\\/]/);
|
||||
if (parts.length <= 1) return "";
|
||||
parts.pop();
|
||||
return parts.join("/");
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
singleton FileUtils 1.0 FileUtils.qml
|
||||
@@ -0,0 +1,12 @@
|
||||
/** Basic config file **/
|
||||
|
||||
configuration {
|
||||
show-icons: true;
|
||||
icon-theme: "Candy";
|
||||
display-drun: "";
|
||||
display-run: "🏃🏽♂️ ";
|
||||
display-window: "🗔 ";
|
||||
display-combi: "🔎 ";
|
||||
}
|
||||
|
||||
@theme "style.rasi"
|
||||
@@ -8,10 +8,10 @@
|
||||
"layer-shell": true,
|
||||
"layer-shell-cover-screen": true,
|
||||
"cssPriority": "user",
|
||||
"control-center-margin-top": 0,
|
||||
"control-center-margin-bottom": 0,
|
||||
"control-center-margin-right": 0,
|
||||
"control-center-margin-left": 0,
|
||||
"control-center-margin-top": 3,
|
||||
"control-center-margin-bottom": 3,
|
||||
"control-center-margin-right": 3,
|
||||
"control-center-margin-left": 3,
|
||||
"notification-2fa-action": true,
|
||||
"notification-inline-replies": false,
|
||||
"notification-body-image-height": 100,
|
||||
@@ -31,13 +31,27 @@
|
||||
"hide-on-clear": false,
|
||||
"hide-on-action": true,
|
||||
"text-empty": "No Notifications",
|
||||
"notification-visibility": {
|
||||
"example-name": {
|
||||
"state": "muted",
|
||||
"urgency": "Normal",
|
||||
"app-name": "example.app.id"
|
||||
}
|
||||
},
|
||||
"script-fail-notify": true,
|
||||
// "scripts": {
|
||||
// "example-script": {
|
||||
// "app-name": "example.app.id",
|
||||
// "exec": "echo 'Do something...'",
|
||||
// "urgency": "Normal"
|
||||
// },
|
||||
// "example-action-script": {
|
||||
// "app-name": "example.app.id",
|
||||
// "exec": "echo 'Do something actionable!'",
|
||||
// "urgency": "Normal",
|
||||
// "run-on": "action"
|
||||
// }
|
||||
// },
|
||||
// "notification-visibility": {
|
||||
// "example-name": {
|
||||
// "state": "muted",
|
||||
// "urgency": "Normal",
|
||||
// "app-name": "example.app.id"
|
||||
// }
|
||||
// },
|
||||
"widgets": [
|
||||
"inhibitors",
|
||||
"title",
|
||||
@@ -0,0 +1,194 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"mod": "dock",
|
||||
"exclusive": true,
|
||||
"passthrough": false,
|
||||
"gtk-layer-shell": true,
|
||||
"height": 0,
|
||||
"modules-left": [
|
||||
"hyprland/submap",
|
||||
"clock",
|
||||
"hyprland/workspaces"
|
||||
],
|
||||
"modules-center": [
|
||||
"hyprland/window"
|
||||
],
|
||||
"modules-right": [
|
||||
"tray",
|
||||
"cpu",
|
||||
"memory",
|
||||
"network",
|
||||
"bluetooth",
|
||||
"backlight",
|
||||
"battery",
|
||||
"pulseaudio",
|
||||
"pulseaudio#microphone"
|
||||
],
|
||||
"bluetooth": {
|
||||
"format": "{icon}",
|
||||
"format-disabled": "\udb80\udcb2",
|
||||
"format-off": "\udb80\udcb2",
|
||||
"format-on": "\udb80\udcaf",
|
||||
"format-connected": "\udb80\udcb1",
|
||||
"format-icons": [
|
||||
"\udb82\udd47",
|
||||
"\udb82\udd3e",
|
||||
"\udb82\udd3f",
|
||||
"\udb82\udd40",
|
||||
"\udb82\udd41",
|
||||
"\udb82\udd42",
|
||||
"\udb82\udd43",
|
||||
"\udb82\udd44",
|
||||
"\udb82\udd45",
|
||||
"\udb82\udd46"
|
||||
],
|
||||
"tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
|
||||
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
|
||||
"tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
|
||||
"tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%",
|
||||
"on-click": "alacritty -e bluetui -T bluetui"
|
||||
},
|
||||
"hyprland/submap": {
|
||||
// "format": "{icon}",
|
||||
"max-length": 4,
|
||||
"tooltip": false
|
||||
// "icons": {
|
||||
// "device": "\uf4a9",
|
||||
// "groups": "\udb80\udec3",
|
||||
// "launch": "\udb85\udcde",
|
||||
// "notifications": "\uf400",
|
||||
// "screenshot": "\udb83\ude51",
|
||||
// "window": "\ueb7f",
|
||||
// "workspace": "\ueb23",
|
||||
// "groupedlaunch": "\uf0c0"
|
||||
// }
|
||||
},
|
||||
"hyprland/window": {
|
||||
"format": "{}",
|
||||
"tooltip-format": "Class: {class}",
|
||||
"rewrite": {
|
||||
"(.*) — Librewolf": "🌎 $1",
|
||||
"nvim - (.*)": "\ue6ae $1",
|
||||
"Yazi: (.*)": "\udb81\ude45 $1"
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 14,
|
||||
"spacing": 8
|
||||
},
|
||||
"network": {
|
||||
"format-disconnected": "\udb80\udf19",
|
||||
"format-wifi": "{icon} {essid}",
|
||||
"format-ethernet": "\udb80\ude00",
|
||||
"tooltip-format-ethernet": "<big>Ethernet</big>\nInterface: {ifname}\nIP: {ipaddr}\nUp/Down (bps): {bandwidthUpBits}/{bandwidthDownBits}",
|
||||
"tooltip-format-wifi": "<big>Wi-Fi</big>\nSSID: {essid}\nIP: {ipaddr}\nSignal strength: {signalStrength}%\nUp/Down (bps): {bandwidthUpBits}/{bandwidthDownBits}\nFrequency: {frequency}GHz",
|
||||
"tooltip-format-disconnected": "<big>Networking</big>\n{ifname} disconnected",
|
||||
"on-click": "alacritty -e nmtui -T nmtui",
|
||||
"format-icons": [
|
||||
"\udb82\udd2f",
|
||||
"\udb82\udd1f",
|
||||
"\udb82\udd22",
|
||||
"\udb82\udd25",
|
||||
"\udb82\udd28"
|
||||
]
|
||||
},
|
||||
"clock": {
|
||||
"format": "{:%a, %d.%m %H:%M:%S}",
|
||||
"tooltip-format": "<big>Calendar</big>\n<tt><small>{calendar}</small></tt>",
|
||||
"interval": 1
|
||||
},
|
||||
"hyprland/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"all-outputs": true,
|
||||
"tooltips": {
|
||||
"default": "{name}: {windows}",
|
||||
"empty": "" // Will result in no tooltip
|
||||
}
|
||||
},
|
||||
"cpu": {
|
||||
"tooltip-format": "<big>CPU</big>\n<tt>Total: {usage}</tt>",
|
||||
"format": "\uf4bc {usage}",
|
||||
"interval": 5,
|
||||
"on-click": "alacritty -e dgop -T dgop"
|
||||
},
|
||||
"memory": {
|
||||
"format": "\uefc5 {percentage}",
|
||||
"interval": 5,
|
||||
"on-click": "alacritty -e dgop -T dgop"
|
||||
},
|
||||
"pulseaudio": {
|
||||
"format": "{icon} {volume}",
|
||||
"tooltip": true,
|
||||
"format-muted": "\udb81\udcc4 Off",
|
||||
"on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle",
|
||||
"on-scroll-up": "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+",
|
||||
"on-scroll-down": "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-",
|
||||
"scroll-step": 5,
|
||||
"format-icons": {
|
||||
"headphone": "\uf025",
|
||||
"hands-free": "",
|
||||
"headset": "\uee59",
|
||||
"phone": "\udb82\udd70",
|
||||
"portable": "\udb82\udda2",
|
||||
"car": "🏎",
|
||||
"default": [
|
||||
"\udb81\udcc3",
|
||||
"\udb81\udf1f"
|
||||
]
|
||||
}
|
||||
},
|
||||
"battery":{
|
||||
"states": {
|
||||
"95": 100,
|
||||
"85": 90,
|
||||
"75": 80,
|
||||
"65": 70,
|
||||
"55": 60,
|
||||
"45": 50,
|
||||
"35": 40,
|
||||
"25": 30,
|
||||
"15": 20,
|
||||
"5": 10,
|
||||
"critical": 0,
|
||||
},
|
||||
"format":" {capacity}",
|
||||
"format-95": " {capacity}",
|
||||
"format-85": " {capacity}",
|
||||
"format-75": " {capacity}",
|
||||
"format-65": " {capacity}",
|
||||
"format-55": " {capacity}",
|
||||
"format-45": " {capacity}",
|
||||
"format-35": " {capacity}",
|
||||
"format-25": " {capacity}",
|
||||
"format-15": " {capacity}",
|
||||
"format-15": " {capacity}",
|
||||
"format-critical": " {capacity}",
|
||||
"format-charging":" {capacity}",
|
||||
"format-plugged": " ",
|
||||
"format-full": " 100",
|
||||
"format-empty": " ({capacity}%)",
|
||||
"tooltip-format":"<big>Battery</big>\nCurrently {timeTo}\nCurrently drawing: {power}W\nBattery status: {capacity}%"
|
||||
},
|
||||
"backlight": {
|
||||
"stages": {
|
||||
"high": 50,
|
||||
"low": 0,
|
||||
},
|
||||
"format": "🌣 {percent}",
|
||||
"format-high": " {percent}",
|
||||
"format-low": " {percent}",
|
||||
"tooltip-format": "<big>Brightness</big>\n🌣 {percent}",
|
||||
"on-scroll-up": "light -A 1",
|
||||
"on-scroll-down": "light -U 1"
|
||||
},
|
||||
"pulseaudio#microphone": {
|
||||
"format": "{format_source}",
|
||||
"format-source": "\uf130 {volume}",
|
||||
"format-source-muted": "\uf131 Off",
|
||||
"on-click": "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle",
|
||||
"on-scroll-up": "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%+",
|
||||
"on-scroll-down": "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%-",
|
||||
"scroll-step": 5
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* ╭───────────────────────────────────────────────╮
|
||||
* │ WLOGOUT │
|
||||
* ╰───────────────────────────────────────────────╯
|
||||
*/
|
||||
window {
|
||||
font-family: monospace;
|
||||
font-size: 14pt;
|
||||
color: #ffffff; /* text */
|
||||
background-color: rgba(20, 20, 20, 0.5);
|
||||
}
|
||||
|
||||
button {
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 25%;
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
margin: 5px;
|
||||
transition: box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out;
|
||||
border-radius: 40px;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: rgba(22, 116, 185, 0.5);
|
||||
}
|
||||
|
||||
button:focus {
|
||||
background-color: rgb(22, 116, 185);
|
||||
color: rgb(230, 230, 230);
|
||||
}
|
||||
|
||||
#lock {
|
||||
background-image: image(url("./lock.png"));
|
||||
}
|
||||
#lock:focus {
|
||||
background-image: image(url("./lock-hover.png"));
|
||||
}
|
||||
|
||||
#logout {
|
||||
background-image: image(url("./logout.png"));
|
||||
}
|
||||
#logout:focus {
|
||||
background-image: image(url("./logout-hover.png"));
|
||||
}
|
||||
|
||||
#suspend {
|
||||
background-image: image(url("./sleep.png"));
|
||||
}
|
||||
#suspend:focus {
|
||||
background-image: image(url("./sleep-hover.png"));
|
||||
}
|
||||
|
||||
#shutdown {
|
||||
background-image: image(url("./power.png"));
|
||||
}
|
||||
#shutdown:focus {
|
||||
background-image: image(url("./power-hover.png"));
|
||||
}
|
||||
|
||||
#reboot {
|
||||
background-image: image(url("./restart.png"));
|
||||
}
|
||||
#reboot:focus {
|
||||
background-image: image(url("./restart-hover.png"));
|
||||
}
|
||||
@@ -21,14 +21,15 @@ prepend_keymap = [
|
||||
{ on = [ "g", "c", "s" ], run = "cd ~/projects/dotfiles/scripts", desc = "Go to script" },
|
||||
{ on = [ "g", "c", "d" ], run = "cd ~/projects/dotfiles", desc = "Go to Dotfiles folder" },
|
||||
{ on = [ "g", "c", "n" ], run = "cd ~/projects/nvim", desc = "Go to NeoVim config" },
|
||||
{ on = [ "g", "w" ], run = "cd ~/NextCloud/Wallpapers/00_rotation/", desc = "Go to ~/.config" },
|
||||
{ on = [ "g", "n" ], run = "cd ~/NextCloud/Documents/", desc = "Go to NextCloud Documents" },
|
||||
{ on = [ "g", "w" ], run = "cd ~/NextCloud/Wallpapers", desc = "Go to Wallpapers" },
|
||||
{ on = [ "g", "e", "n" ], run = "cd ~/NextCloud/Documents/ETH/Semester4/", desc = "Go to ETH Nextcloud" },
|
||||
{ on = [ "g", "e", "n" ], run = "cd ~/NextCloud/Documents/ETH/Semester5/", desc = "Go to ETH Nextcloud" },
|
||||
{ on = [ "g", "e", "p" ], run = "cd ~/projects/eth/projects/", desc = "Go to ETH projects folder" },
|
||||
{ on = [ "g", "e", "a" ], run = "cd ~/projects/eth/semesters/semester4/", desc = "Go to ETH assignments folder" },
|
||||
{ on = [ "g", "e", "a" ], run = "cd ~/projects/eth/semesters/semester5/", desc = "Go to ETH assignments folder" },
|
||||
{ on = [ "g", "e", "t" ], run = "cd ~/NextCloud/Documents/ETH/Others/projects/eyetap/", desc = "Go to eyetap data folder" },
|
||||
{ on = [ "g", "e", "g" ], run = "cd ~/projects/eth/gitlab/", desc = "Go to ETH Gitlab folder" },
|
||||
{ on = [ "g", "e", "s" ], run = "cd ~/projects/eth/eth-summaries/semester4/", desc = "Go to ETH Summaries folder" },
|
||||
{ on = [ "g", "e", "s" ], run = "cd ~/projects/eth/eth-summaries/core/", desc = "Go to ETH Summaries folder" },
|
||||
{ on = [ "g", "s", "h" ], run = "cd ~/.steam/steam/steamapps/common", desc = "Go to ~/.steam/steam/steamapps/common" },
|
||||
{ on = [ "g", "s", "g" ], run = "cd /mnt/games/SteamLibrary", desc = "Go to SteamLibrary on NTFS partition" },
|
||||
{ on = [ "g", "s", "s" ], run = "cd /mnt/secondary/SteamLibrary", desc = "Go to SteamLibrary on main games drive" },
|
||||
|
||||
+17
-1
@@ -10,8 +10,24 @@ prepend_previewers = [
|
||||
]
|
||||
|
||||
[opener]
|
||||
open = [
|
||||
pdf = [
|
||||
{ run = 'xdg-open "$@"', desc = "Open" },
|
||||
{ run = 'okular "$@"', desc = "Open in Okular" },
|
||||
{ run = 'evince "$@"', desc = "Open in Evince" },
|
||||
]
|
||||
image = [
|
||||
{ run = 'xdg-open "$@"', desc = "Open" },
|
||||
{ run = 'set-theme "$@"', desc = "Set desktop theme from this image" },
|
||||
]
|
||||
xdg = [
|
||||
{ run = 'xdg-open "$@"', desc = "Open in default application" }
|
||||
]
|
||||
|
||||
[open]
|
||||
rules = [
|
||||
{ mime = "application/pdf", use = "pdf" },
|
||||
{ mime = "image/png", use = "image" },
|
||||
{ mime = "image/jpg", use = "image" },
|
||||
{ mime = "image/jpeg", use = "image" },
|
||||
{ mime = "*", use = "xdg" }
|
||||
]
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
# Lines configured by zsh-newuser-install
|
||||
HISTFILE=~/.histfile
|
||||
HISTSIZE=1000
|
||||
SAVEHIST=1000
|
||||
bindkey -e
|
||||
# End of lines configured by zsh-newuser-install
|
||||
# The following lines were added by compinstall
|
||||
zstyle :compinstall filename '/home/janis/.zshrc'
|
||||
|
||||
autoload -Uz compinit
|
||||
compinit
|
||||
autoload -U promptinit
|
||||
promptinit
|
||||
# End of lines added by compinstall
|
||||
ENABLE_CORRECTION=true
|
||||
|
||||
# Handy aliases
|
||||
alias ls='ls -l --color'
|
||||
alias ll='ls -la --color'
|
||||
alias v='nvim'
|
||||
alias c='clear'
|
||||
alias cv='clear && nvim'
|
||||
alias fm='thunar .'
|
||||
alias gl='git ls-files --others --exclude-standard'
|
||||
alias gm='git ls-files -m'
|
||||
alias gp='git pull'
|
||||
alias cfh='nvim ~/projects/system/dotfiles/config/hypr/'
|
||||
alias cfn='nvim ~/projects/system/nvim/'
|
||||
alias cff='nvim ~/projects/system/dotfiles/config/fish/'
|
||||
alias cfa='nvim ~/projects/system/dotfiles/config/astal/'
|
||||
alias cf='nvim ~/projects/system/dotfiles/'
|
||||
alias g='lazygit'
|
||||
alias ff='fastfetch'
|
||||
alias p='nvimpager -p'
|
||||
alias latexdocs='zathura ~/projects/latex/docs/docs.pdf &>> /dev/null & disown'
|
||||
alias gccerr='gcc -Wall -Wextra -Wpedantic -Werror -Wmissing-prototypes -std=c99'
|
||||
alias linecount='cloc --vcs git .'
|
||||
|
||||
# Aliases from ohmyzsh
|
||||
alias cp='nocorrect cp'
|
||||
alias man='nocorrect man'
|
||||
alias mkdir='nocorrect mkdir'
|
||||
alias mv='nocorrect mv'
|
||||
alias sudo='nocorrect sudo'
|
||||
alias su='nocorrect su'
|
||||
alias rm='nocorrect rm'
|
||||
alias -g ...='../..'
|
||||
alias -g ....='../../..'
|
||||
alias -g .....='../../../..'
|
||||
alias -g ......='../../../../..'
|
||||
|
||||
alias -- -='cd -'
|
||||
alias 1='cd -1'
|
||||
alias 2='cd -2'
|
||||
alias 3='cd -3'
|
||||
alias 4='cd -4'
|
||||
alias 5='cd -5'
|
||||
alias 6='cd -6'
|
||||
alias 7='cd -7'
|
||||
alias 8='cd -8'
|
||||
alias 9='cd -9'
|
||||
|
||||
export PATH=$PATH:~/projects/system/dotfiles/scripts/
|
||||
|
||||
# Yazi wrapper
|
||||
function y() {
|
||||
local tmp cwd; tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
|
||||
command yazi "$@" --cwd-file="$tmp"
|
||||
IFS= read -r -d '' cwd < "$tmp"
|
||||
[ "$cwd" != "$PWD" ] && [ -d "$cwd" ] && builtin cd -- "$cwd" || builtin true
|
||||
command rm -f -- "$tmp"
|
||||
}
|
||||
|
||||
source ~/.config/zsh/theme.zsh
|
||||
eval "$(zoxide init --cmd j zsh)"
|
||||
|
||||
# for file in ~/projects/system/dotfiles/system/completions/*
|
||||
# do
|
||||
# source $file
|
||||
# done
|
||||
@@ -0,0 +1,15 @@
|
||||
local return_code="%F{9}%? ↵%{$reset_color%})"
|
||||
local user_host="%B%F{9}%n%F{15}@%F{172}%m%f "
|
||||
local user_symbol='%(!.#.$)'
|
||||
local current_dir="%B%F{2}%1~ %f"
|
||||
local vcs_info=''
|
||||
local venv_prompt=''
|
||||
|
||||
precmd () {
|
||||
vcs_info='git status'
|
||||
}
|
||||
|
||||
|
||||
PS1="╭─${user_host}${current_dir}${vcs_info}${venv_prompt}
|
||||
╰─%B${user_symbol}%b "
|
||||
RPROMPT="%B${return_code}%b"
|
||||
@@ -0,0 +1,276 @@
|
||||
# ─────────────────────────────────────────────────────────────────────
|
||||
# ╭─────────────────────────────────────────────────╮
|
||||
# │ clang-format config │
|
||||
# ╰─────────────────────────────────────────────────╯
|
||||
# ─────────────────────────────────────────────────────────────────────
|
||||
BasedOnStyle: LLVM
|
||||
AccessModifierOffset: -2
|
||||
AlignAfterOpenBracket: BlockIndent
|
||||
AlignArrayOfStructures: Left
|
||||
AlignConsecutiveAssignments:
|
||||
Enabled: false
|
||||
AcrossEmptyLines: false
|
||||
AcrossComments: false
|
||||
AlignCompound: false
|
||||
AlignFunctionPointers: false
|
||||
PadOperators: true
|
||||
AlignConsecutiveBitFields:
|
||||
Enabled: true
|
||||
AcrossEmptyLines: false
|
||||
AcrossComments: false
|
||||
AlignCompound: false
|
||||
AlignFunctionPointers: false
|
||||
PadOperators: false
|
||||
AlignConsecutiveDeclarations:
|
||||
Enabled: false
|
||||
AcrossEmptyLines: false
|
||||
AcrossComments: false
|
||||
AlignCompound: false
|
||||
AlignFunctionPointers: false
|
||||
PadOperators: false
|
||||
AlignConsecutiveMacros:
|
||||
Enabled: true
|
||||
AcrossEmptyLines: false
|
||||
AcrossComments: false
|
||||
AlignCompound: false
|
||||
AlignFunctionPointers: false
|
||||
PadOperators: false
|
||||
AlignConsecutiveShortCaseStatements:
|
||||
Enabled: true
|
||||
AcrossEmptyLines: false
|
||||
AcrossComments: false
|
||||
AlignCaseArrows: false
|
||||
AlignCaseColons: false
|
||||
AlignConsecutiveTableGenBreakingDAGArgColons:
|
||||
Enabled: false
|
||||
AcrossEmptyLines: false
|
||||
AcrossComments: false
|
||||
AlignCompound: false
|
||||
AlignFunctionPointers: false
|
||||
PadOperators: false
|
||||
AlignConsecutiveTableGenCondOperatorColons:
|
||||
Enabled: false
|
||||
AcrossEmptyLines: false
|
||||
AcrossComments: false
|
||||
AlignCompound: false
|
||||
AlignFunctionPointers: false
|
||||
PadOperators: false
|
||||
AlignConsecutiveTableGenDefinitionColons:
|
||||
Enabled: false
|
||||
AcrossEmptyLines: false
|
||||
AcrossComments: false
|
||||
AlignCompound: false
|
||||
AlignFunctionPointers: false
|
||||
PadOperators: false
|
||||
AlignEscapedNewlines: Right
|
||||
AlignOperands: Align
|
||||
AlignTrailingComments:
|
||||
Kind: Always
|
||||
OverEmptyLines: 0
|
||||
AllowAllArgumentsOnNextLine: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowBreakBeforeNoexceptSpecifier: Never
|
||||
AllowShortBlocksOnASingleLine: Never
|
||||
AllowShortCaseExpressionOnASingleLine: true
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortCompoundRequirementOnASingleLine: true
|
||||
AllowShortEnumsOnASingleLine: true
|
||||
AllowShortFunctionsOnASingleLine: Empty
|
||||
AllowShortIfStatementsOnASingleLine: Never
|
||||
AllowShortLambdasOnASingleLine: All
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: false
|
||||
AttributeMacros:
|
||||
- __capability
|
||||
BinPackArguments: false
|
||||
BinPackParameters: false
|
||||
BitFieldColonSpacing: Both
|
||||
BraceWrapping:
|
||||
AfterCaseLabel: false
|
||||
AfterClass: false
|
||||
AfterControlStatement: Never
|
||||
AfterEnum: false
|
||||
AfterFunction: false
|
||||
AfterNamespace: false
|
||||
AfterObjCDeclaration: false
|
||||
AfterStruct: true
|
||||
AfterUnion: false
|
||||
AfterExternBlock: false
|
||||
BeforeCatch: false
|
||||
BeforeElse: false
|
||||
BeforeLambdaBody: false
|
||||
BeforeWhile: false
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: true
|
||||
SplitEmptyRecord: true
|
||||
SplitEmptyNamespace: true
|
||||
BreakAdjacentStringLiterals: true
|
||||
BreakAfterAttributes: Always
|
||||
BreakAfterJavaFieldAnnotations: false
|
||||
BreakAfterReturnType: None
|
||||
BreakArrays: true
|
||||
BreakBeforeBinaryOperators: All
|
||||
BreakBeforeBraces: Attach
|
||||
BreakBeforeConceptDeclarations: Always
|
||||
BreakBeforeInlineASMColon: OnlyMultiline
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializers: BeforeColon
|
||||
BreakFunctionDefinitionParameters: false
|
||||
BreakInheritanceList: BeforeColon
|
||||
BreakStringLiterals: true
|
||||
BreakTemplateDeclarations: MultiLine
|
||||
ColumnLimit: 100
|
||||
CommentPragmas: "^ IWYU pragma:"
|
||||
CompactNamespaces: false
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ContinuationIndentWidth: 4
|
||||
Cpp11BracedListStyle: true
|
||||
DerivePointerAlignment: true
|
||||
DisableFormat: false
|
||||
EmptyLineAfterAccessModifier: Never
|
||||
EmptyLineBeforeAccessModifier: Always
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
FixNamespaceComments: true
|
||||
ForEachMacros:
|
||||
- foreach
|
||||
- Q_FOREACH
|
||||
- BOOST_FOREACH
|
||||
IfMacros:
|
||||
- KJ_IF_MAYBE
|
||||
IncludeBlocks: Preserve
|
||||
IncludeCategories:
|
||||
- Regex: ^"(llvm|llvm-c|clang|clang-c)/
|
||||
Priority: 2
|
||||
SortPriority: 0
|
||||
CaseSensitive: false
|
||||
- Regex: ^(<|"(gtest|gmock|isl|json)/)
|
||||
Priority: 3
|
||||
SortPriority: 0
|
||||
CaseSensitive: false
|
||||
- Regex: .*
|
||||
Priority: 1
|
||||
SortPriority: 0
|
||||
CaseSensitive: false
|
||||
IncludeIsMainRegex: (Test)?$
|
||||
IncludeIsMainSourceRegex: ""
|
||||
IndentAccessModifiers: true
|
||||
IndentCaseBlocks: true
|
||||
IndentCaseLabels: true
|
||||
IndentExternBlock: AfterExternBlock
|
||||
IndentGotoLabels: true
|
||||
IndentPPDirectives: BeforeHash
|
||||
IndentRequiresClause: true
|
||||
IndentWidth: 4
|
||||
IndentWrappedFunctionNames: true
|
||||
InsertBraces: false
|
||||
InsertNewlineAtEOF: false
|
||||
InsertTrailingCommas: None
|
||||
IntegerLiteralSeparator:
|
||||
Binary: 0
|
||||
BinaryMinDigits: 0
|
||||
Decimal: 0
|
||||
DecimalMinDigits: 0
|
||||
Hex: 0
|
||||
HexMinDigits: 0
|
||||
JavaScriptQuotes: Leave
|
||||
JavaScriptWrapImports: true
|
||||
KeepEmptyLines:
|
||||
AtEndOfFile: false
|
||||
AtStartOfBlock: true
|
||||
AtStartOfFile: true
|
||||
LambdaBodyIndentation: Signature
|
||||
LineEnding: DeriveLF
|
||||
MacroBlockBegin: ""
|
||||
MacroBlockEnd: ""
|
||||
MainIncludeChar: Quote
|
||||
MaxEmptyLinesToKeep: 1
|
||||
NamespaceIndentation: None
|
||||
ObjCBinPackProtocolList: Auto
|
||||
ObjCBlockIndentWidth: 2
|
||||
ObjCBreakBeforeNestedBlockParam: true
|
||||
ObjCSpaceAfterProperty: false
|
||||
ObjCSpaceBeforeProtocolList: true
|
||||
PPIndentWidth: -1
|
||||
PackConstructorInitializers: BinPack
|
||||
PenaltyBreakAssignment: 2
|
||||
PenaltyBreakBeforeFirstCallParameter: 19
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakOpenParenthesis: 0
|
||||
PenaltyBreakScopeResolution: 500
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyBreakTemplateDeclaration: 10
|
||||
PenaltyExcessCharacter: 1000000
|
||||
PenaltyIndentedWhitespace: 0
|
||||
PenaltyReturnTypeOnItsOwnLine: 60
|
||||
PointerAlignment: Right
|
||||
QualifierAlignment: Left
|
||||
ReferenceAlignment: Pointer
|
||||
ReflowComments: true
|
||||
RemoveBracesLLVM: true
|
||||
RemoveParentheses: MultipleParentheses
|
||||
RemoveSemicolon: false
|
||||
RequiresClausePosition: OwnLine
|
||||
RequiresExpressionIndentation: OuterScope
|
||||
SeparateDefinitionBlocks: Always
|
||||
ShortNamespaceLines: 1
|
||||
SkipMacroDefinitionBody: false
|
||||
SortIncludes: CaseSensitive
|
||||
SortJavaStaticImport: Before
|
||||
SortUsingDeclarations: LexicographicNumeric
|
||||
SpaceAfterCStyleCast: true
|
||||
SpaceAfterLogicalNot: false
|
||||
SpaceAfterTemplateKeyword: true
|
||||
SpaceAroundPointerQualifiers: Default
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeCaseColon: false
|
||||
SpaceBeforeCpp11BracedList: true
|
||||
SpaceBeforeCtorInitializerColon: true
|
||||
SpaceBeforeInheritanceColon: true
|
||||
SpaceBeforeJsonColon: false
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceBeforeParensOptions:
|
||||
AfterControlStatements: true
|
||||
AfterForeachMacros: true
|
||||
AfterFunctionDeclarationName: true
|
||||
AfterFunctionDefinitionName: true
|
||||
AfterIfMacros: true
|
||||
AfterOverloadedOperator: false
|
||||
AfterPlacementOperator: true
|
||||
AfterRequiresInClause: false
|
||||
AfterRequiresInExpression: false
|
||||
BeforeNonEmptyParentheses: false
|
||||
SpaceBeforeRangeBasedForLoopColon: true
|
||||
SpaceBeforeSquareBrackets: false
|
||||
SpaceInEmptyBlock: false
|
||||
SpacesBeforeTrailingComments: 1
|
||||
SpacesInAngles: Never
|
||||
SpacesInContainerLiterals: true
|
||||
SpacesInLineCommentPrefix:
|
||||
Minimum: 1
|
||||
Maximum: -1
|
||||
SpacesInParens: Custom
|
||||
SpacesInParensOptions:
|
||||
ExceptDoubleParentheses: false
|
||||
InConditionalStatements: true
|
||||
InCStyleCasts: false
|
||||
InEmptyParentheses: false
|
||||
Other: true
|
||||
SpacesInSquareBrackets: true
|
||||
Standard: Latest
|
||||
StatementAttributeLikeMacros:
|
||||
- Q_EMIT
|
||||
StatementMacros:
|
||||
- Q_UNUSED
|
||||
- QT_REQUIRE_VERSION
|
||||
TabWidth: 4
|
||||
TableGenBreakInsideDAGArg: DontBreak
|
||||
UseTab: Never
|
||||
VerilogBreakBetweenInstancePorts: true
|
||||
WhitespaceSensitiveMacros:
|
||||
- BOOST_PP_STRINGIZE
|
||||
- CF_SWIFT_NAME
|
||||
- NS_SWIFT_NAME
|
||||
- PP_STRINGIZE
|
||||
- STRINGIZE
|
||||
@@ -0,0 +1,744 @@
|
||||
import eslint from '@eslint/js';
|
||||
import globals from 'globals';
|
||||
import stylistic from '@stylistic/eslint-plugin';
|
||||
import tseslint from 'typescript-eslint';
|
||||
import typescript from '@typescript-eslint/eslint-plugin';
|
||||
import vue from 'eslint-plugin-vue';
|
||||
|
||||
const style = {
|
||||
'plugins': {
|
||||
'@stylistic': stylistic,
|
||||
'@stylistic/js': stylistic,
|
||||
'@stylistic/ts': stylistic
|
||||
},
|
||||
'files': [
|
||||
'**/*.ts',
|
||||
'**/*.js',
|
||||
'**/*.mjs',
|
||||
'**/*.cjs',
|
||||
'**/*.tsx',
|
||||
'**/*.jsx'
|
||||
],
|
||||
'rules': {
|
||||
'sort-imports': [
|
||||
'warn',
|
||||
{
|
||||
'ignoreCase': false,
|
||||
'ignoreDeclarationSort': false,
|
||||
'ignoreMemberSort': false,
|
||||
'memberSyntaxSortOrder': [
|
||||
'none',
|
||||
'all',
|
||||
'multiple',
|
||||
'single'
|
||||
],
|
||||
'allowSeparatedGroups': false
|
||||
}
|
||||
],
|
||||
// Formatting
|
||||
'@stylistic/array-bracket-newline': [
|
||||
'error',
|
||||
{
|
||||
'multiline': false,
|
||||
'minItems': 2
|
||||
}
|
||||
],
|
||||
'@stylistic/array-bracket-spacing': [
|
||||
'error',
|
||||
'always'
|
||||
],
|
||||
'@stylistic/array-element-newline': [
|
||||
'error',
|
||||
{
|
||||
'consistent': false,
|
||||
'multiline': false,
|
||||
'minItems': 2
|
||||
}
|
||||
],
|
||||
'@stylistic/arrow-parens': [
|
||||
'error',
|
||||
'as-needed'
|
||||
],
|
||||
'@stylistic/arrow-spacing': [
|
||||
'error',
|
||||
{
|
||||
'before': true,
|
||||
'after': true
|
||||
}
|
||||
],
|
||||
'@stylistic/block-spacing': [
|
||||
'error',
|
||||
'always'
|
||||
],
|
||||
'@stylistic/brace-style': [
|
||||
'error',
|
||||
'1tbs',
|
||||
{
|
||||
'allowSingleLine': false
|
||||
}
|
||||
],
|
||||
'@stylistic/comma-dangle': [
|
||||
'error',
|
||||
'never'
|
||||
],
|
||||
'@stylistic/comma-spacing': [
|
||||
'error',
|
||||
{
|
||||
'before': false,
|
||||
'after': true
|
||||
}
|
||||
],
|
||||
'@stylistic/comma-style': [
|
||||
'error',
|
||||
'last'
|
||||
],
|
||||
'@stylistic/dot-location': [
|
||||
'error',
|
||||
'property'
|
||||
],
|
||||
'@stylistic/function-call-argument-newline': [
|
||||
'error',
|
||||
'consistent'
|
||||
],
|
||||
'@stylistic/function-call-spacing': [
|
||||
'error',
|
||||
'never'
|
||||
],
|
||||
'@stylistic/function-paren-newline': [
|
||||
'error',
|
||||
'multiline-arguments'
|
||||
],
|
||||
'@stylistic/implicit-arrow-linebreak': [
|
||||
'error',
|
||||
'beside'
|
||||
],
|
||||
'@stylistic/indent': [
|
||||
'error',
|
||||
4
|
||||
],
|
||||
'@stylistic/indent-binary-ops': [
|
||||
'error',
|
||||
4
|
||||
],
|
||||
'@stylistic/key-spacing': [
|
||||
'error',
|
||||
{
|
||||
'beforeColon': false,
|
||||
'afterColon': true
|
||||
}
|
||||
],
|
||||
'@stylistic/keyword-spacing': [
|
||||
'error',
|
||||
{
|
||||
'before': true,
|
||||
'after': true
|
||||
}
|
||||
],
|
||||
'@stylistic/lines-between-class-members': [
|
||||
'error',
|
||||
'always'
|
||||
],
|
||||
'@stylistic/max-len': [
|
||||
'warn',
|
||||
{
|
||||
'code': 140,
|
||||
'comments': 160,
|
||||
'ignoreComments': false,
|
||||
'ignoreUrls': true,
|
||||
'ignoreStrings': true,
|
||||
'ignoreTemplateLiterals': true,
|
||||
'ignoreRegExpLiterals': true
|
||||
}
|
||||
],
|
||||
'@stylistic/max-statements-per-line': [
|
||||
'error',
|
||||
{
|
||||
'max': 1
|
||||
}
|
||||
],
|
||||
'@stylistic/multiline-ternary': [
|
||||
'error',
|
||||
'always-multiline'
|
||||
],
|
||||
'@stylistic/new-parens': [
|
||||
'error',
|
||||
'always'
|
||||
],
|
||||
'@stylistic/newline-per-chained-call': 'error',
|
||||
'@stylistic/no-confusing-arrow': 'error',
|
||||
'@stylistic/no-extra-parens': [
|
||||
'error',
|
||||
'all',
|
||||
{
|
||||
'nestedBinaryExpressions': false,
|
||||
'ternaryOperandBinaryExpressions': false,
|
||||
'ignoreJSX': 'multi-line',
|
||||
'nestedConditionalExpressions': false
|
||||
}
|
||||
],
|
||||
'@stylistic/no-extra-semi': 'error',
|
||||
'@stylistic/no-floating-decimal': 'error',
|
||||
'@stylistic/no-mixed-operators': 'error',
|
||||
'@stylistic/no-mixed-spaces-and-tabs': 'error',
|
||||
'@stylistic/no-multi-spaces': 'error',
|
||||
'@stylistic/no-multiple-empty-lines': [
|
||||
'error',
|
||||
{
|
||||
'max': 3,
|
||||
'maxEOF': 2
|
||||
}
|
||||
],
|
||||
'@stylistic/no-tabs': 'error',
|
||||
'@stylistic/no-trailing-spaces': 'error',
|
||||
'@stylistic/no-whitespace-before-property': 'error',
|
||||
'@stylistic/object-curly-newline': [
|
||||
'error',
|
||||
{
|
||||
'multiline': true,
|
||||
'minProperties': 1
|
||||
}
|
||||
],
|
||||
'@stylistic/object-curly-spacing': [
|
||||
'error',
|
||||
'always'
|
||||
],
|
||||
'@stylistic/object-property-newline': 'error',
|
||||
'@stylistic/one-var-declaration-per-line': 'error',
|
||||
'@stylistic/operator-linebreak': [
|
||||
'error',
|
||||
'before'
|
||||
],
|
||||
'@stylistic/padded-blocks': [
|
||||
'error',
|
||||
{
|
||||
'blocks': 'never',
|
||||
'classes': 'always',
|
||||
'switches': 'never'
|
||||
}
|
||||
],
|
||||
|
||||
// Padding lines. The most in-depth part of this config
|
||||
'@stylistic/padding-line-between-statements': [
|
||||
'error',
|
||||
// Variables, Constants
|
||||
{
|
||||
'blankLine': 'never',
|
||||
'prev': 'var',
|
||||
'next': 'var'
|
||||
},
|
||||
{
|
||||
'blankLine': 'never',
|
||||
'prev': 'let',
|
||||
'next': 'let'
|
||||
},
|
||||
{
|
||||
'blankLine': 'never',
|
||||
'prev': 'const',
|
||||
'next': 'const'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'var',
|
||||
'next': [
|
||||
'block',
|
||||
'block-like',
|
||||
'break',
|
||||
'cjs-export',
|
||||
'cjs-import',
|
||||
'class',
|
||||
'const',
|
||||
'continue',
|
||||
'debugger',
|
||||
'directive',
|
||||
'do',
|
||||
'empty',
|
||||
'export',
|
||||
'expression',
|
||||
'for',
|
||||
'function',
|
||||
'if',
|
||||
'iife',
|
||||
'import',
|
||||
'let',
|
||||
'return',
|
||||
'switch',
|
||||
'throw',
|
||||
'try',
|
||||
'var',
|
||||
'with'
|
||||
]
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'let',
|
||||
'next': [
|
||||
'block',
|
||||
'block-like',
|
||||
'break',
|
||||
'cjs-export',
|
||||
'cjs-import',
|
||||
'class',
|
||||
'const',
|
||||
'continue',
|
||||
'debugger',
|
||||
'directive',
|
||||
'do',
|
||||
'empty',
|
||||
'export',
|
||||
'expression',
|
||||
'for',
|
||||
'function',
|
||||
'if',
|
||||
'iife',
|
||||
'import',
|
||||
'return',
|
||||
'switch',
|
||||
'throw',
|
||||
'try',
|
||||
'var',
|
||||
'while',
|
||||
'with'
|
||||
]
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'const',
|
||||
'next': [
|
||||
'block',
|
||||
'block-like',
|
||||
'break',
|
||||
'cjs-export',
|
||||
'cjs-import',
|
||||
'class',
|
||||
'continue',
|
||||
'debugger',
|
||||
'directive',
|
||||
'do',
|
||||
'empty',
|
||||
'export',
|
||||
'expression',
|
||||
'for',
|
||||
'function',
|
||||
'if',
|
||||
'iife',
|
||||
'import',
|
||||
'let',
|
||||
'return',
|
||||
'switch',
|
||||
'throw',
|
||||
'try',
|
||||
'var',
|
||||
'while',
|
||||
'with'
|
||||
]
|
||||
},
|
||||
// Import
|
||||
{
|
||||
'blankLine': 'never',
|
||||
'prev': 'import',
|
||||
'next': 'import'
|
||||
},
|
||||
{
|
||||
'blankLine': 'never',
|
||||
'prev': 'cjs-import',
|
||||
'next': 'cjs-import'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': [
|
||||
'block',
|
||||
'block-like',
|
||||
'break',
|
||||
'cjs-export',
|
||||
'class',
|
||||
'const',
|
||||
'continue',
|
||||
'debugger',
|
||||
'directive',
|
||||
'do',
|
||||
'empty',
|
||||
'export',
|
||||
'expression',
|
||||
'for',
|
||||
'function',
|
||||
'if',
|
||||
'iife',
|
||||
'let',
|
||||
'return',
|
||||
'switch',
|
||||
'throw',
|
||||
'try',
|
||||
'var',
|
||||
'while',
|
||||
'with'
|
||||
],
|
||||
'next': 'cjs-import'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'cjs-import',
|
||||
'next': [
|
||||
'block',
|
||||
'block-like',
|
||||
'break',
|
||||
'cjs-export',
|
||||
'class',
|
||||
'const',
|
||||
'continue',
|
||||
'debugger',
|
||||
'directive',
|
||||
'do',
|
||||
'empty',
|
||||
'export',
|
||||
'expression',
|
||||
'for',
|
||||
'function',
|
||||
'if',
|
||||
'iife',
|
||||
'let',
|
||||
'return',
|
||||
'switch',
|
||||
'throw',
|
||||
'try',
|
||||
'var',
|
||||
'while',
|
||||
'with'
|
||||
]
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': [
|
||||
'block',
|
||||
'block-like',
|
||||
'break',
|
||||
'cjs-export',
|
||||
'class',
|
||||
'const',
|
||||
'continue',
|
||||
'debugger',
|
||||
'directive',
|
||||
'do',
|
||||
'empty',
|
||||
'export',
|
||||
'expression',
|
||||
'for',
|
||||
'function',
|
||||
'if',
|
||||
'iife',
|
||||
'let',
|
||||
'return',
|
||||
'switch',
|
||||
'throw',
|
||||
'try',
|
||||
'var',
|
||||
'while',
|
||||
'with'
|
||||
],
|
||||
'next': 'import'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'import',
|
||||
'next': [
|
||||
'block',
|
||||
'block-like',
|
||||
'break',
|
||||
'cjs-export',
|
||||
'class',
|
||||
'const',
|
||||
'continue',
|
||||
'debugger',
|
||||
'directive',
|
||||
'do',
|
||||
'empty',
|
||||
'export',
|
||||
'expression',
|
||||
'for',
|
||||
'function',
|
||||
'if',
|
||||
'iife',
|
||||
'let',
|
||||
'return',
|
||||
'switch',
|
||||
'throw',
|
||||
'try',
|
||||
'var',
|
||||
'while',
|
||||
'with'
|
||||
]
|
||||
},
|
||||
// If
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': '*',
|
||||
'next': 'if'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'if',
|
||||
'next': '*'
|
||||
},
|
||||
// For
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': '*',
|
||||
'next': 'for'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'for',
|
||||
'next': '*'
|
||||
},
|
||||
// While
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': '*',
|
||||
'next': 'while'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'while',
|
||||
'next': '*'
|
||||
},
|
||||
// Functions
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': '*',
|
||||
'next': 'function'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'function',
|
||||
'next': '*'
|
||||
},
|
||||
// Block Statements
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': '*',
|
||||
'next': 'block-like'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'block-like',
|
||||
'next': '*'
|
||||
},
|
||||
// Switch
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': '*',
|
||||
'next': 'switch'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'switch',
|
||||
'next': '*'
|
||||
},
|
||||
// Try-Catch
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': '*',
|
||||
'next': 'try'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'try',
|
||||
'next': '*'
|
||||
},
|
||||
// Throw
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': '*',
|
||||
'next': 'throw'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'throw',
|
||||
'next': '*'
|
||||
},
|
||||
// Return
|
||||
{
|
||||
'blankLine': 'never',
|
||||
'prev': 'return',
|
||||
'next': '*'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': '*',
|
||||
'next': 'return'
|
||||
},
|
||||
// Export
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': '*',
|
||||
'next': 'export'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'export',
|
||||
'next': '*'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': '*',
|
||||
'next': 'cjs-export'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'cjs-export',
|
||||
'next': '*'
|
||||
},
|
||||
// Classes
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': '*',
|
||||
'next': 'class'
|
||||
},
|
||||
{
|
||||
'blankLine': 'always',
|
||||
'prev': 'class',
|
||||
'next': '*'
|
||||
}
|
||||
],
|
||||
'@stylistic/quote-props': [
|
||||
'error',
|
||||
'always'
|
||||
],
|
||||
'@stylistic/quotes': [
|
||||
'error',
|
||||
'single'
|
||||
],
|
||||
'@stylistic/rest-spread-spacing': [
|
||||
'error',
|
||||
'never'
|
||||
],
|
||||
'@stylistic/semi': [
|
||||
'error',
|
||||
'always'
|
||||
],
|
||||
'@stylistic/semi-spacing': [
|
||||
'error',
|
||||
{
|
||||
'before': false,
|
||||
'after': true
|
||||
}
|
||||
],
|
||||
'@stylistic/semi-style': [
|
||||
'error',
|
||||
'last'
|
||||
],
|
||||
'@stylistic/space-before-blocks': [
|
||||
'error',
|
||||
'always'
|
||||
],
|
||||
'@stylistic/space-before-function-paren': [
|
||||
'error',
|
||||
'always'
|
||||
],
|
||||
'@stylistic/space-in-parens': [
|
||||
'error',
|
||||
'always'
|
||||
],
|
||||
'@stylistic/space-infix-ops': [
|
||||
'error',
|
||||
{
|
||||
'int32Hint': false
|
||||
}
|
||||
],
|
||||
'@stylistic/space-unary-ops': 'error',
|
||||
'@stylistic/spaced-comment': [
|
||||
'error',
|
||||
'always'
|
||||
],
|
||||
'@stylistic/switch-colon-spacing': 'error',
|
||||
'@stylistic/template-curly-spacing': [
|
||||
'error',
|
||||
'always'
|
||||
],
|
||||
'@stylistic/template-tag-spacing': [
|
||||
'error',
|
||||
'always'
|
||||
],
|
||||
'@stylistic/type-generic-spacing': 'error',
|
||||
'@stylistic/type-named-tuple-spacing': 'error',
|
||||
'@stylistic/wrap-iife': [
|
||||
'error',
|
||||
'inside'
|
||||
],
|
||||
'@stylistic/wrap-regex': 'error',
|
||||
'@stylistic/ts/type-annotation-spacing': 'error'
|
||||
}
|
||||
};
|
||||
|
||||
/** @type {import('eslint').Linter.Config} */
|
||||
export default tseslint.config(
|
||||
// Base JavaScript rules
|
||||
eslint.configs.recommended,
|
||||
tseslint.configs.recommended,
|
||||
style,
|
||||
|
||||
// Vue support (including TS and JSX inside SFCs)
|
||||
{
|
||||
'files': [ '**/*.vue' ],
|
||||
'languageOptions': {
|
||||
'sourceType': 'module',
|
||||
'ecmaVersion': 'latest',
|
||||
'globals': globals.browser,
|
||||
'parserOptions': {
|
||||
'parser': tseslint.parser
|
||||
}
|
||||
},
|
||||
'plugins': {
|
||||
'vue': vue,
|
||||
'@stylistic': stylistic,
|
||||
'@stylistic/js': stylistic,
|
||||
'@stylistic/ts': stylistic,
|
||||
'@typescript-eslint': typescript
|
||||
},
|
||||
'extends': [
|
||||
eslint.configs.recommended,
|
||||
...vue.configs['flat/recommended']
|
||||
],
|
||||
'rules': {
|
||||
...typescript.configs.recommended.rules,
|
||||
...style.rules,
|
||||
|
||||
// Vue specific rules
|
||||
'@stylistic/indent': 'off',
|
||||
'vue/html-indent': [
|
||||
'error',
|
||||
4
|
||||
],
|
||||
'vue/html-comment-indent': [
|
||||
'error',
|
||||
4
|
||||
],
|
||||
'vue/script-indent': [
|
||||
'error',
|
||||
4,
|
||||
{
|
||||
'baseIndent': 1,
|
||||
'switchCase': 1
|
||||
}
|
||||
],
|
||||
'vue/html-self-closing': [
|
||||
'error',
|
||||
{
|
||||
'html': {
|
||||
'void': 'never',
|
||||
'normal': 'never',
|
||||
'component': 'always'
|
||||
},
|
||||
'svg': 'always',
|
||||
'math': 'never'
|
||||
}
|
||||
],
|
||||
'vue/max-attributes-per-line': [
|
||||
'error',
|
||||
{
|
||||
'singleline': 3,
|
||||
'multiline': 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
);
|
||||
@@ -0,0 +1,86 @@
|
||||
# Use spaces for indent (because f*k tabs)
|
||||
defaultIndent: " "
|
||||
|
||||
# Limit Number of backups
|
||||
maxNumberOfBackups: 3
|
||||
|
||||
verbatimEnvironments:
|
||||
verbatim: 1
|
||||
lstlisting: 1
|
||||
minted: 1
|
||||
code: 1
|
||||
|
||||
indentRules:
|
||||
recall: " "
|
||||
remarks: " "
|
||||
remark: " "
|
||||
guides: " "
|
||||
properties: " "
|
||||
restrictions: " "
|
||||
limitations: " "
|
||||
terms: " "
|
||||
notation: " "
|
||||
usage: " "
|
||||
task: " "
|
||||
proof: " "
|
||||
general: " "
|
||||
simplebox: " "
|
||||
definition: " "
|
||||
theorem: " "
|
||||
lemma: " "
|
||||
corollary: " "
|
||||
axiom: " "
|
||||
fact: " "
|
||||
proposition: " "
|
||||
example: " "
|
||||
formula: " "
|
||||
conjugation: " "
|
||||
forms: " "
|
||||
|
||||
lookForAlignDelims:
|
||||
tables:
|
||||
delims: 1
|
||||
alignDoubleBackSlash: 1
|
||||
spacesBeforeDoubleBackSlash: 1
|
||||
multiColumnGrouping: 0
|
||||
alignRowsWithoutMaxDelims: 1
|
||||
spacesBeforeAmpersand: 1
|
||||
spacesAfterAmpersand: 1
|
||||
justification: left
|
||||
alignFinalDoubleBackSlash: 0
|
||||
dontMeasure: 0
|
||||
delimiterRegEx: (?<!\\)(&)
|
||||
delimiterJustification: left
|
||||
lookForChildCodeBlocks: 1
|
||||
alignContentAfterDoubleBackSlash: 0
|
||||
spacesAfterDoubleBackSlash: 1
|
||||
|
||||
specialBeginEnd:
|
||||
If:
|
||||
begin: '\\If'
|
||||
middle:
|
||||
- '\\ElsIf'
|
||||
- '\\Else'
|
||||
end: '\\EndIf'
|
||||
lookForThis: 1
|
||||
For:
|
||||
begin: '\\For'
|
||||
end: '\\EndFor'
|
||||
lookForThis: 1
|
||||
Procedure:
|
||||
begin: '\\Procedure'
|
||||
end: '\\EndProcedure'
|
||||
lookForThis: 1
|
||||
Function:
|
||||
begin: '\\Function'
|
||||
end: '\\EndFunction'
|
||||
lookForThis: 1
|
||||
While:
|
||||
begin: '\\While'
|
||||
end: '\\EndWhile'
|
||||
lookForThis: 1
|
||||
Repeat:
|
||||
begin: '\\Repeat'
|
||||
end: '\\Until'
|
||||
lookForThis: 1
|
||||
specialBeforeCommand: 1
|
||||
@@ -0,0 +1,2 @@
|
||||
paths:
|
||||
- /home/janis/projects/system/dotfiles/linters/indentconfig.yaml
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.28.0",
|
||||
"@stylistic/eslint-plugin": "^4.4.1",
|
||||
"eslint-plugin-vue": "^10.2.0",
|
||||
"typescript-eslint": "^8.33.1"
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
import decman
|
||||
from decman.plugins import pacman
|
||||
|
||||
|
||||
class BaseModule(decman.Module):
|
||||
def __init__(self):
|
||||
"""Base packages that should never be uninstalled"""
|
||||
super().__init__("latex")
|
||||
|
||||
@pacman.packages
|
||||
def pkgs(self) -> set[str]:
|
||||
return {
|
||||
"texlive",
|
||||
"texlive-langgerman",
|
||||
"perl-yaml-tiny",
|
||||
"perl-file-homedir",
|
||||
"biber",
|
||||
"texlab",
|
||||
}
|
||||
|
||||
def on_enable(self, store: decman.Store):
|
||||
# TODO: clone the git repo
|
||||
return super().on_enable(store)
|
||||
@@ -1,27 +0,0 @@
|
||||
import decman
|
||||
from decman.plugins import pacman, aur
|
||||
|
||||
|
||||
class NeovimModule(decman.Module):
|
||||
def __init__(self):
|
||||
"""Neovim Packages"""
|
||||
super().__init__("neovim")
|
||||
|
||||
@pacman.packages
|
||||
def pkgs(self) -> set[str]:
|
||||
return {
|
||||
"neovim",
|
||||
"lua",
|
||||
"lua-language-server",
|
||||
"tree-sitter",
|
||||
"tree-sitter-cli",
|
||||
"stylua",
|
||||
}
|
||||
|
||||
# def directories(self) -> dict[str, decman.Directory]:
|
||||
# return { "": decman.Directory() }
|
||||
|
||||
@aur.packages
|
||||
def aurpkgs(self) -> set[str]:
|
||||
# Consider switching to WiVRN
|
||||
return {"bs-manager-bin", "alvr-bin"}
|
||||
@@ -1,28 +0,0 @@
|
||||
import decman
|
||||
from decman.plugins import pacman
|
||||
|
||||
|
||||
class DevTools(decman.Module):
|
||||
def __init__(self):
|
||||
"""Base packages that should never be uninstalled"""
|
||||
super().__init__("dev-tools")
|
||||
|
||||
@pacman.packages
|
||||
def pkgs(self) -> set[str]:
|
||||
return {
|
||||
"act",
|
||||
"cronie",
|
||||
"cloc",
|
||||
"docker",
|
||||
"docker-buildx",
|
||||
"docker-compose",
|
||||
"filezilla",
|
||||
"kitty",
|
||||
"lazygit",
|
||||
"git-lfs",
|
||||
"hugo",
|
||||
"meld",
|
||||
"minisign",
|
||||
"serpl",
|
||||
"terminator",
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
import decman
|
||||
from decman.plugins import pacman, aur
|
||||
|
||||
|
||||
class Games(decman.Module):
|
||||
def __init__(self):
|
||||
"""Base packages that should never be uninstalled"""
|
||||
super().__init__("games")
|
||||
|
||||
@pacman.packages
|
||||
def pkgs(self) -> set[str]:
|
||||
return {
|
||||
"android-udev",
|
||||
"android-tools",
|
||||
"lib32-vulkan-radeon",
|
||||
"vulkan-radeon",
|
||||
"steam",
|
||||
"prismlauncher",
|
||||
"gamemmode",
|
||||
"gamescope",
|
||||
}
|
||||
|
||||
@aur.packages
|
||||
def aurpkgs(self) -> set[str]:
|
||||
# Consider switching to WiVRN
|
||||
return {"bs-manager-bin", "alvr-bin"}
|
||||
@@ -1,15 +0,0 @@
|
||||
import decman
|
||||
from decman.plugins import aur
|
||||
|
||||
|
||||
class BasePackages(decman.Module):
|
||||
def __init__(self):
|
||||
"""Base packages that should never be uninstalled"""
|
||||
super().__init__("steering-wheel")
|
||||
|
||||
@aur.packages
|
||||
def aurpkgs(self) -> set[str]:
|
||||
return {"oversteer", "hid-tmff2-dkms-git"}
|
||||
|
||||
def on_enable(self, store: decman.Store):
|
||||
return super().on_enable(store)
|
||||
@@ -1,45 +0,0 @@
|
||||
import decman
|
||||
from decman.plugins import pacman, aur
|
||||
|
||||
|
||||
class BasePackages(decman.Module):
|
||||
def __init__(self):
|
||||
"""Base packages that should never be uninstalled"""
|
||||
super().__init__("base")
|
||||
|
||||
@pacman.packages
|
||||
def pkgs(self) -> set[str]:
|
||||
return {
|
||||
"base",
|
||||
"cups",
|
||||
"efibootmgr",
|
||||
"grub",
|
||||
"linux",
|
||||
"linux-firmware",
|
||||
"linux-headers",
|
||||
"networkmanager",
|
||||
"git",
|
||||
"sudo",
|
||||
"systemd-resolvconf",
|
||||
"trash-cli",
|
||||
"base-devel",
|
||||
"cifs",
|
||||
"reflector",
|
||||
"paccache",
|
||||
"plymouth"
|
||||
}
|
||||
|
||||
@aur.packages
|
||||
def aurpkgs(self) -> set[str]:
|
||||
return {"decman"}
|
||||
|
||||
def files(self) -> dict[str, decman.File]:
|
||||
return {
|
||||
"/etc/mkinitcpio.conf": decman.File(source_file="./system/mkinitcpio.conf"),
|
||||
"/etc/pacman.conf": decman.File(source_file="./system/pacman.conf"),
|
||||
"/etc/default/grub": decman.File(source_file="./system/grub"),
|
||||
}
|
||||
|
||||
def on_change(self, store):
|
||||
decman.prg(["mkinitcpio", "-P"])
|
||||
decman.prg(["grub-mkconfig", "-o", "/boot/grub/grub.cfg"])
|
||||
@@ -1,19 +0,0 @@
|
||||
import decman
|
||||
from decman.plugins import pacman, aur
|
||||
|
||||
|
||||
class BaseModule(decman.Module):
|
||||
def __init__(self):
|
||||
"""Base packages that should never be uninstalled"""
|
||||
super().__init__("base")
|
||||
|
||||
@pacman.packages
|
||||
def pkgs(self) -> set[str]:
|
||||
return {
|
||||
"pipewire",
|
||||
"pipewire-alsa",
|
||||
"pipewire-pulse",
|
||||
"pipewire-jack",
|
||||
"wireplumber",
|
||||
"pavucontrol",
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
# NOTE: Bar will be rewritten in QuickShell likely
|
||||
import decman
|
||||
from decman.plugins import pacman, aur
|
||||
|
||||
|
||||
class LoginManager(decman.Module):
|
||||
def __init__(self):
|
||||
"""Base packages that should never be uninstalled"""
|
||||
super().__init__("base")
|
||||
|
||||
@pacman.packages
|
||||
def pkgs(self) -> set[str]:
|
||||
return {
|
||||
# "quickshell",
|
||||
"playerctl",
|
||||
"playerctl",
|
||||
}
|
||||
|
||||
@aur.packages
|
||||
def aurpkgs(self) -> set[str]:
|
||||
# TODO: Rewrite bar in quickshell
|
||||
return {"aylurs-gtk-shell"}
|
||||
@@ -1,27 +0,0 @@
|
||||
import decman
|
||||
from decman.plugins import pacman, aur
|
||||
|
||||
|
||||
class BaseModule(decman.Module):
|
||||
def __init__(self):
|
||||
"""Base packages that should never be uninstalled"""
|
||||
super().__init__("yazi")
|
||||
|
||||
@pacman.packages
|
||||
def pkgs(self) -> set[str]:
|
||||
return {
|
||||
"yazi",
|
||||
"ouch",
|
||||
"grub",
|
||||
"linux",
|
||||
"networkmanager",
|
||||
"git",
|
||||
"base-devel",
|
||||
}
|
||||
|
||||
@aur.packages
|
||||
def aurpkgs(self) -> set[str]:
|
||||
return {"xdg-desktop-portal-termfilechooser-hunkyburrito-git"}
|
||||
|
||||
def files(self) -> dict[str, decman.File]:
|
||||
return super().files()
|
||||
@@ -1,23 +0,0 @@
|
||||
import decman
|
||||
from decman.plugins import pacman, aur
|
||||
|
||||
|
||||
class BaseModule(decman.Module):
|
||||
def __init__(self):
|
||||
"""Base packages that should never be uninstalled"""
|
||||
super().__init__("fonts")
|
||||
|
||||
@pacman.packages
|
||||
def pkgs(self) -> set[str]:
|
||||
return {
|
||||
"adobe-source-code-pro-fonts"
|
||||
"ttf-fantasque-nerd",
|
||||
"ttf-jetbrains-mono-nerd",
|
||||
"ttf-iosevka-nerd",
|
||||
"ttf-nerd-fonts-symbols-common",
|
||||
"inter-font",
|
||||
}
|
||||
|
||||
@aur.packages
|
||||
def aurpkgs(self) -> set[str]:
|
||||
return {"ttf-comfortaa"}
|
||||
@@ -1,33 +0,0 @@
|
||||
import decman
|
||||
from decman.plugins import pacman, aur
|
||||
|
||||
|
||||
class BaseModule(decman.Module):
|
||||
def __init__(self):
|
||||
"""Base packages that should never be uninstalled"""
|
||||
super().__init__("base")
|
||||
|
||||
@pacman.packages
|
||||
def pkgs(self) -> set[str]:
|
||||
return {
|
||||
"hyprland",
|
||||
"hyprlock",
|
||||
"hypridle",
|
||||
"hyprshutdown",
|
||||
"grimblast",
|
||||
"grim",
|
||||
"xdg-desktop-portal-hyprland",
|
||||
"hyprpolkitagent",
|
||||
"hyprpaper",
|
||||
"wl-clipboard",
|
||||
"cliphist",
|
||||
"hyrplauncher",
|
||||
"hyprpwcenter",
|
||||
"hyprtoolkit",
|
||||
}
|
||||
|
||||
def directories(self) -> dict[str, decman.Directory]:
|
||||
return super().directories()
|
||||
|
||||
def on_change(self, store: decman.Store):
|
||||
return super().on_change(store)
|
||||
@@ -1,30 +0,0 @@
|
||||
from typing import Literal
|
||||
|
||||
import decman
|
||||
from decman.plugins import pacman, systemd
|
||||
|
||||
|
||||
class LoginManager(decman.Module):
|
||||
def __init__(self, platform: Literal["desktop", "laptop"]):
|
||||
"""Base packages that should never be uninstalled"""
|
||||
self._platform: Literal["desktop", "laptop"] = platform
|
||||
super().__init__("base")
|
||||
|
||||
@pacman.packages
|
||||
def pkgs(self) -> set[str]:
|
||||
if self._platform == "desktop":
|
||||
return {
|
||||
"greetd",
|
||||
"greetd-tuigreet",
|
||||
}
|
||||
else:
|
||||
return {"gdm"}
|
||||
|
||||
# TODO: Config files for laptop and desktop
|
||||
|
||||
@systemd.units
|
||||
def units(self) -> set[str]:
|
||||
if self._platform == "desktop":
|
||||
return {"greetd.service"}
|
||||
else:
|
||||
return {"gdm.service"}
|
||||
@@ -1,55 +0,0 @@
|
||||
import decman
|
||||
from decman.plugins import pacman, aur
|
||||
|
||||
|
||||
class UtilPackages(decman.Module):
|
||||
def __init__(self):
|
||||
"""Util packages"""
|
||||
super().__init__("util")
|
||||
|
||||
@pacman.packages
|
||||
def pkgs(self) -> set[str]:
|
||||
return {
|
||||
"bashtop",
|
||||
"bluez",
|
||||
"bluez-utils",
|
||||
"blueman",
|
||||
"dig",
|
||||
"evince",
|
||||
"fastfetch",
|
||||
"fd",
|
||||
"ffmpeg",
|
||||
"ffmpegthumbnailer",
|
||||
"fish",
|
||||
"fzf",
|
||||
"gdu",
|
||||
"gimp",
|
||||
"gwenview",
|
||||
"handbrake",
|
||||
"iptables",
|
||||
"man-pages",
|
||||
"man-db",
|
||||
"mpv",
|
||||
"nextcloud-client",
|
||||
"obs-studio",
|
||||
"okular",
|
||||
"openconnect",
|
||||
"qalculate-qt",
|
||||
"ripgrep",
|
||||
"simple-scan",
|
||||
"smartmontools",
|
||||
"thunderbird",
|
||||
"tldr",
|
||||
"unzip",
|
||||
"wget",
|
||||
"wine",
|
||||
"xclip",
|
||||
"zathura",
|
||||
"zathura-pdf-poppler",
|
||||
"zip",
|
||||
"zoxide",
|
||||
}
|
||||
|
||||
@aur.packages
|
||||
def aurpkgs(self) -> set[str]:
|
||||
return {"librewolf-bin", "brave-bin", "vesktop-bin", "uxplay", "git-credential-manager-bin"}
|
||||
@@ -1,5 +0,0 @@
|
||||
import decman
|
||||
|
||||
|
||||
class SystemTheme(decman.Module):
|
||||
pass
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user