Compare commits
2 commits
8381f25e3a
...
c67d2dec04
| Author | SHA1 | Date | |
|---|---|---|---|
| c67d2dec04 | |||
| a1bd9a5d29 |
43 changed files with 3346 additions and 15 deletions
60
.devcontainer/devcontainer-lock.json
Normal file
60
.devcontainer/devcontainer-lock.json
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
{
|
||||
"features": {
|
||||
"ghcr.io/devcontainers-extra/features/fish-apt-get:1": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "ghcr.io/devcontainers-extra/features/fish-apt-get@sha256:d3c21bb6aec6e0f9d5348adee443c70c31d5f4372b8ad5f56a0ab925b2725108",
|
||||
"integrity": "sha256:d3c21bb6aec6e0f9d5348adee443c70c31d5f4372b8ad5f56a0ab925b2725108"
|
||||
},
|
||||
"ghcr.io/guziomg/devcontainers/extension-spellcheck:latest": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "ghcr.io/guziomg/devcontainers/extension-spellcheck@sha256:954a79f524e5130b7c961e6d0ac7252fbc8e40c5e63229b030f5a27477dfa7ce",
|
||||
"integrity": "sha256:954a79f524e5130b7c961e6d0ac7252fbc8e40c5e63229b030f5a27477dfa7ce"
|
||||
},
|
||||
"ghcr.io/guziomg/devcontainers/extensions-essentials-ultimate:latest": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "ghcr.io/guziomg/devcontainers/extensions-essentials-ultimate@sha256:62483dfabb169b804d1d385eccf0344a8b0d6a62c60b3761d579e70a59291772",
|
||||
"integrity": "sha256:62483dfabb169b804d1d385eccf0344a8b0d6a62c60b3761d579e70a59291772",
|
||||
"dependsOn": [
|
||||
"ghcr.io/guziomg/devcontainers/extensions-github:latest",
|
||||
"ghcr.io/guziomg/devcontainers/extensions-essentials:latest",
|
||||
"ghcr.io/guziomg/devcontainers/extension-spellcheck:latest"
|
||||
]
|
||||
},
|
||||
"ghcr.io/guziomg/devcontainers/extensions-essentials:latest": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "ghcr.io/guziomg/devcontainers/extensions-essentials@sha256:bbd0673cb07d64ca60e714a786db2c55bf921fbd49bad907376a0dfa960258d9",
|
||||
"integrity": "sha256:bbd0673cb07d64ca60e714a786db2c55bf921fbd49bad907376a0dfa960258d9"
|
||||
},
|
||||
"ghcr.io/guziomg/devcontainers/extensions-github:latest": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "ghcr.io/guziomg/devcontainers/extensions-github@sha256:5455b28dcb0cfa1c4a0ed0c9ac9fad263af9c5265406021923c50027b6ca62d9",
|
||||
"integrity": "sha256:5455b28dcb0cfa1c4a0ed0c9ac9fad263af9c5265406021923c50027b6ca62d9"
|
||||
},
|
||||
"ghcr.io/guziomg/devcontainers/fish-apt-extended:latest": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "ghcr.io/guziomg/devcontainers/fish-apt-extended@sha256:ce8190cd2f0365c625c2e8b5800f27771ccf517823feb082ec96c75f5c083a66",
|
||||
"integrity": "sha256:ce8190cd2f0365c625c2e8b5800f27771ccf517823feb082ec96c75f5c083a66",
|
||||
"dependsOn": [
|
||||
"ghcr.io/devcontainers-extra/features/fish-apt-get:1"
|
||||
]
|
||||
},
|
||||
"ghcr.io/guziomg/devcontainers/personal:latest": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "ghcr.io/guziomg/devcontainers/personal@sha256:f116eaa06ae322f69943724323d757c8fb9b326c3bd7fc1899ee4d54863568ff",
|
||||
"integrity": "sha256:f116eaa06ae322f69943724323d757c8fb9b326c3bd7fc1899ee4d54863568ff",
|
||||
"dependsOn": [
|
||||
"ghcr.io/guziomg/devcontainers/extensions-essentials-ultimate:latest",
|
||||
"ghcr.io/guziomg/devcontainers/polskie-rozszerzenia:latest",
|
||||
"ghcr.io/guziomg/devcontainers/fish-apt-extended:latest"
|
||||
]
|
||||
},
|
||||
"ghcr.io/guziomg/devcontainers/polskie-rozszerzenia:latest": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "ghcr.io/guziomg/devcontainers/polskie-rozszerzenia@sha256:708c77bf302f7a097384dd98b3beec2e344e4965995ab38a3f861bb923fcf71d",
|
||||
"integrity": "sha256:708c77bf302f7a097384dd98b3beec2e344e4965995ab38a3f861bb923fcf71d",
|
||||
"dependsOn": [
|
||||
"ghcr.io/guziomg/devcontainers/extension-spellcheck:latest"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
8
.devcontainer/devcontainer.json
Normal file
8
.devcontainer/devcontainer.json
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"name": "Hyprland configs",
|
||||
"image": "mcr.microsoft.com/devcontainers/base:noble",
|
||||
"features": {
|
||||
//"ghcr.io/guziomg/devcontainers/hyprland:latest": {},
|
||||
"ghcr.io/guziomg/devcontainers/personal:latest": {}
|
||||
}
|
||||
}
|
||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
scripts/volume-bin
|
||||
7
.luarc.json
Normal file
7
.luarc.json
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"workspace": {
|
||||
"library": [
|
||||
"/usr/share/hypr/stubs"
|
||||
]
|
||||
}
|
||||
}
|
||||
8
.vscode/settings.json
vendored
Normal file
8
.vscode/settings.json
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"cSpell.words": [
|
||||
"envar",
|
||||
"hypr",
|
||||
"hyprpanel",
|
||||
"killall"
|
||||
]
|
||||
}
|
||||
19
LICENSE
19
LICENSE
|
|
@ -1,18 +1,7 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2026 Guzio
|
||||
Copyright © 2026 Guzio
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
||||
associated documentation files (the "Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
|
||||
following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial
|
||||
portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
|
||||
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
16
hyprland.conf.stub
Normal file
16
hyprland.conf.stub
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
# This config is a STUB! This should never be generated.
|
||||
# Use the default lua config from https://github.com/hyprwm/Hyprland/blob/main/example/hyprland.lua
|
||||
|
||||
|
||||
|
||||
$mainMod = SUPER
|
||||
$terminal = konsole
|
||||
$fileManager = dolphin
|
||||
$menu = hyprlauncher
|
||||
|
||||
bind = $mainMod, Q, exec, $terminal
|
||||
bind = $mainMod, C, killactive,
|
||||
bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit
|
||||
bind = $mainMod, E, exec, $fileManager
|
||||
bind = $mainMod, V, togglefloating,
|
||||
bind = $mainMod, R, exec, $menu
|
||||
413
hyprland.lua
Normal file
413
hyprland.lua
Normal file
|
|
@ -0,0 +1,413 @@
|
|||
-------------------
|
||||
---- VARIABLES ----
|
||||
-------------------
|
||||
local hyprdir = ".config/hypr/"
|
||||
local scripts = hyprdir.."scripts/"
|
||||
|
||||
-- Set programs that I use
|
||||
local terminal = scripts.."terminal.sh"
|
||||
local fileManager = "dolphin"
|
||||
local menu = scripts.."toggle_hyprshell.sh"
|
||||
|
||||
|
||||
------------------
|
||||
---- MONITORS ----
|
||||
------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Basics/Monitors/
|
||||
|
||||
-- defaults
|
||||
hl.monitor({
|
||||
output = "",
|
||||
mode = "preferred",
|
||||
position = "auto",
|
||||
scale = 1,
|
||||
mirror = "eDP-1",
|
||||
})
|
||||
|
||||
-- Main tablet screen
|
||||
hl.monitor({
|
||||
output = "eDP-1",
|
||||
mode = "preferred",
|
||||
position = "0x0",
|
||||
scale = 1,
|
||||
})
|
||||
|
||||
-- My monitor at home
|
||||
hl.monitor({
|
||||
output = "desc:Acer Technologies Acer XF240H 0x0160F332",
|
||||
mode = "preferred",
|
||||
position = "1925x-900",
|
||||
scale = 1,
|
||||
})
|
||||
|
||||
|
||||
-------------------
|
||||
---- AUTOSTART ----
|
||||
-------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Basics/Autostart/
|
||||
|
||||
hl.on("hyprland.start", function ()
|
||||
-- Load plugins
|
||||
--hl.exec_cmd("hyprpm reload")
|
||||
|
||||
-- Special workspaces
|
||||
hl.exec_cmd(terminal)
|
||||
hl.exec_cmd("flatpak run app.zen_browser.zen")
|
||||
hl.exec_cmd("flatpak run com.discordapp.Discord")
|
||||
hl.exec_cmd("flatpak run im.riot.Riot")
|
||||
hl.exec_cmd("flatpak run md.obsidian.Obsidian")
|
||||
|
||||
-- Core daemons
|
||||
hl.exec_cmd("hyprshell -c "..hyprdir.."hyprshell.ron -s "..hyprdir.."hyprshell.css run")
|
||||
hl.exec_cmd("vicinae server")
|
||||
hl.exec_cmd("wvkbd-deskintl --hidden -o")
|
||||
hl.exec_cmd("hyprpanel")
|
||||
hl.exec_cmd(scripts.."keyboard.sh reset")
|
||||
hl.exec_cmd(scripts.."volume-core.sh --start-daemon")
|
||||
|
||||
-- Waydroid (note: this also launches rootedinit.sh under-the-hood)
|
||||
hl.exec_cmd(scripts.."waydroid.sh")
|
||||
|
||||
-- Dark theme
|
||||
hl.exec_cmd("gsettings set org.gnome.desktop.interface gtk-theme Breeze-Dark"); -- for GTK3 apps
|
||||
hl.exec_cmd("gsettings set org.gnome.desktop.interface color-scheme prefer-dark"); -- for GTK4 apps
|
||||
hl.exec_cmd("gsettings set org.gnome.desktop.interface gtk-color-palette \"'black:white:gray50:red:purple:blue:light blue:green:yellow:orange:lavender:brown:goldenrod4:dodger blue:pink:light green:gray10:gray30:gray75:gray90'\""); --Unrelated to Dark Theme (just my color palette), but there was no better place for it.
|
||||
end)
|
||||
|
||||
|
||||
-------------------------------
|
||||
---- ENVIRONMENT VARIABLES ----
|
||||
-------------------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/
|
||||
|
||||
-- Were the defaults; no reason to fuck around
|
||||
hl.env("XCURSOR_SIZE", "24")
|
||||
hl.env("HYPRCURSOR_SIZE", "24")
|
||||
|
||||
-- Dark theme, again (*must set manually)
|
||||
hl.env("QT_QPA_PLATFORMTHEME", "qt6ct")
|
||||
|
||||
|
||||
-----------------------
|
||||
----- PERMISSIONS -----
|
||||
-----------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Permissions/
|
||||
|
||||
hl.config({
|
||||
ecosystem = {
|
||||
enforce_permissions = true,
|
||||
},
|
||||
})
|
||||
|
||||
hl.permission({binary="/usr/(bin|local/bin)/grim", type="screencopy", mode="allow"})
|
||||
hl.permission({binary="/usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland", type="screencopy", mode="allow"})
|
||||
|
||||
hl.permission({binary="/usr/(bin|local/bin)/hyprpm", type="plugin", mode="allow"})
|
||||
hl.permission({binary="/usr/(bin|local/bin)/hyprshell", type="plugin", mode="allow"})
|
||||
|
||||
|
||||
-----------------------
|
||||
---- LOOK AND FEEL ----
|
||||
-----------------------
|
||||
|
||||
-- Refer to https://wiki.hypr.land/Configuring/Basics/Variables/
|
||||
hl.config({
|
||||
general = {
|
||||
gaps_in = 4,
|
||||
gaps_out = {top=0, right=8, bottom=8, left=8},
|
||||
|
||||
border_size = 2,
|
||||
|
||||
col = {
|
||||
active_border = { colors = {"rgb(FFE610)", "rgb(E6FF10)"}, angle = 240 },
|
||||
inactive_border = { colors = {"rgba(FFE61020)", "rgba(E6FF10E0)"}, angle = 240 },
|
||||
},
|
||||
|
||||
-- Set to true to enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = true,
|
||||
|
||||
-- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on
|
||||
allow_tearing = false,
|
||||
|
||||
layout = "dwindle",
|
||||
},
|
||||
|
||||
decoration = {
|
||||
rounding = 15,
|
||||
rounding_power = 3,
|
||||
|
||||
-- Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0,
|
||||
inactive_opacity = 1.0,
|
||||
|
||||
shadow = {
|
||||
enabled = true,
|
||||
range = 4,
|
||||
render_power = 3,
|
||||
color = 0xee1a1a1a,
|
||||
},
|
||||
|
||||
blur = {
|
||||
enabled = true, --During the Lua migration, I noticed the following note attached in the previous config: „NOTE: Occasionally (when terminal breaks), this needs to be disabled (until I figure out how to get blur only on the background ALWAYS, without making all terminal text glow SOMETIMES)”. However, I don't think I experienced any „terminal glowing” problems in a long time (tho transparency still breaks on it from time to time), so ig this is no longer needed? Leaving the note in, just in case it does end up happening again.
|
||||
size = 3,
|
||||
passes = 1,
|
||||
vibrancy = 0.1696,
|
||||
},
|
||||
},
|
||||
|
||||
animations = {
|
||||
enabled = true,
|
||||
},
|
||||
})
|
||||
|
||||
-- Default curves and animations, see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Animations/
|
||||
hl.curve("easeOutQuint", { type = "bezier", points = { {0.23, 1}, {0.32, 1} }})
|
||||
hl.curve("easeInOutCubic", { type = "bezier", points = { {0.65, 0.05}, {0.36, 1} }})
|
||||
hl.curve("linear", { type = "bezier", points = { {0, 0}, {1, 1} }})
|
||||
hl.curve("almostLinear", { type = "bezier", points = { {0.5, 0.5}, {0.75, 1} }})
|
||||
hl.curve("quick", { type = "bezier", points = { {0.15, 0}, {0.1, 1} }})
|
||||
|
||||
-- Default springs
|
||||
hl.curve("easy", { type = "spring", mass = 1, stiffness = 71.2633, dampening = 15.8273644 })
|
||||
|
||||
hl.animation({ leaf = "global", enabled = true, speed = 10, bezier = "default" })
|
||||
hl.animation({ leaf = "border", enabled = true, speed = 5.39, bezier = "easeOutQuint" })
|
||||
hl.animation({ leaf = "windows", enabled = true, speed = 4.79, spring = "easy" })
|
||||
hl.animation({ leaf = "windowsIn", enabled = true, speed = 4.1, spring = "easy", style = "popin 87%" })
|
||||
hl.animation({ leaf = "windowsOut", enabled = true, speed = 1.49, bezier = "linear", style = "popin 87%" })
|
||||
hl.animation({ leaf = "fadeIn", enabled = true, speed = 1.73, bezier = "almostLinear" })
|
||||
hl.animation({ leaf = "fadeOut", enabled = true, speed = 1.46, bezier = "almostLinear" })
|
||||
hl.animation({ leaf = "fade", enabled = true, speed = 3.03, bezier = "quick" })
|
||||
hl.animation({ leaf = "layers", enabled = true, speed = 3.81, bezier = "easeOutQuint" })
|
||||
hl.animation({ leaf = "layersIn", enabled = true, speed = 4, bezier = "easeOutQuint", style = "fade" })
|
||||
hl.animation({ leaf = "layersOut", enabled = true, speed = 1.5, bezier = "linear", style = "fade" })
|
||||
hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 1.79, bezier = "almostLinear" })
|
||||
hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 1.39, bezier = "almostLinear" })
|
||||
hl.animation({ leaf = "workspaces", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
|
||||
hl.animation({ leaf = "workspacesIn", enabled = true, speed = 1.21, bezier = "almostLinear", style = "fade" })
|
||||
hl.animation({ leaf = "workspacesOut", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
|
||||
hl.animation({ leaf = "zoomFactor", enabled = true, speed = 7, bezier = "quick" })
|
||||
|
||||
-- Special workspaces slide-in from the top (thx, https://github.com/hyprwm/Hyprland/discussions/1757#discussioncomment-8921961)
|
||||
hl.animation({ leaf = "specialWorkspaceIn", enabled=true, speed=2, bezier="easeInOutCubic", style="slidefadevert -50%" })
|
||||
hl.animation({ leaf = "specialWorkspaceOut", enabled=true, speed=2, bezier="easeInOutCubic", style="slidefadevert -50%" })
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Layouts/Dwindle-Layout/ for more
|
||||
hl.config({
|
||||
dwindle = {
|
||||
preserve_split = true, -- You probably want this
|
||||
},
|
||||
})
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Layouts/Master-Layout/ for more
|
||||
hl.config({
|
||||
master = {
|
||||
new_status = "master",
|
||||
},
|
||||
})
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Layouts/Scrolling-Layout/ for more
|
||||
hl.config({
|
||||
scrolling = {
|
||||
fullscreen_on_one_column = true,
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
--------------
|
||||
---- MISC ----
|
||||
--------------
|
||||
|
||||
hl.config({
|
||||
misc = {
|
||||
force_default_wallpaper = 2, -- Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false, -- If true disables the random hyprland logo / anime girl background. :(
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
---------------
|
||||
---- INPUT ----
|
||||
---------------
|
||||
|
||||
hl.config({
|
||||
input = {
|
||||
kb_layout = "pl",
|
||||
kb_variant = "",
|
||||
kb_model = "",
|
||||
kb_options = "fkeys:basic_13-24",
|
||||
kb_rules = "",
|
||||
|
||||
follow_mouse = 1,
|
||||
|
||||
sensitivity = 0, -- -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = true,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
---------------------
|
||||
---- KEYBINDINGS ----
|
||||
---------------------
|
||||
|
||||
local mainMod = "SUPER" -- Sets "Windows" key as main modifier
|
||||
|
||||
-- Example binds, see https://wiki.hypr.land/Configuring/Basics/Binds/ for more
|
||||
hl.bind(mainMod .. " + T", hl.dsp.exec_cmd(terminal))
|
||||
local closeWindowBind = hl.bind(mainMod .. " + Q", hl.dsp.window.close())
|
||||
-- closeWindowBind:set_enabled(false)
|
||||
hl.bind(mainMod .. " + M", hl.dsp.exit())
|
||||
hl.bind(mainMod .. " + SUPER_L", hl.dsp.exec_cmd(menu), { release = true })
|
||||
|
||||
-- Quick-pad: Special workspaces + boss-key
|
||||
hl.bind(mainMod .. " + X", hl.dsp.workspace.toggle_special("terminal"))
|
||||
hl.bind(mainMod .. " + A", hl.dsp.workspace.toggle_special("browser"))
|
||||
hl.bind(mainMod .. " + D", hl.dsp.workspace.toggle_special("discord"))
|
||||
hl.bind(mainMod .. " + C", hl.dsp.workspace.toggle_special("element"))
|
||||
hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("obsidian"))
|
||||
hl.bind(mainMod .. " + Z", hl.dsp.exec_cmd(scripts.."hide.sh"))
|
||||
|
||||
-- Scroll through existing workspaces with mainMod + scroll
|
||||
hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
|
||||
hl.bind(mainMod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" }))
|
||||
|
||||
-- Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
|
||||
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
|
||||
|
||||
-- Laptop multimedia keys for volume and LCD brightness
|
||||
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true, repeating = true })
|
||||
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true, repeating = true })
|
||||
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { locked = true, repeating = true })
|
||||
hl.bind("XF86MonBrightnessDown",hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { locked = true, repeating = true })
|
||||
|
||||
-- Requires playerctl
|
||||
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true })
|
||||
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
|
||||
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
|
||||
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
|
||||
|
||||
-- Screenshots
|
||||
hl.bind("PRINT", hl.dsp.exec_cmd(scripts.."screenshot.sh"))
|
||||
hl.bind(mainMod.." + PRINT", hl.dsp.exec_cmd(scripts.."screenshot.sh --full"))
|
||||
|
||||
|
||||
--------------------------------
|
||||
---- WINDOWS AND WORKSPACES ----
|
||||
--------------------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Basics/Window-Rules/
|
||||
-- and https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/
|
||||
|
||||
-- Example window rules that are useful
|
||||
|
||||
local suppressMaximizeRule = hl.window_rule({
|
||||
-- Ignore maximize requests from all apps. You'll probably like this.
|
||||
name = "suppress-maximize-events",
|
||||
match = { class = ".*" },
|
||||
suppress_event = "maximize",
|
||||
})
|
||||
suppressMaximizeRule:set_enabled(false) -- ...No, I won't. I run everything as exclusive-window-per-workspace anyway, so I'm not worried about „Windows deciding to take up all my space” (I literally do that). All this will do is cause de-syncs (especially in client-side decorated apps, like all the crapware made in GTK) for exactly 0 benefit.
|
||||
|
||||
hl.window_rule({
|
||||
-- Fix some dragging issues with XWayland
|
||||
name = "fix-xwayland-drags",
|
||||
match = {
|
||||
class = "^$",
|
||||
title = "^$",
|
||||
xwayland = true,
|
||||
float = true,
|
||||
fullscreen = false,
|
||||
pin = false,
|
||||
},
|
||||
no_focus = true,
|
||||
})
|
||||
|
||||
-- Hyprland-run windowrule
|
||||
hl.window_rule({
|
||||
name = "move-hyprland-run",
|
||||
match = { class = "hyprland-run" },
|
||||
move = "20 monitor_h-120",
|
||||
float = true,
|
||||
})
|
||||
|
||||
-- My rules
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-default",
|
||||
match = {
|
||||
class = ".*",
|
||||
float = false
|
||||
},
|
||||
workspace = "emptym"
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-special-terminal",
|
||||
match = { class = "org.kde.konsole" },
|
||||
workspace = "special:terminal"
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-special-browser",
|
||||
match = { class = "app.zen_browser.zen" },
|
||||
workspace = "special:browser silent"
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-special-discord",
|
||||
match = { class = "discord" },
|
||||
workspace = "special:discord silent"
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-special-element",
|
||||
match = { class = "im.riot.Riot" },
|
||||
workspace = "special:element silent"
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-special-obsidian",
|
||||
match = { class = "obsidian" },
|
||||
workspace = "special:obsidian silent"
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-minecraft-default",
|
||||
match = { class = "Minecraft.*" },
|
||||
workspace = "emptym",
|
||||
maximize = true
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-minecraft-modpack-melatonin",
|
||||
match = { class = "Melatonin" },
|
||||
workspace = "emptym",
|
||||
maximize = true
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-waydroid",
|
||||
match = { class = "Waydroid" },
|
||||
workspace = "special:waydroid",
|
||||
fullscreen = true
|
||||
})
|
||||
|
||||
|
||||
-------------------
|
||||
---- HYPRGRASS ----
|
||||
-------------------
|
||||
|
||||
--hl.plugin.touch_gestures = {
|
||||
-- sensitivity = 4.0,
|
||||
-- edge_margin = 50,
|
||||
-- ["hyprgrass-bind"] = ", edge:d:u, exec, $scriptsdir/keyboard.sh --no-rotate",
|
||||
-- ["hyprgrass-bind"] = ", tap:3, exec, $menu -k"
|
||||
--}
|
||||
107
hyprlock.conf
Normal file
107
hyprlock.conf
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
# sample hyprlock.conf
|
||||
# for more configuration options, refer https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock
|
||||
#
|
||||
# rendered text in all widgets supports pango markup (e.g. <b> or <i> tags)
|
||||
# ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#general-remarks
|
||||
#
|
||||
# shortcuts to clear password buffer: ESC, Ctrl+U, Ctrl+Backspace
|
||||
#
|
||||
# you can get started by copying this config to ~/.config/hypr/hyprlock.conf
|
||||
#
|
||||
|
||||
$font = Monospace
|
||||
|
||||
general {
|
||||
# CHANGED: to true
|
||||
hide_cursor = true
|
||||
}
|
||||
|
||||
# uncomment to enable fingerprint authentication
|
||||
# auth {
|
||||
# fingerprint {
|
||||
# enabled = true
|
||||
# ready_message = Scan fingerprint to unlock
|
||||
# present_message = Scanning...
|
||||
# retry_delay = 250 # in milliseconds
|
||||
# }
|
||||
# }
|
||||
|
||||
animations {
|
||||
enabled = true
|
||||
bezier = linear, 1, 1, 0, 0
|
||||
animation = fadeIn, 1, 5, linear
|
||||
animation = fadeOut, 1, 5, linear
|
||||
animation = inputFieldDots, 1, 2, linear
|
||||
}
|
||||
|
||||
background {
|
||||
monitor =
|
||||
path = screenshot
|
||||
blur_passes = 3
|
||||
}
|
||||
|
||||
input-field {
|
||||
monitor =
|
||||
size = 20%, 5%
|
||||
outline_thickness = 3
|
||||
inner_color = rgba(0, 0, 0, 0.0) # no fill
|
||||
|
||||
outer_color = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
check_color = rgba(00ff99ee) rgba(ff6633ee) 120deg
|
||||
fail_color = rgba(ff6633ee) rgba(ff0066ee) 40deg
|
||||
|
||||
font_color = rgb(143, 143, 143)
|
||||
fade_on_empty = false
|
||||
rounding = 15
|
||||
|
||||
font_family = $font
|
||||
placeholder_text = Input password...
|
||||
fail_text = $PAMFAIL
|
||||
|
||||
# uncomment to use a letter instead of a dot to indicate the typed password
|
||||
# dots_text_format = *
|
||||
# dots_size = 0.4
|
||||
dots_spacing = 0.3
|
||||
|
||||
# uncomment to use an input indicator that does not show the password length (similar to swaylock's input indicator)
|
||||
# hide_input = true
|
||||
|
||||
position = 0, -20
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# TIME
|
||||
label {
|
||||
monitor =
|
||||
text = $TIME # ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#variable-substitution
|
||||
font_size = 90
|
||||
font_family = $font
|
||||
|
||||
position = -30, 0
|
||||
halign = right
|
||||
valign = top
|
||||
}
|
||||
|
||||
# DATE
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:60000] date +"%A, %d %B %Y" # update every 60 seconds
|
||||
font_size = 25
|
||||
font_family = $font
|
||||
|
||||
position = -30, -150
|
||||
halign = right
|
||||
valign = top
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text = $LAYOUT[en,ru]
|
||||
font_size = 24
|
||||
onclick = hyprctl switchxkblayout all next
|
||||
|
||||
position = 250, -20
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
178
hyprpanel/config.json
Normal file
178
hyprpanel/config.json
Normal file
|
|
@ -0,0 +1,178 @@
|
|||
{
|
||||
"bar.customModules.storage.paths": [
|
||||
"/"
|
||||
],
|
||||
"theme.bar.floating": false,
|
||||
"bar.layouts": {
|
||||
"0": {
|
||||
"middle": [
|
||||
"worldclock"
|
||||
],
|
||||
"right": [
|
||||
"microphone",
|
||||
"cava",
|
||||
"battery",
|
||||
"windowtitle",
|
||||
"custom/desktop"
|
||||
],
|
||||
"left": [
|
||||
"dashboard",
|
||||
"custom/menu",
|
||||
"custom/screenshot",
|
||||
"custom/rotate",
|
||||
"custom/keyboard",
|
||||
"custom/clipboard",
|
||||
"systray",
|
||||
"notifications"
|
||||
]
|
||||
},
|
||||
"1": {
|
||||
"left": [
|
||||
"dashboard",
|
||||
"workspaces",
|
||||
"windowtitle"
|
||||
],
|
||||
"middle": [
|
||||
"media"
|
||||
],
|
||||
"right": [
|
||||
"volume",
|
||||
"network",
|
||||
"bluetooth",
|
||||
"battery",
|
||||
"systray",
|
||||
"clock",
|
||||
"notifications"
|
||||
]
|
||||
},
|
||||
"2": {
|
||||
"left": [
|
||||
"dashboard",
|
||||
"workspaces",
|
||||
"windowtitle"
|
||||
],
|
||||
"middle": [
|
||||
"media"
|
||||
],
|
||||
"right": [
|
||||
"volume",
|
||||
"clock",
|
||||
"notifications"
|
||||
]
|
||||
}
|
||||
},
|
||||
"menus.dashboard.controls.enabled": true,
|
||||
"menus.dashboard.shortcuts.enabled": false,
|
||||
"menus.dashboard.directories.enabled": false,
|
||||
"menus.volume.raiseMaximumVolume": false,
|
||||
"bar.launcher.icon": "",
|
||||
"menus.clock.weather.enabled": false,
|
||||
"menus.power.showLabel": true,
|
||||
"menus.clock.time.military": true,
|
||||
"menus.clock.weather.location": "Los Angeles",
|
||||
"bar.customModules.worldclock.leftClick": "menu:calendar",
|
||||
"theme.bar.buttons.modules.worldclock.enableBorder": true,
|
||||
"bar.customModules.worldclock.format": "%H:%M:%S",
|
||||
"menus.clock.time.hideSeconds": false,
|
||||
"menus.clock.weather.unit": "imperial",
|
||||
"bar.customModules.worldclock.divider": "",
|
||||
"bar.customModules.worldclock.tz": [
|
||||
"Europe/Warsaw"
|
||||
],
|
||||
"bar.customModules.worldclock.icon": "",
|
||||
"bar.customModules.cava.leftClick": "menu:media",
|
||||
"bar.customModules.cava.middleClick": "",
|
||||
"theme.bar.menus.opacity": 100,
|
||||
"theme.bar.opacity": 100,
|
||||
"theme.bar.buttons.dashboard.icon": "#f9e2af",
|
||||
"theme.bar.buttons.dashboard.border": "#f9e2af",
|
||||
"theme.bar.buttons.style": "wave2",
|
||||
"theme.bar.menus.border.color": "#313244",
|
||||
"theme.bar.buttons.battery.text": "#f9e2af",
|
||||
"theme.bar.buttons.battery.icon": "#f9e2af",
|
||||
"theme.bar.transparent": true,
|
||||
"bar.launcher.autoDetectIcon": false,
|
||||
"theme.bar.buttons.dashboard.enableBorder": true,
|
||||
"bar.workspaces.monitorSpecific": false,
|
||||
"bar.workspaces.show_numbered": false,
|
||||
"bar.workspaces.ignored": "-[0-9]+",
|
||||
"theme.bar.buttons.windowtitle.enableBorder": true,
|
||||
"bar.windowtitle.custom_title": true,
|
||||
"theme.bar.buttons.notifications.enableBorder": true,
|
||||
"bar.notifications.show_total": true,
|
||||
"bar.notifications.hideCountWhenZero": true,
|
||||
"theme.bar.buttons.battery.enableBorder": true,
|
||||
"theme.bar.buttons.workspaces.enableBorder": true,
|
||||
"theme.bar.buttons.volume.enableBorder": true,
|
||||
"theme.bar.buttons.network.enableBorder": true,
|
||||
"theme.bar.buttons.bluetooth.enableBorder": true,
|
||||
"theme.bar.buttons.systray.enableBorder": true,
|
||||
"theme.bar.buttons.clock.enableBorder": true,
|
||||
"theme.bar.buttons.media.enableBorder": true,
|
||||
"theme.bar.buttons.modules.microphone.enableBorder": true,
|
||||
"theme.bar.buttons.modules.ram.enableBorder": true,
|
||||
"theme.bar.buttons.modules.cpu.enableBorder": true,
|
||||
"theme.bar.buttons.modules.cpuTemp.enableBorder": true,
|
||||
"theme.bar.buttons.modules.storage.enableBorder": true,
|
||||
"theme.bar.buttons.modules.netstat.enableBorder": true,
|
||||
"theme.bar.buttons.modules.kbLayout.enableBorder": true,
|
||||
"theme.bar.buttons.modules.updates.enableBorder": true,
|
||||
"theme.bar.buttons.modules.submap.enableBorder": true,
|
||||
"theme.bar.buttons.modules.weather.enableBorder": true,
|
||||
"theme.bar.buttons.modules.hypridle.enableBorder": true,
|
||||
"theme.bar.buttons.modules.cava.enableBorder": true,
|
||||
"theme.bar.buttons.modules.power.enableBorder": true,
|
||||
"bar.customModules.cava.rightClick": "menu:audio",
|
||||
"bar.volume.rightClick": "menu:media",
|
||||
"bar.customModules.cava.scrollDown": "hyprpanel vol -5",
|
||||
"bar.customModules.cava.scrollUp": "hyprpanel vol +5",
|
||||
"bar.clock.icon": "",
|
||||
"bar.clock.format": "%A, %Y-%m-%d %H:%M:%S",
|
||||
"bar.customModules.worldclock.formatDiffDate": "",
|
||||
"bar.windowtitle.leftClick": "hyprctl dispatch \"hl.dsp.window.close()\"",
|
||||
"bar.workspaces.show_icons": false,
|
||||
"bar.workspaces.workspaces": 5,
|
||||
"bar.workspaces.icons.available": "",
|
||||
"bar.workspaces.showWsIcons": true,
|
||||
"bar.workspaces.showApplicationIcons": true,
|
||||
"bar.workspaces.applicationIconEmptyWorkspace": "",
|
||||
"theme.bar.buttons.workspaces.smartHighlight": true,
|
||||
"bar.workspaces.applicationIconOncePerWorkspace": false,
|
||||
"bar.workspaces.numbered_active_indicator": "highlight",
|
||||
"theme.bar.buttons.workspaces.numbered_inactive_padding": "0em",
|
||||
"theme.bar.buttons.workspaces.fontSize": "1.2em",
|
||||
"theme.bar.buttons.workspaces.pill.radius": "1.9rem * 0.6",
|
||||
"bar.windowtitle.class_name": true,
|
||||
"bar.windowtitle.truncation_size": 1,
|
||||
"bar.windowtitle.icon": true,
|
||||
"bar.customModules.microphone.label": false,
|
||||
"menus.media.noMediaText": "Cicho tutaj...",
|
||||
"bar.volume.label": true,
|
||||
"bar.network.label": true,
|
||||
"bar.network.showWifiInfo": true,
|
||||
"bar.bluetooth.label": false,
|
||||
"theme.bar.buttons.monochrome": true,
|
||||
"theme.bar.buttons.borderColor": "#e6ff10",
|
||||
"theme.bar.buttons.text": "#e6ff10",
|
||||
"theme.bar.buttons.icon": "#e6ff10",
|
||||
"theme.bar.buttons.icon_background": "#242438",
|
||||
"theme.bar.buttons.background": "#000000",
|
||||
"theme.bar.buttons.workspaces.active": "#e6ff10",
|
||||
"theme.bar.buttons.workspaces.numbered_active_highlighted_text_color": "#000000",
|
||||
"theme.bar.buttons.workspaces.background": "#000000",
|
||||
"theme.bar.buttons.workspaces.occupied": "#62a0ea",
|
||||
"theme.bar.buttons.workspaces.available": "#77767b",
|
||||
"theme.bar.buttons.workspaces.hover": "#62a0ea",
|
||||
"menus.transition": "crossfade",
|
||||
"theme.bar.border.width": "0.15em",
|
||||
"theme.bar.layer": "top",
|
||||
"theme.bar.margin_sides": "0.5em",
|
||||
"theme.bar.buttons.enableBorders": false,
|
||||
"theme.bar.border_radius": "0.4em",
|
||||
"theme.bar.outer_spacing": "0.2em",
|
||||
"theme.bar.buttons.y_margins": "0.33em",
|
||||
"theme.bar.buttons.spacing": "0.19em",
|
||||
"theme.bar.buttons.padding_x": "0.7rem",
|
||||
"theme.bar.buttons.padding_y": "0.2rem",
|
||||
"theme.bar.buttons.background_hover_opacity": 100
|
||||
}
|
||||
45
hyprpanel/modules.json
Normal file
45
hyprpanel/modules.json
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
"custom/keyboard": {
|
||||
"icon": "\udb80\udf0c",
|
||||
"tooltip": "Przełącz klawiaturę.",
|
||||
"actions": {
|
||||
"onLeftClick": "$HOME/.config/hypr/scripts/keyboard.sh"
|
||||
}
|
||||
},
|
||||
"custom/menu": {
|
||||
"icon": "\udb83\ude6f",
|
||||
"tooltip": "Menu główne.",
|
||||
"actions": {
|
||||
"onLeftClick": "$HOME/.config/hypr/scripts/toggle_hyprshell.sh -k"
|
||||
}
|
||||
},
|
||||
"custom/rotate": {
|
||||
"icon": "\udb82\udc86",
|
||||
"tooltip": "Obróć ekran.",
|
||||
"actions": {
|
||||
"onLeftClick": "$HOME/.config/hypr/scripts/rotate.sh"
|
||||
}
|
||||
},
|
||||
"custom/clipboard": {
|
||||
"icon": "\ued7b",
|
||||
"tooltip": "Schowek",
|
||||
"actions": {
|
||||
"onLeftClick": "vicinae vicinae://extensions/vicinae/clipboard/history"
|
||||
}
|
||||
},
|
||||
"custom/screenshot": {
|
||||
"icon": "\uf030",
|
||||
"tooltip": "Screenshot",
|
||||
"actions": {
|
||||
"onLeftClick": "$HOME/.config/hypr/scripts/screenshot.sh --button",
|
||||
"onRightClick": "$HOME/.config/hypr/scripts/screenshot.sh --button --full"
|
||||
}
|
||||
},
|
||||
"custom/desktop": {
|
||||
"icon": "\uebf6",
|
||||
"tooltip": "Pokaż pulpit",
|
||||
"actions": {
|
||||
"onLeftClick": "$HOME/.config/hypr/scripts/hide.sh"
|
||||
}
|
||||
}
|
||||
}
|
||||
98
hyprpanel/modules.scss
Normal file
98
hyprpanel/modules.scss
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
/* ##################################
|
||||
* # Custom Volume Module Styling #
|
||||
* ################################## */
|
||||
@include styleModule(
|
||||
// class name
|
||||
'cmodule-keyboard',
|
||||
// styling properties
|
||||
(
|
||||
'text-color': #E6FF10,
|
||||
'icon-color': #E6FF10,
|
||||
'icon-background': #000000,
|
||||
'label-background': #000000,
|
||||
'inner-spacing': 0em,
|
||||
'border-enabled': true,
|
||||
'border-color': #E6FF10,
|
||||
'icon-size': 1.2em
|
||||
)
|
||||
);
|
||||
|
||||
@include styleModule(
|
||||
// class name
|
||||
'cmodule-menu',
|
||||
// styling properties
|
||||
(
|
||||
'text-color': #E6FF10,
|
||||
'icon-color': #E6FF10,
|
||||
'icon-background': #000000,
|
||||
'label-background': #000000,
|
||||
'inner-spacing': 0em,
|
||||
'border-enabled': true,
|
||||
'border-color': #E6FF10,
|
||||
'icon-size': 1.2em
|
||||
)
|
||||
);
|
||||
|
||||
@include styleModule(
|
||||
// class name
|
||||
'cmodule-rotate',
|
||||
// styling properties
|
||||
(
|
||||
'text-color': #E6FF10,
|
||||
'icon-color': #E6FF10,
|
||||
'icon-background': #000000,
|
||||
'label-background': #000000,
|
||||
'inner-spacing': 0em,
|
||||
'border-enabled': true,
|
||||
'border-color': #E6FF10,
|
||||
'icon-size': 1.2em
|
||||
)
|
||||
);
|
||||
|
||||
@include styleModule(
|
||||
// class name
|
||||
'cmodule-clipboard',
|
||||
// styling properties
|
||||
(
|
||||
'text-color': #E6FF10,
|
||||
'icon-color': #E6FF10,
|
||||
'icon-background': #000000,
|
||||
'label-background': #000000,
|
||||
'inner-spacing': 0em,
|
||||
'border-enabled': true,
|
||||
'border-color': #E6FF10,
|
||||
'icon-size': 1.2em
|
||||
)
|
||||
);
|
||||
|
||||
@include styleModule(
|
||||
// class name
|
||||
'cmodule-screenshot',
|
||||
// styling properties
|
||||
(
|
||||
'text-color': #E6FF10,
|
||||
'icon-color': #E6FF10,
|
||||
'icon-background': #000000,
|
||||
'label-background': #000000,
|
||||
'inner-spacing': 0em,
|
||||
'border-enabled': true,
|
||||
'border-color': #E6FF10,
|
||||
'icon-size': 1.2em
|
||||
)
|
||||
);
|
||||
|
||||
@include styleModule(
|
||||
// class name
|
||||
'cmodule-desktop',
|
||||
// styling properties
|
||||
(
|
||||
'text-color': #E6FF10,
|
||||
'icon-color': #E6FF10,
|
||||
'icon-background': #000000,
|
||||
'label-background': #000000,
|
||||
'inner-spacing': 0em,
|
||||
'border-enabled': true,
|
||||
'border-color': #E6FF10,
|
||||
'icon-size': 1.2em
|
||||
)
|
||||
);
|
||||
57
hyprshell.css
Normal file
57
hyprshell.css
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
:root {
|
||||
--border-color: #E6FF1030;
|
||||
--border-color-active: #E6FF10;
|
||||
|
||||
--bg-color: rgba(20, 20, 20, 0.7);
|
||||
--bg-color-hover: rgba(40, 40, 50, 1);
|
||||
|
||||
--border-radius: 12px;
|
||||
--border-size: 3px;
|
||||
--border-style: solid;
|
||||
|
||||
--text-color: rgba(245, 245, 245, 1);
|
||||
|
||||
--window-padding: 2px;
|
||||
}
|
||||
|
||||
.window {
|
||||
}
|
||||
|
||||
|
||||
.monitor {
|
||||
}
|
||||
|
||||
.workspace {
|
||||
font-size: x-small;
|
||||
}
|
||||
|
||||
.client {
|
||||
}
|
||||
|
||||
.client-image {
|
||||
}
|
||||
|
||||
|
||||
.launcher {
|
||||
}
|
||||
|
||||
.launcher-input {
|
||||
}
|
||||
|
||||
.launcher-results {
|
||||
}
|
||||
|
||||
.launcher-item {
|
||||
}
|
||||
|
||||
.launcher-exec {
|
||||
}
|
||||
|
||||
.launcher-key {
|
||||
}
|
||||
|
||||
.launcher-plugins {
|
||||
}
|
||||
|
||||
.launcher-plugin {
|
||||
}
|
||||
79
hyprshell.ron
Normal file
79
hyprshell.ron
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
// Edit with `hyprshell config edit`
|
||||
(
|
||||
version: 4,
|
||||
windows: (
|
||||
scale: 5.0,
|
||||
items_per_row: 6,
|
||||
overview: (
|
||||
launcher: (
|
||||
default_terminal: "konsole",
|
||||
launch_modifier: "ctrl",
|
||||
width: 650,
|
||||
max_items: 5,
|
||||
show_when_empty: true,
|
||||
plugins: (
|
||||
applications: (
|
||||
run_cache_weeks: 8,
|
||||
show_execs: true,
|
||||
show_actions_submenu: true,
|
||||
),
|
||||
terminal: (),
|
||||
shell: (),
|
||||
websearch: (
|
||||
engines: [
|
||||
(
|
||||
url: "https://www.startpage.com/sp/search?query={}",
|
||||
name: "Startpage",
|
||||
key: 's',
|
||||
),
|
||||
(
|
||||
url: "https://www.youtube.com/results?search_query={}",
|
||||
name: "YouTube",
|
||||
key: 'y',
|
||||
),
|
||||
],
|
||||
),
|
||||
calc: (),
|
||||
path: (),
|
||||
actions: (
|
||||
actions: [
|
||||
logout,
|
||||
reboot,
|
||||
shutdown,
|
||||
custom(
|
||||
names: [
|
||||
"Reload",
|
||||
],
|
||||
details: "Reloads Hyprshell",
|
||||
command: "sleep 1; hyprshell socat \'\"Restart\"\'",
|
||||
icon: "system-restart",
|
||||
),
|
||||
custom(
|
||||
names: [
|
||||
"Clipboard",
|
||||
],
|
||||
details: "Shows clipboard history",
|
||||
command: "`",
|
||||
icon: "system-clipboard",
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
key: "insert",
|
||||
top_offset: 430,
|
||||
modifier: "super",
|
||||
filter_by: [],
|
||||
exclude_workspaces: "",
|
||||
),
|
||||
switch: (
|
||||
modifier: "super",
|
||||
key: "Tab",
|
||||
filter_by: [],
|
||||
switch_workspaces: false,
|
||||
exclude_workspaces: "special:*",
|
||||
kill_key: 'q',
|
||||
),
|
||||
switch_2: None,
|
||||
),
|
||||
)
|
||||
427
mhyprland.conf
Normal file
427
mhyprland.conf
Normal file
|
|
@ -0,0 +1,427 @@
|
|||
# NOTE: Observation - all EXECs are relative to $HOME - do $scriptsdir/<NAME>.sh to EXEC scripts
|
||||
|
||||
# #######################################################################################
|
||||
# AUTOGENERATED HYPRLAND CONFIG.
|
||||
# EDIT THIS CONFIG ACCORDING TO THE WIKI INSTRUCTIONS.
|
||||
# #######################################################################################
|
||||
|
||||
#autogenerated = 1 # remove this line to remove the warning
|
||||
|
||||
# This is an example Hyprland config file.
|
||||
# Refer to the wiki for more information.
|
||||
# https://wiki.hypr.land/Configuring/
|
||||
|
||||
# Please note not all available settings / options are set here.
|
||||
# For a full list, see the wiki
|
||||
|
||||
# You can split this configuration into multiple files
|
||||
# Create your files separately and then link them to this file like this:
|
||||
# source = ~/$hyprdir/myColors.conf
|
||||
|
||||
# ADDED: convenience variables
|
||||
$hyprdir = .config/hypr
|
||||
$scriptsdir = $hyprdir/scripts
|
||||
|
||||
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Monitors/
|
||||
monitor=,preferred,auto,auto
|
||||
# ADDED: upped my 2nd monitor by 700 pixels to align with main; fixed main's position (it somehow becomes 3200x0 after changing 2nd monitor's position - I reset it back to 0x0)
|
||||
monitor = eDP-1,preferred,0x0,1,transform,0
|
||||
monitor = desc:Acer Technologies Acer XF240H 0x0160F332,preferred,1925x-900,1
|
||||
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
# CHANGED: From kitty to konsole; from Rofi to Hyprshell
|
||||
$terminal = $scriptsdir/terminal.sh
|
||||
#$fileManager = dolphin
|
||||
$menu = $scriptsdir/toggle_hyprshell.sh
|
||||
|
||||
|
||||
#################
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
|
||||
# CHANGED: Enabled
|
||||
exec-once = $terminal
|
||||
# exec-once = nm-applet &flatpak run app.zen_browser.zen
|
||||
# exec-once = waybar & hyprpaper & firefox
|
||||
# ADDED: Hyprshell, Vicinae; virtual keyboard, Hyprpanel; browser, Discord, Element, Obsidian; virtual keyboard state reset; volumekey daemon; Waydroid
|
||||
exec-once = hyprshell -c $hyprdir/hyprshell.ron -s $hyprdir/hyprshell.css run
|
||||
exec-once = vicinae server
|
||||
exec-once = wvkbd-deskintl --hidden -o
|
||||
exec-once = hyprpanel
|
||||
exec-once = flatpak run app.zen_browser.zen
|
||||
exec-once = flatpak run com.discordapp.Discord
|
||||
exec-once = flatpak run im.riot.Riot
|
||||
exec-once = flatpak run md.obsidian.Obsidian
|
||||
exec-once = $scriptsdir/keyboard.sh reset
|
||||
exec-once = $scriptsdir/volume-core.sh --start-daemon
|
||||
exec-once = $scriptsdir/waydroid.sh
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Environment-variables/
|
||||
|
||||
env = XCURSOR_SIZE,24
|
||||
env = HYPRCURSOR_SIZE,24
|
||||
|
||||
|
||||
###################
|
||||
### PERMISSIONS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Permissions/
|
||||
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
|
||||
# for security reasons
|
||||
|
||||
# CHANGED: enabled defaults (grim, xdg-desktop-portal-hyprland, plugins and enforce_permissions)
|
||||
|
||||
ecosystem {
|
||||
enforce_permissions = 1
|
||||
}
|
||||
|
||||
permission = /usr/(bin|local/bin)/grim, screencopy, allow
|
||||
permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
|
||||
permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
|
||||
# ADDED: Hyprshell's plugin
|
||||
permission = /usr/bin/hyprshell, plugin, allow
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hypr.land/Configuring/Variables/
|
||||
|
||||
# ADDED: dark mode
|
||||
exec-once = gsettings set org.gnome.desktop.interface gtk-theme "Breeze-Dark" # for GTK3 apps
|
||||
exec-once = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" # for GTK4 apps
|
||||
# NOTE: a dark theme must be set in qt6ct
|
||||
env = QT_QPA_PLATFORMTHEME,qt6ct # for Qt apps
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 4
|
||||
gaps_out = 0, 8, 8, 8
|
||||
|
||||
border_size = 2
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
|
||||
# CHANGED: My colors :)
|
||||
col.active_border = rgb(FFE610) rgb(E6FF10) 240deg
|
||||
col.inactive_border = rgba(FFE61020) rgba(E6FF10E0) 240deg
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = true
|
||||
|
||||
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 15
|
||||
rounding_power = 3
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 1.0
|
||||
|
||||
shadow {
|
||||
enabled = true
|
||||
range = 4
|
||||
render_power = 3
|
||||
color = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#blur
|
||||
blur {
|
||||
# NOTE: Occasionally (when terminal breaks), this needs to be disabled (until I figure out how to get blur only on the background ALWAYS, without making all terminal text glow SOMETIMES)
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
|
||||
vibrancy = 0.1696
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#animations
|
||||
animations {
|
||||
enabled = yes#, please :)
|
||||
|
||||
# Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
|
||||
# NAME, X0, Y0, X1, Y1
|
||||
bezier = easeOutQuint, 0.23, 1, 0.32, 1
|
||||
bezier = easeInOutCubic, 0.65, 0.05, 0.36, 1
|
||||
bezier = linear, 0, 0, 1, 1
|
||||
bezier = almostLinear, 0.5, 0.5, 0.75, 1
|
||||
bezier = quick, 0.15, 0, 0.1, 1
|
||||
|
||||
# Default animations, see https://wiki.hypr.land/Configuring/Animations/
|
||||
# NAME, ONOFF, SPEED, CURVE, [STYLE]
|
||||
animation = global, 1, 10, default
|
||||
animation = border, 1, 5.39, easeOutQuint
|
||||
animation = windows, 1, 4.79, easeOutQuint
|
||||
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||
animation = fadeIn, 1, 1.73, almostLinear
|
||||
animation = fadeOut, 1, 1.46, almostLinear
|
||||
animation = fade, 1, 3.03, quick
|
||||
animation = layers, 1, 3.81, easeOutQuint
|
||||
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||
animation = layersOut, 1, 1.5, linear, fade
|
||||
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||
animation = workspaces, 1, 1.94, almostLinear, fade
|
||||
animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||
animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||
animation = zoomFactor, 1, 7, quick
|
||||
# ADDED: make special workspaces slide in from the top (thx, https://github.com/hyprwm/Hyprland/discussions/1757#discussioncomment-8921961)
|
||||
animation = specialWorkspaceIn, 1, 2, easeInOutCubic, slidefadevert -50%
|
||||
animation = specialWorkspaceOut, 1, 2, easeInOutCubic, slidefadevert -50%
|
||||
}
|
||||
|
||||
# ADDED: My color palette for GTK apps
|
||||
exec-once = gsettings set org.gnome.desktop.interface gtk-color-palette "'black:white:gray50:red:purple:blue:light blue:green:yellow:orange:lavender:brown:goldenrod4:dodger blue:pink:light green:gray10:gray30:gray75:gray90'"
|
||||
|
||||
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
# uncomment all if you wish to use that.
|
||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||
# workspace = f[1], gapsout:0, gapsin:0
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
|
||||
#dwindle {
|
||||
# pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
# preserve_split = true # You probably want this
|
||||
#}
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#misc
|
||||
misc {
|
||||
#CHANGED: preferred wallpaper; Waydroid fix
|
||||
force_default_wallpaper = 2 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
|
||||
size_limits_tiled = true #Waydroid needs this
|
||||
}
|
||||
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = pl
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options = fkeys:basic_13-24
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad {
|
||||
natural_scroll = true
|
||||
}
|
||||
|
||||
# ADDED: Fix touch&pen mapping
|
||||
tablet {
|
||||
output = eDP-1
|
||||
transform = 0
|
||||
}
|
||||
touchdevice {
|
||||
output = eDP-1
|
||||
transform = 0
|
||||
}
|
||||
}
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Gestures
|
||||
#gesture = 3, horizontal, workspace
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
|
||||
#device {
|
||||
# name = epic-mouse-v1
|
||||
# sensitivity = -0.5
|
||||
#}
|
||||
|
||||
|
||||
###################
|
||||
### KEYBINDINGS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||
|
||||
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
|
||||
bind = $mainMod, T, exec, $terminal # CHANGED: From Q to T
|
||||
# NOTE: This just means "close window"; no actual pkill involved
|
||||
bind = $mainMod, Q, killactive, # CHANGED: From C to Q
|
||||
bind = $mainMod, M, exit,
|
||||
#bind = $mainMod, E, exec, $fileManager
|
||||
#bind = $mainMod, V, togglefloating,
|
||||
# CHANGED: From R to SUPER_L
|
||||
bind = $mainMod, SUPER_L, exec, $menu
|
||||
#bind = $mainMod, P, pseudo, # dwindle
|
||||
#bind = $mainMod, J, togglesplit, # dwindle
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
#bind = $mainMod, left, movefocus, l
|
||||
#bind = $mainMod, right, movefocus, r
|
||||
#bind = $mainMod, up, movefocus, u
|
||||
#bind = $mainMod, down, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
#bind = $mainMod, 1, workspace, 1
|
||||
#bind = $mainMod, 2, workspace, 2
|
||||
#bind = $mainMod, 3, workspace, 3
|
||||
#bind = $mainMod, 4, workspace, 4
|
||||
#bind = $mainMod, 5, workspace, 5
|
||||
#bind = $mainMod, 6, workspace, 6
|
||||
#bind = $mainMod, 7, workspace, 7
|
||||
#bind = $mainMod, 8, workspace, 8
|
||||
#bind = $mainMod, 9, workspace, 9
|
||||
#bind = $mainMod, 0, workspace, 10
|
||||
# ADDED: blank-screen workspace;
|
||||
bind = $mainMod, Z, exec, "$scriptsdir/hide.sh"
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
#bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||
#bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||
#bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||
#bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||
#bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||
#bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||
#bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||
#bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||
#bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||
#bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||
|
||||
# CHANGED: Made my own special workspaces
|
||||
bind = $mainMod, X, togglespecialworkspace, terminal
|
||||
bind = $mainMod, A, togglespecialworkspace, browser
|
||||
bind = $mainMod, D, togglespecialworkspace, discord
|
||||
bind = $mainMod, C, togglespecialworkspace, element
|
||||
bind = $mainMod, S, togglespecialworkspace, obsidian
|
||||
#bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
# NOTE: This - for whatever reason - didn't work when the keyboard was detached. Also, it would suddenly jump by like... 50 presses if I presses the volume key in quick succession. So instead, I have a custom script for this now.
|
||||
#bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 1%+
|
||||
#bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-
|
||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
|
||||
# ADDED: screenshots
|
||||
bind = , PRINT, exec, $scriptsdir/screenshot.sh --full
|
||||
bind = $mainMod, PRINT, exec, $scriptsdir/screenshot.sh
|
||||
bind = , F10, exec, $scriptsdir/screenshot.sh --full
|
||||
bind = $mainMod, F10, exec, $scriptsdir/screenshot.sh
|
||||
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrule
|
||||
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
#windowrule = suppressevent maximize, class:.*
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
#windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||
|
||||
# ADDED: Every new window (*also requires special treatment for MC windows) is a workspace of its own, except for special workspaces
|
||||
windowrule = match:class .*, match:float false, workspace emptym
|
||||
windowrule = match:class org.kde.konsole, workspace special:terminal silent
|
||||
windowrule = match:class app.zen_browser.zen, workspace special:browser silent
|
||||
windowrule = match:class discord, workspace special:discord silent
|
||||
windowrule = match:class im.riot.Riot, workspace special:element silent
|
||||
windowrule = match:class obsidian, workspace special:obsidian silent
|
||||
# ADDED: Minecraft (incl. modpacks having custom names - only Melatonin discovered so far) windows require special treatment to avoid being treated as floating
|
||||
windowrule = match:class Melatonin, workspace emptym, maximize on
|
||||
windowrule = match:class Minecraft.*, workspace emptym, maximize on
|
||||
|
||||
# ADDED: Lock Waydroid size (Android throws a hissy fit and explodes if you try to resize its „monitor” at runtime) - DISABLED, instead I just decided to make it fullscreen
|
||||
#windowrule = match:class Waydroid, max_size 1900 1221, min_size 1900 1221, tile on
|
||||
windowrule = match:class Waydroid, fullscreen on
|
||||
|
||||
# ADDED: window rules recommended by Vicinae
|
||||
#layerrule = blur,vicinae
|
||||
#layerrule = ignorealpha 0, vicinae
|
||||
#layerrule = noanim, vicinae
|
||||
|
||||
|
||||
#######################
|
||||
### ADDED: XWAYLAND ###
|
||||
#######################
|
||||
|
||||
xwayland {
|
||||
force_zero_scaling = true
|
||||
}
|
||||
|
||||
|
||||
####################
|
||||
### ADDED: TOUCH ###
|
||||
####################
|
||||
|
||||
exec = hyprpm reload
|
||||
|
||||
plugin {
|
||||
touch_gestures {
|
||||
sensitivity = 4.0
|
||||
edge_margin = 50
|
||||
|
||||
hyprgrass-bind = , edge:d:u, exec, $scriptsdir/keyboard.sh --no-rotate
|
||||
hyprgrass-bind = , tap:3, exec, $menu -k
|
||||
}
|
||||
}
|
||||
|
||||
debug {
|
||||
#disable_logs = false
|
||||
}
|
||||
412
myhyprland.lua
Normal file
412
myhyprland.lua
Normal file
|
|
@ -0,0 +1,412 @@
|
|||
-------------------
|
||||
---- VARIABLES ----
|
||||
-------------------
|
||||
local hyprdir = ".config/hypr"
|
||||
local scripts = hyprdir.."/scripts"
|
||||
|
||||
-- Set programs that I use
|
||||
local terminal = scripts.."terminal.sh"
|
||||
local fileManager = "dolphin"
|
||||
local menu = scripts.."toggle-hyprshell.sh"
|
||||
|
||||
|
||||
------------------
|
||||
---- MONITORS ----
|
||||
------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Basics/Monitors/
|
||||
|
||||
-- defaults
|
||||
hl.monitor({
|
||||
output = "",
|
||||
mode = "preferred",
|
||||
position = "auto",
|
||||
scale = 1,
|
||||
mirror = "eDP-1",
|
||||
})
|
||||
|
||||
-- Main tablet screen
|
||||
hl.monitor({
|
||||
output = "eDP-1",
|
||||
mode = "preferred",
|
||||
position = "0x0",
|
||||
scale = 1,
|
||||
})
|
||||
|
||||
-- My monitor at home
|
||||
hl.monitor({
|
||||
output = "desc:Acer Technologies Acer XF240H 0x0160F332",
|
||||
mode = "preferred",
|
||||
position = "1925x-900",
|
||||
scale = 1,
|
||||
})
|
||||
|
||||
|
||||
-------------------
|
||||
---- AUTOSTART ----
|
||||
-------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Basics/Autostart/
|
||||
|
||||
hl.on("hyprland.start", function ()
|
||||
-- Load plugins
|
||||
--hl.exec_cmd("hyprpm reload")
|
||||
|
||||
-- Special workspaces
|
||||
hl.exec_cmd(terminal)
|
||||
hl.exec_cmd("flatpak run app.zen_browser.zen")
|
||||
hl.exec_cmd("flatpak run com.discordapp.Discord")
|
||||
hl.exec_cmd("flatpak run im.riot.Riot")
|
||||
hl.exec_cmd("flatpak run md.obsidian.Obsidian")
|
||||
|
||||
-- Core daemons
|
||||
hl.exec_cmd("hyprshell -c "..hyprdir.."/hyprshell.ron -s "..hyprdir.."/hyprshell.css run")
|
||||
hl.exec_cmd("vicinae server")
|
||||
hl.exec_cmd("wvkbd-deskintl --hidden -o")
|
||||
hl.exec_cmd("hyprpanel")
|
||||
hl.exec_cmd(scripts.."keyboard.sh reset")
|
||||
hl.exec_cmd(scripts.."volume-core.sh --start-daemon")
|
||||
|
||||
-- Waydroid (note: this also launches rootedinit.sh under-the-hood)
|
||||
hl.exec_cmd(scripts.."waydroid.sh")
|
||||
|
||||
-- Dark theme
|
||||
hl.exec_cmd("gsettings set org.gnome.desktop.interface gtk-theme Breeze-Dark"); -- for GTK3 apps
|
||||
hl.exec_cmd("gsettings set org.gnome.desktop.interface color-scheme prefer-dark"); -- for GTK4 apps
|
||||
hl.exec_cmd("gsettings set org.gnome.desktop.interface gtk-color-palette \"'black:white:gray50:red:purple:blue:light blue:green:yellow:orange:lavender:brown:goldenrod4:dodger blue:pink:light green:gray10:gray30:gray75:gray90'\""); --Unrelated to Dark Theme (just my color palette), but there was no better place for it.
|
||||
end)
|
||||
|
||||
|
||||
-------------------------------
|
||||
---- ENVIRONMENT VARIABLES ----
|
||||
-------------------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/
|
||||
|
||||
-- Were the defaults; no reason to fuck around
|
||||
hl.env("XCURSOR_SIZE", "24")
|
||||
hl.env("HYPRCURSOR_SIZE", "24")
|
||||
|
||||
-- Dark theme, again (*must set manually)
|
||||
hl.env("QT_QPA_PLATFORMTHEME", "qt6ct")
|
||||
|
||||
|
||||
-----------------------
|
||||
----- PERMISSIONS -----
|
||||
-----------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Permissions/
|
||||
|
||||
hl.config({
|
||||
ecosystem = {
|
||||
enforce_permissions = true,
|
||||
},
|
||||
})
|
||||
|
||||
hl.permission({binary="/usr/(bin|local/bin)/grim", type="screencopy", mode="allow"})
|
||||
hl.permission({binary="/usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland", type="screencopy", mode="allow"})
|
||||
|
||||
hl.permission({binary="/usr/(bin|local/bin)/hyprpm", type="plugin", mode="allow"})
|
||||
hl.permission({binary="/usr/(bin|local/bin)/hyprshell", type="plugin", mode="allow"})
|
||||
|
||||
|
||||
-----------------------
|
||||
---- LOOK AND FEEL ----
|
||||
-----------------------
|
||||
|
||||
-- Refer to https://wiki.hypr.land/Configuring/Basics/Variables/
|
||||
hl.config({
|
||||
general = {
|
||||
gaps_in = 4,
|
||||
gaps_out = {top=0, right=8, bottom=8, left=8},
|
||||
|
||||
border_size = 2,
|
||||
|
||||
col = {
|
||||
active_border = { colors = {"rgb(FFE610)", "rgb(E6FF10)"}, angle = 240 },
|
||||
inactive_border = { colors = {"rgba(FFE61020)", "rgba(E6FF10E0)"}, angle = 240 },
|
||||
},
|
||||
|
||||
-- Set to true to enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = true,
|
||||
|
||||
-- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on
|
||||
allow_tearing = false,
|
||||
|
||||
layout = "dwindle",
|
||||
},
|
||||
|
||||
decoration = {
|
||||
rounding = 15,
|
||||
rounding_power = 3,
|
||||
|
||||
-- Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0,
|
||||
inactive_opacity = 1.0,
|
||||
|
||||
shadow = {
|
||||
enabled = true,
|
||||
range = 4,
|
||||
render_power = 3,
|
||||
color = 0xee1a1a1a,
|
||||
},
|
||||
|
||||
blur = {
|
||||
enabled = true, --During the Lua migration, I noticed the following note attached in the previous config: „NOTE: Occasionally (when terminal breaks), this needs to be disabled (until I figure out how to get blur only on the background ALWAYS, without making all terminal text glow SOMETIMES)”. However, I don't think I experienced any „terminal glowing” problems in a long time (tho transparency still breaks on it from time to time), so ig this is no longer needed? Leaving the note in, just in case it does end up happening again.
|
||||
size = 3,
|
||||
passes = 1,
|
||||
vibrancy = 0.1696,
|
||||
},
|
||||
},
|
||||
|
||||
animations = {
|
||||
enabled = true,
|
||||
},
|
||||
})
|
||||
|
||||
-- Default curves and animations, see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Animations/
|
||||
hl.curve("easeOutQuint", { type = "bezier", points = { {0.23, 1}, {0.32, 1} }})
|
||||
hl.curve("easeInOutCubic", { type = "bezier", points = { {0.65, 0.05}, {0.36, 1} }})
|
||||
hl.curve("linear", { type = "bezier", points = { {0, 0}, {1, 1} }})
|
||||
hl.curve("almostLinear", { type = "bezier", points = { {0.5, 0.5}, {0.75, 1} }})
|
||||
hl.curve("quick", { type = "bezier", points = { {0.15, 0}, {0.1, 1} }})
|
||||
|
||||
-- Default springs
|
||||
hl.curve("easy", { type = "spring", mass = 1, stiffness = 71.2633, dampening = 15.8273644 })
|
||||
|
||||
hl.animation({ leaf = "global", enabled = true, speed = 10, bezier = "default" })
|
||||
hl.animation({ leaf = "border", enabled = true, speed = 5.39, bezier = "easeOutQuint" })
|
||||
hl.animation({ leaf = "windows", enabled = true, speed = 4.79, spring = "easy" })
|
||||
hl.animation({ leaf = "windowsIn", enabled = true, speed = 4.1, spring = "easy", style = "popin 87%" })
|
||||
hl.animation({ leaf = "windowsOut", enabled = true, speed = 1.49, bezier = "linear", style = "popin 87%" })
|
||||
hl.animation({ leaf = "fadeIn", enabled = true, speed = 1.73, bezier = "almostLinear" })
|
||||
hl.animation({ leaf = "fadeOut", enabled = true, speed = 1.46, bezier = "almostLinear" })
|
||||
hl.animation({ leaf = "fade", enabled = true, speed = 3.03, bezier = "quick" })
|
||||
hl.animation({ leaf = "layers", enabled = true, speed = 3.81, bezier = "easeOutQuint" })
|
||||
hl.animation({ leaf = "layersIn", enabled = true, speed = 4, bezier = "easeOutQuint", style = "fade" })
|
||||
hl.animation({ leaf = "layersOut", enabled = true, speed = 1.5, bezier = "linear", style = "fade" })
|
||||
hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 1.79, bezier = "almostLinear" })
|
||||
hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 1.39, bezier = "almostLinear" })
|
||||
hl.animation({ leaf = "workspaces", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
|
||||
hl.animation({ leaf = "workspacesIn", enabled = true, speed = 1.21, bezier = "almostLinear", style = "fade" })
|
||||
hl.animation({ leaf = "workspacesOut", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
|
||||
hl.animation({ leaf = "zoomFactor", enabled = true, speed = 7, bezier = "quick" })
|
||||
|
||||
-- Special workspaces slide-in from the top (thx, https://github.com/hyprwm/Hyprland/discussions/1757#discussioncomment-8921961)
|
||||
hl.animation({ leaf = "specialWorkspaceIn", enabled=true, speed=2, bezier="easeInOutCubic", style="slidefadevert -50%" })
|
||||
hl.animation({ leaf = "specialWorkspaceOut", enabled=true, speed=2, bezier="easeInOutCubic", style="slidefadevert -50%" })
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Layouts/Dwindle-Layout/ for more
|
||||
hl.config({
|
||||
dwindle = {
|
||||
preserve_split = true, -- You probably want this
|
||||
},
|
||||
})
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Layouts/Master-Layout/ for more
|
||||
hl.config({
|
||||
master = {
|
||||
new_status = "master",
|
||||
},
|
||||
})
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Layouts/Scrolling-Layout/ for more
|
||||
hl.config({
|
||||
scrolling = {
|
||||
fullscreen_on_one_column = true,
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
--------------
|
||||
---- MISC ----
|
||||
--------------
|
||||
|
||||
hl.config({
|
||||
misc = {
|
||||
force_default_wallpaper = 2, -- Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false, -- If true disables the random hyprland logo / anime girl background. :(
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
---------------
|
||||
---- INPUT ----
|
||||
---------------
|
||||
|
||||
hl.config({
|
||||
input = {
|
||||
kb_layout = "pl",
|
||||
kb_variant = "",
|
||||
kb_model = "",
|
||||
kb_options = "fkeys:basic_13-24",
|
||||
kb_rules = "",
|
||||
|
||||
follow_mouse = 1,
|
||||
|
||||
sensitivity = 0, -- -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = true,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
---------------------
|
||||
---- KEYBINDINGS ----
|
||||
---------------------
|
||||
|
||||
local mainMod = "SUPER" -- Sets "Windows" key as main modifier
|
||||
|
||||
-- Example binds, see https://wiki.hypr.land/Configuring/Basics/Binds/ for more
|
||||
hl.bind(mainMod .. " + T", hl.dsp.exec_cmd(terminal))
|
||||
local closeWindowBind = hl.bind(mainMod .. " + Q", hl.dsp.window.close())
|
||||
-- closeWindowBind:set_enabled(false)
|
||||
hl.bind(mainMod .. " + M", hl.dsp.exit())
|
||||
hl.bind(mainMod, hl.dsp.exec_cmd(menu))
|
||||
|
||||
-- Quick-pad: Special workspaces + boss-key
|
||||
hl.bind(mainMod .. " + X", hl.dsp.workspace.toggle_special("terminal"))
|
||||
hl.bind(mainMod .. " + A", hl.dsp.workspace.toggle_special("browser"))
|
||||
hl.bind(mainMod .. " + D", hl.dsp.workspace.toggle_special("discord"))
|
||||
hl.bind(mainMod .. " + C", hl.dsp.workspace.toggle_special("element"))
|
||||
hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("obsidian"))
|
||||
hl.bind(mainMod .. " + Z", hl.dsp.exec_cmd(scripts.."hide.sh"))
|
||||
|
||||
-- Scroll through existing workspaces with mainMod + scroll
|
||||
hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
|
||||
hl.bind(mainMod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" }))
|
||||
|
||||
-- Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
|
||||
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
|
||||
|
||||
-- Laptop multimedia keys for volume and LCD brightness
|
||||
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true, repeating = true })
|
||||
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true, repeating = true })
|
||||
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { locked = true, repeating = true })
|
||||
hl.bind("XF86MonBrightnessDown",hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { locked = true, repeating = true })
|
||||
|
||||
-- Requires playerctl
|
||||
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true })
|
||||
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
|
||||
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
|
||||
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
|
||||
|
||||
-- Screenshots
|
||||
hl.bind("PRINT", hl.dsp.exec_cmd(scripts.."screenshot.sh"))
|
||||
hl.bind(mainMod.." + PRINT", hl.dsp.exec_cmd(scripts.."screenshot.sh --full"))
|
||||
|
||||
|
||||
--------------------------------
|
||||
---- WINDOWS AND WORKSPACES ----
|
||||
--------------------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Basics/Window-Rules/
|
||||
-- and https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/
|
||||
|
||||
-- Example window rules that are useful
|
||||
|
||||
local suppressMaximizeRule = hl.window_rule({
|
||||
-- Ignore maximize requests from all apps. You'll probably like this.
|
||||
name = "suppress-maximize-events",
|
||||
match = { class = ".*" },
|
||||
suppress_event = "maximize",
|
||||
})
|
||||
suppressMaximizeRule:set_enabled(false) -- ...No, I won't. I run everything as exclusive-window-per-workspace anyway, so I'm not worried about „Windows deciding to take up all my space” (I literally do that). All this will do is cause de-syncs (especially in client-side decorated apps, like all the crapware made in GTK) for exactly 0 benefit.
|
||||
|
||||
hl.window_rule({
|
||||
-- Fix some dragging issues with XWayland
|
||||
name = "fix-xwayland-drags",
|
||||
match = {
|
||||
class = "^$",
|
||||
title = "^$",
|
||||
xwayland = true,
|
||||
float = true,
|
||||
fullscreen = false,
|
||||
pin = false,
|
||||
},
|
||||
no_focus = true,
|
||||
})
|
||||
|
||||
-- Hyprland-run windowrule
|
||||
hl.window_rule({
|
||||
name = "move-hyprland-run",
|
||||
match = { class = "hyprland-run" },
|
||||
move = "20 monitor_h-120",
|
||||
float = true,
|
||||
})
|
||||
|
||||
-- My rules
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-default",
|
||||
match = {
|
||||
class = ".*",
|
||||
float = false
|
||||
},
|
||||
workspace = "emptym"
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-special-terminal",
|
||||
match = { class = "org.kde.konsole" },
|
||||
workspace = "special:terminal"
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-special-browser",
|
||||
match = { class = "app.zen_browser.zen" },
|
||||
workspace = "special:browser silent"
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-special-discord",
|
||||
match = { class = "discord" },
|
||||
workspace = "special:discord silent"
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-special-element",
|
||||
match = { class = "im.riot.Riot" },
|
||||
workspace = "special:element silent"
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-special-obsidian",
|
||||
match = { class = "obsidian" },
|
||||
workspace = "special:obsidian silent"
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-minecraft-default",
|
||||
match = { class = "Minecraft.*" },
|
||||
workspace = "emptym",
|
||||
maximize = true
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-minecraft-modpack-melatonin",
|
||||
match = { class = "Melatonin" },
|
||||
workspace = "emptym",
|
||||
maximize = true
|
||||
})
|
||||
|
||||
hl.window_rule({
|
||||
name = "onwinopen-override-waydroid",
|
||||
match = { class = "Waydroid" },
|
||||
fullscreen = true
|
||||
})
|
||||
|
||||
|
||||
-------------------
|
||||
---- HYPRGRASS ----
|
||||
-------------------
|
||||
|
||||
--hl.plugin.touch_gestures = {
|
||||
-- sensitivity = 4.0,
|
||||
-- edge_margin = 50,
|
||||
-- ["hyprgrass-bind"] = ", edge:d:u, exec, $scriptsdir/keyboard.sh --no-rotate",
|
||||
-- ["hyprgrass-bind"] = ", tap:3, exec, $menu -k"
|
||||
--}
|
||||
340
ohyprland.conf
Normal file
340
ohyprland.conf
Normal file
|
|
@ -0,0 +1,340 @@
|
|||
# This is an example Hyprland config file.
|
||||
# Refer to the wiki for more information.
|
||||
# https://wiki.hypr.land/Configuring/
|
||||
|
||||
# Please note not all available settings / options are set here.
|
||||
# For a full list, see the wiki
|
||||
|
||||
# You can split this configuration into multiple files
|
||||
# Create your files separately and then link them to this file like this:
|
||||
# source = ~/.config/hypr/myColors.conf
|
||||
|
||||
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Monitors/
|
||||
monitor=,preferred,auto,auto
|
||||
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = kitty
|
||||
$fileManager = dolphin
|
||||
$menu = hyprlauncher
|
||||
|
||||
|
||||
#################
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
|
||||
# exec-once = $terminal
|
||||
# exec-once = nm-applet &
|
||||
# exec-once = waybar & hyprpaper & firefox
|
||||
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Environment-variables/
|
||||
|
||||
env = XCURSOR_SIZE,24
|
||||
env = HYPRCURSOR_SIZE,24
|
||||
|
||||
|
||||
###################
|
||||
### PERMISSIONS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Permissions/
|
||||
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
|
||||
# for security reasons
|
||||
|
||||
# ecosystem {
|
||||
# enforce_permissions = 1
|
||||
# }
|
||||
|
||||
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
|
||||
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
|
||||
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
|
||||
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hypr.land/Configuring/Variables/
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 5
|
||||
gaps_out = 20
|
||||
|
||||
border_size = 2
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
|
||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
col.inactive_border = rgba(595959aa)
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false
|
||||
|
||||
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 10
|
||||
rounding_power = 2
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 1.0
|
||||
|
||||
shadow {
|
||||
enabled = true
|
||||
range = 4
|
||||
render_power = 3
|
||||
color = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#blur
|
||||
blur {
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
|
||||
vibrancy = 0.1696
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#animations
|
||||
animations {
|
||||
enabled = yes, please :)
|
||||
|
||||
# Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
|
||||
# NAME, X0, Y0, X1, Y1
|
||||
bezier = easeOutQuint, 0.23, 1, 0.32, 1
|
||||
bezier = easeInOutCubic, 0.65, 0.05, 0.36, 1
|
||||
bezier = linear, 0, 0, 1, 1
|
||||
bezier = almostLinear, 0.5, 0.5, 0.75, 1
|
||||
bezier = quick, 0.15, 0, 0.1, 1
|
||||
|
||||
# Default animations, see https://wiki.hypr.land/Configuring/Animations/
|
||||
# NAME, ONOFF, SPEED, CURVE, [STYLE]
|
||||
animation = global, 1, 10, default
|
||||
animation = border, 1, 5.39, easeOutQuint
|
||||
animation = windows, 1, 4.79, easeOutQuint
|
||||
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||
animation = fadeIn, 1, 1.73, almostLinear
|
||||
animation = fadeOut, 1, 1.46, almostLinear
|
||||
animation = fade, 1, 3.03, quick
|
||||
animation = layers, 1, 3.81, easeOutQuint
|
||||
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||
animation = layersOut, 1, 1.5, linear, fade
|
||||
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||
animation = workspaces, 1, 1.94, almostLinear, fade
|
||||
animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||
animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||
animation = zoomFactor, 1, 7, quick
|
||||
}
|
||||
|
||||
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
# uncomment all if you wish to use that.
|
||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||
# workspace = f[1], gapsout:0, gapsin:0
|
||||
# windowrule {
|
||||
# name = no-gaps-wtv1
|
||||
# match:float = false
|
||||
# match:workspace = w[tv1]
|
||||
#
|
||||
# border_size = 0
|
||||
# rounding = 0
|
||||
# }
|
||||
#
|
||||
# windowrule {
|
||||
# name = no-gaps-f1
|
||||
# match:float = false
|
||||
# match:workspace = f[1]
|
||||
#
|
||||
# border_size = 0
|
||||
# rounding = 0
|
||||
# }
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
preserve_split = true # You probably want this
|
||||
}
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
|
||||
}
|
||||
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = us
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options =
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad {
|
||||
natural_scroll = false
|
||||
}
|
||||
}
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Gestures
|
||||
gesture = 3, horizontal, workspace
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
|
||||
device {
|
||||
name = epic-mouse-v1
|
||||
sensitivity = -0.5
|
||||
}
|
||||
|
||||
|
||||
###################
|
||||
### KEYBINDINGS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||
|
||||
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
|
||||
bind = $mainMod, Q, exec, $terminal
|
||||
bind = $mainMod, C, killactive,
|
||||
bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit
|
||||
bind = $mainMod, E, exec, $fileManager
|
||||
bind = $mainMod, V, togglefloating,
|
||||
bind = $mainMod, R, exec, $menu
|
||||
bind = $mainMod, P, pseudo, # dwindle
|
||||
bind = $mainMod, J, layoutmsg, togglesplit # dwindle
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = $mainMod, left, movefocus, l
|
||||
bind = $mainMod, right, movefocus, r
|
||||
bind = $mainMod, up, movefocus, u
|
||||
bind = $mainMod, down, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, workspace, 1
|
||||
bind = $mainMod, 2, workspace, 2
|
||||
bind = $mainMod, 3, workspace, 3
|
||||
bind = $mainMod, 4, workspace, 4
|
||||
bind = $mainMod, 5, workspace, 5
|
||||
bind = $mainMod, 6, workspace, 6
|
||||
bind = $mainMod, 7, workspace, 7
|
||||
bind = $mainMod, 8, workspace, 8
|
||||
bind = $mainMod, 9, workspace, 9
|
||||
bind = $mainMod, 0, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
bind = $mainMod, S, togglespecialworkspace, magic
|
||||
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrules that are useful
|
||||
|
||||
windowrule {
|
||||
# Ignore maximize requests from all apps. You'll probably like this.
|
||||
name = suppress-maximize-events
|
||||
match:class = .*
|
||||
|
||||
suppress_event = maximize
|
||||
}
|
||||
|
||||
windowrule {
|
||||
# Fix some dragging issues with XWayland
|
||||
name = fix-xwayland-drags
|
||||
match:class = ^$
|
||||
match:title = ^$
|
||||
match:xwayland = true
|
||||
match:float = true
|
||||
match:fullscreen = false
|
||||
match:pin = false
|
||||
|
||||
no_focus = true
|
||||
}
|
||||
|
||||
# Hyprland-run windowrule
|
||||
windowrule {
|
||||
name = move-hyprland-run
|
||||
|
||||
match:class = hyprland-run
|
||||
|
||||
move = 20 monitor_h-120
|
||||
float = yes
|
||||
}
|
||||
356
ohyprland.lua
Normal file
356
ohyprland.lua
Normal file
|
|
@ -0,0 +1,356 @@
|
|||
-- This is an example Hyprland Lua config file.
|
||||
-- Refer to the wiki for more information.
|
||||
-- https://wiki.hypr.land/Configuring/Start/
|
||||
|
||||
-- Please note not all available settings / options are set here.
|
||||
-- For a full list, see the wiki
|
||||
|
||||
-- You can (and should!!) split this configuration into multiple files
|
||||
-- Create your files separately and then require them like this:
|
||||
-- require("myColors")
|
||||
|
||||
|
||||
------------------
|
||||
---- MONITORS ----
|
||||
------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Basics/Monitors/
|
||||
hl.monitor({
|
||||
output = "",
|
||||
mode = "preferred",
|
||||
position = "auto",
|
||||
scale = "auto",
|
||||
})
|
||||
|
||||
|
||||
---------------------
|
||||
---- MY PROGRAMS ----
|
||||
---------------------
|
||||
|
||||
-- Set programs that you use
|
||||
local terminal = "konsole"
|
||||
local fileManager = "dolphin"
|
||||
local menu = "hyprlauncher"
|
||||
|
||||
|
||||
-------------------
|
||||
---- AUTOSTART ----
|
||||
-------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Basics/Autostart/
|
||||
|
||||
-- Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
-- Or execute your favorite apps at launch like this:
|
||||
--
|
||||
-- hl.on("hyprland.start", function ()
|
||||
-- hl.exec_cmd(terminal)
|
||||
-- hl.exec_cmd("nm-applet")
|
||||
-- hl.exec_cmd("waybar & hyprpaper & firefox")
|
||||
-- end)
|
||||
|
||||
|
||||
-------------------------------
|
||||
---- ENVIRONMENT VARIABLES ----
|
||||
-------------------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/
|
||||
|
||||
hl.env("XCURSOR_SIZE", "24")
|
||||
hl.env("HYPRCURSOR_SIZE", "24")
|
||||
|
||||
|
||||
-----------------------
|
||||
----- PERMISSIONS -----
|
||||
-----------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Permissions/
|
||||
-- Please note permission changes here require a Hyprland restart and are not applied on-the-fly
|
||||
-- for security reasons
|
||||
|
||||
-- hl.config({
|
||||
-- ecosystem = {
|
||||
-- enforce_permissions = true,
|
||||
-- },
|
||||
-- })
|
||||
|
||||
-- hl.permission("/usr/(bin|local/bin)/grim", "screencopy", "allow")
|
||||
-- hl.permission("/usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland", "screencopy", "allow")
|
||||
-- hl.permission("/usr/(bin|local/bin)/hyprpm", "plugin", "allow")
|
||||
|
||||
|
||||
-----------------------
|
||||
---- LOOK AND FEEL ----
|
||||
-----------------------
|
||||
|
||||
-- Refer to https://wiki.hypr.land/Configuring/Basics/Variables/
|
||||
hl.config({
|
||||
general = {
|
||||
gaps_in = 5,
|
||||
gaps_out = 20,
|
||||
|
||||
border_size = 2,
|
||||
|
||||
col = {
|
||||
active_border = { colors = {"rgba(33ccffee)", "rgba(00ff99ee)"}, angle = 45 },
|
||||
inactive_border = "rgba(595959aa)",
|
||||
},
|
||||
|
||||
-- Set to true to enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false,
|
||||
|
||||
-- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on
|
||||
allow_tearing = false,
|
||||
|
||||
layout = "dwindle",
|
||||
},
|
||||
|
||||
decoration = {
|
||||
rounding = 10,
|
||||
rounding_power = 2,
|
||||
|
||||
-- Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0,
|
||||
inactive_opacity = 1.0,
|
||||
|
||||
shadow = {
|
||||
enabled = true,
|
||||
range = 4,
|
||||
render_power = 3,
|
||||
color = 0xee1a1a1a,
|
||||
},
|
||||
|
||||
blur = {
|
||||
enabled = true,
|
||||
size = 3,
|
||||
passes = 1,
|
||||
vibrancy = 0.1696,
|
||||
},
|
||||
},
|
||||
|
||||
animations = {
|
||||
enabled = true,
|
||||
},
|
||||
})
|
||||
|
||||
-- Default curves and animations, see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Animations/
|
||||
hl.curve("easeOutQuint", { type = "bezier", points = { {0.23, 1}, {0.32, 1} } })
|
||||
hl.curve("easeInOutCubic", { type = "bezier", points = { {0.65, 0.05}, {0.36, 1} } })
|
||||
hl.curve("linear", { type = "bezier", points = { {0, 0}, {1, 1} } })
|
||||
hl.curve("almostLinear", { type = "bezier", points = { {0.5, 0.5}, {0.75, 1} } })
|
||||
hl.curve("quick", { type = "bezier", points = { {0.15, 0}, {0.1, 1} } })
|
||||
|
||||
-- Default springs
|
||||
hl.curve("easy", { type = "spring", mass = 1, stiffness = 71.2633, dampening = 15.8273644 })
|
||||
|
||||
hl.animation({ leaf = "global", enabled = true, speed = 10, bezier = "default" })
|
||||
hl.animation({ leaf = "border", enabled = true, speed = 5.39, bezier = "easeOutQuint" })
|
||||
hl.animation({ leaf = "windows", enabled = true, speed = 4.79, spring = "easy" })
|
||||
hl.animation({ leaf = "windowsIn", enabled = true, speed = 4.1, spring = "easy", style = "popin 87%" })
|
||||
hl.animation({ leaf = "windowsOut", enabled = true, speed = 1.49, bezier = "linear", style = "popin 87%" })
|
||||
hl.animation({ leaf = "fadeIn", enabled = true, speed = 1.73, bezier = "almostLinear" })
|
||||
hl.animation({ leaf = "fadeOut", enabled = true, speed = 1.46, bezier = "almostLinear" })
|
||||
hl.animation({ leaf = "fade", enabled = true, speed = 3.03, bezier = "quick" })
|
||||
hl.animation({ leaf = "layers", enabled = true, speed = 3.81, bezier = "easeOutQuint" })
|
||||
hl.animation({ leaf = "layersIn", enabled = true, speed = 4, bezier = "easeOutQuint", style = "fade" })
|
||||
hl.animation({ leaf = "layersOut", enabled = true, speed = 1.5, bezier = "linear", style = "fade" })
|
||||
hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 1.79, bezier = "almostLinear" })
|
||||
hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 1.39, bezier = "almostLinear" })
|
||||
hl.animation({ leaf = "workspaces", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
|
||||
hl.animation({ leaf = "workspacesIn", enabled = true, speed = 1.21, bezier = "almostLinear", style = "fade" })
|
||||
hl.animation({ leaf = "workspacesOut", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
|
||||
hl.animation({ leaf = "zoomFactor", enabled = true, speed = 7, bezier = "quick" })
|
||||
|
||||
-- Ref https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/
|
||||
-- "Smart gaps" / "No gaps when only"
|
||||
-- uncomment all if you wish to use that.
|
||||
-- hl.workspace_rule({ workspace = "w[tv1]", gaps_out = 0, gaps_in = 0 })
|
||||
-- hl.workspace_rule({ workspace = "f[1]", gaps_out = 0, gaps_in = 0 })
|
||||
-- hl.window_rule({
|
||||
-- name = "no-gaps-wtv1",
|
||||
-- match = { float = false, workspace = "w[tv1]" },
|
||||
-- border_size = 0,
|
||||
-- rounding = 0,
|
||||
-- })
|
||||
-- hl.window_rule({
|
||||
-- name = "no-gaps-f1",
|
||||
-- match = { float = false, workspace = "f[1]" },
|
||||
-- border_size = 0,
|
||||
-- rounding = 0,
|
||||
-- })
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Layouts/Dwindle-Layout/ for more
|
||||
hl.config({
|
||||
dwindle = {
|
||||
preserve_split = true, -- You probably want this
|
||||
},
|
||||
})
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Layouts/Master-Layout/ for more
|
||||
hl.config({
|
||||
master = {
|
||||
new_status = "master",
|
||||
},
|
||||
})
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Layouts/Scrolling-Layout/ for more
|
||||
hl.config({
|
||||
scrolling = {
|
||||
fullscreen_on_one_column = true,
|
||||
},
|
||||
})
|
||||
|
||||
----------------
|
||||
---- MISC ----
|
||||
----------------
|
||||
|
||||
hl.config({
|
||||
misc = {
|
||||
force_default_wallpaper = -1, -- Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false, -- If true disables the random hyprland logo / anime girl background. :(
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
---------------
|
||||
---- INPUT ----
|
||||
---------------
|
||||
|
||||
hl.config({
|
||||
input = {
|
||||
kb_layout = "us",
|
||||
kb_variant = "",
|
||||
kb_model = "",
|
||||
kb_options = "",
|
||||
kb_rules = "",
|
||||
|
||||
follow_mouse = 1,
|
||||
|
||||
sensitivity = 0, -- -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = false,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
hl.gesture({
|
||||
fingers = 3,
|
||||
direction = "horizontal",
|
||||
action = "workspace"
|
||||
})
|
||||
|
||||
-- Example per-device config
|
||||
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Devices/ for more
|
||||
hl.device({
|
||||
name = "epic-mouse-v1",
|
||||
sensitivity = -0.5,
|
||||
})
|
||||
|
||||
|
||||
---------------------
|
||||
---- KEYBINDINGS ----
|
||||
---------------------
|
||||
|
||||
local mainMod = "SUPER" -- Sets "Windows" key as main modifier
|
||||
|
||||
-- Example binds, see https://wiki.hypr.land/Configuring/Basics/Binds/ for more
|
||||
hl.bind(mainMod .. " + Q", hl.dsp.exec_cmd(terminal))
|
||||
local closeWindowBind = hl.bind(mainMod .. " + C", hl.dsp.window.close())
|
||||
-- closeWindowBind:set_enabled(false)
|
||||
hl.bind(mainMod .. " + M", hl.dsp.exec_cmd("command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch 'hl.dsp.exit()'"))
|
||||
hl.bind(mainMod .. " + E", hl.dsp.exec_cmd(fileManager))
|
||||
hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }))
|
||||
hl.bind(mainMod .. " + R", hl.dsp.exec_cmd(menu))
|
||||
hl.bind(mainMod .. " + P", hl.dsp.window.pseudo())
|
||||
hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit")) -- dwindle only
|
||||
|
||||
-- Move focus with mainMod + arrow keys
|
||||
hl.bind(mainMod .. " + left", hl.dsp.focus({ direction = "left" }))
|
||||
hl.bind(mainMod .. " + right", hl.dsp.focus({ direction = "right" }))
|
||||
hl.bind(mainMod .. " + up", hl.dsp.focus({ direction = "up" }))
|
||||
hl.bind(mainMod .. " + down", hl.dsp.focus({ direction = "down" }))
|
||||
|
||||
-- Switch workspaces with mainMod + [0-9]
|
||||
-- Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
for i = 1, 10 do
|
||||
local key = i % 10 -- 10 maps to key 0
|
||||
hl.bind(mainMod .. " + " .. key, hl.dsp.focus({ workspace = i}))
|
||||
hl.bind(mainMod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i }))
|
||||
end
|
||||
|
||||
-- Example special workspace (scratchpad)
|
||||
hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("magic"))
|
||||
hl.bind(mainMod .. " + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" }))
|
||||
|
||||
-- Scroll through existing workspaces with mainMod + scroll
|
||||
hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
|
||||
hl.bind(mainMod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" }))
|
||||
|
||||
-- Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
|
||||
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
|
||||
|
||||
-- Laptop multimedia keys for volume and LCD brightness
|
||||
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true, repeating = true })
|
||||
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true, repeating = true })
|
||||
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true, repeating = true })
|
||||
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true, repeating = true })
|
||||
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { locked = true, repeating = true })
|
||||
hl.bind("XF86MonBrightnessDown",hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { locked = true, repeating = true })
|
||||
|
||||
-- Requires playerctl
|
||||
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true })
|
||||
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
|
||||
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
|
||||
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
|
||||
|
||||
|
||||
--------------------------------
|
||||
---- WINDOWS AND WORKSPACES ----
|
||||
--------------------------------
|
||||
|
||||
-- See https://wiki.hypr.land/Configuring/Basics/Window-Rules/
|
||||
-- and https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/
|
||||
|
||||
-- Example window rules that are useful
|
||||
|
||||
local suppressMaximizeRule = hl.window_rule({
|
||||
-- Ignore maximize requests from all apps. You'll probably like this.
|
||||
name = "suppress-maximize-events",
|
||||
match = { class = ".*" },
|
||||
|
||||
suppress_event = "maximize",
|
||||
})
|
||||
-- suppressMaximizeRule:set_enabled(false)
|
||||
|
||||
hl.window_rule({
|
||||
-- Fix some dragging issues with XWayland
|
||||
name = "fix-xwayland-drags",
|
||||
match = {
|
||||
class = "^$",
|
||||
title = "^$",
|
||||
xwayland = true,
|
||||
float = true,
|
||||
fullscreen = false,
|
||||
pin = false,
|
||||
},
|
||||
|
||||
no_focus = true,
|
||||
})
|
||||
|
||||
-- Layer rules also return a handle.
|
||||
-- local overlayLayerRule = hl.layer_rule({
|
||||
-- name = "no-anim-overlay",
|
||||
-- match = { namespace = "^my-overlay$" },
|
||||
-- no_anim = true,
|
||||
-- })
|
||||
-- overlayLayerRule:set_enabled(false)
|
||||
|
||||
-- Hyprland-run windowrule
|
||||
hl.window_rule({
|
||||
name = "move-hyprland-run",
|
||||
match = { class = "hyprland-run" },
|
||||
|
||||
move = "20 monitor_h-120",
|
||||
float = true,
|
||||
})
|
||||
14
scripts/get_active_workspace.sh
Executable file
14
scripts/get_active_workspace.sh
Executable file
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/sh
|
||||
|
||||
if [ "$(hyprctl activewindow)" = "Invalid" ]; then
|
||||
echo "empty";
|
||||
else
|
||||
hyprctl activewindow -j | jq -r .workspace.name | grep special >> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "special";
|
||||
else
|
||||
echo "normal"
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0;
|
||||
41
scripts/hide.sh
Executable file
41
scripts/hide.sh
Executable file
|
|
@ -0,0 +1,41 @@
|
|||
#!/bin/sh
|
||||
SCRIPT_THIS="$(realpath "$0")"
|
||||
SCRIPT_GETTER="$(dirname "$SCRIPT_THIS")/get_active_workspace.sh"
|
||||
|
||||
RESTORE_TARGET="2"
|
||||
RESTORE_TARGET_SPECIAL="DO_NOT_RESTORE_ANY_SPECIAL_WORKSPACES"
|
||||
|
||||
ACTIVE_WORKSPACE="$("$SCRIPT_GETTER")"
|
||||
if [ "$ACTIVE_WORKSPACE" = "empty" ]; then
|
||||
hyprctl dispatch "hl.dsp.focus({workspace=\"$RESTORE_TARGET\"})"
|
||||
#hyprctl notify 3 6000 000 "hl.dsp.focus({workspace=\"$RESTORE_TARGET\"})"
|
||||
if [ "$RESTORE_TARGET_SPECIAL" != "DO_NOT_RESTORE_ANY_SPECIAL_WORKSPACES" ]; then
|
||||
hyprctl dispatch "hl.dsp.workspace.toggle_special(\"$RESTORE_TARGET_SPECIAL\")"
|
||||
#hyprctl notify 3 6000 000 "hl.dsp.workspace.toggle_special(\"$RESTORE_TARGET_SPECIAL\")"
|
||||
fi
|
||||
|
||||
|
||||
elif [ "$ACTIVE_WORKSPACE" = "special" ]; then
|
||||
SPECIAL_WS_NAME="$(hyprctl activewindow -j | jq -r .workspace.name)"
|
||||
SPECIAL_WS_NAME="${SPECIAL_WS_NAME#"special:"}"
|
||||
UNDERLYING_WS_ID="$(hyprctl -j monitors | jq --argjson monitorid "$(hyprctl activewindow -j | jq -r .monitor)" ".[] | select(.id == \$monitorid) | .activeWorkspace.id")"
|
||||
|
||||
sed -i "s/RESTORE_TARGET=\"$RESTORE_TARGET\"/RESTORE_TARGET=\"$UNDERLYING_WS_ID\"/" "$SCRIPT_THIS"
|
||||
sed -i "s/RESTORE_TARGET_SPECIAL=\"$RESTORE_TARGET_SPECIAL\"/RESTORE_TARGET_SPECIAL=\"$SPECIAL_WS_NAME\"/" "$SCRIPT_THIS"
|
||||
|
||||
hyprctl dispatch "hl.dsp.workspace.toggle_special(\"$SPECIAL_WS_NAME\")"
|
||||
#hyprctl notify 3 6000 000 "hl.dsp.workspace.toggle_special(\"$SPECIAL_WS_NAME\")"
|
||||
hyprctl dispatch "hl.dsp.focus({workspace=\"emptynm\"})"
|
||||
#hyprctl notify 3 6000 000 "hl.dsp.focus({workspace=\"emptynm\"})"
|
||||
|
||||
|
||||
elif [ "$ACTIVE_WORKSPACE" = "normal" ]; then
|
||||
sed -i "s/RESTORE_TARGET=\"$RESTORE_TARGET\"/RESTORE_TARGET=\"$(hyprctl activewindow -j | jq -r .workspace.name)\"/" "$SCRIPT_THIS"
|
||||
sed -i "s/RESTORE_TARGET_SPECIAL=\"$RESTORE_TARGET_SPECIAL\"/RESTORE_TARGET_SPECIAL=\"DO_NOT_RESTORE_ANY_SPECIAL_WORKSPACES\"/" "$SCRIPT_THIS"
|
||||
hyprctl dispatch "hl.dsp.focus({workspace=\"emptynm\"})"
|
||||
#hyprctl notify 3 6000 000 "hl.dsp.focus({workspace=\"emptynm\"})"
|
||||
|
||||
else
|
||||
hyprctl notify 3 1000 000 "Error: Unknown workspace state \"$ACTIVE_WORKSPACE\".";
|
||||
exit 1;
|
||||
fi
|
||||
6
scripts/hyprpanel_bluetooth.desktop
Executable file
6
scripts/hyprpanel_bluetooth.desktop
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Bluetooth Settings
|
||||
Comment=Open Hyprpanel's Bluetooth menu
|
||||
Exec=hyprpanel t bluetoothmenu
|
||||
Terminal=false
|
||||
6
scripts/hyprpanel_settings.desktop
Executable file
6
scripts/hyprpanel_settings.desktop
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Hyprpanel Settings
|
||||
Comment=Open Hyprpanel's Settings menu
|
||||
Exec=hyprpanel t settings-dialog
|
||||
Terminal=false
|
||||
6
scripts/hyprpanel_wifi.desktop
Executable file
6
scripts/hyprpanel_wifi.desktop
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=WiFi Settings
|
||||
Comment=Open Hyprpanel's WiFi menu
|
||||
Exec=hyprpanel t networkmenu
|
||||
Terminal=false
|
||||
31
scripts/install.sh
Executable file
31
scripts/install.sh
Executable file
|
|
@ -0,0 +1,31 @@
|
|||
#!/bin/sh
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
PERMS="555"
|
||||
elif [ "$1" = "--editable" ] || [ "$1" = "-e" ]; then
|
||||
PERMS="777"
|
||||
else
|
||||
echo "Usage: $0 [--editable|-e]";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if [ -z "$HOME" ]; then
|
||||
echo "Script unusable by homeless users. ;-P";
|
||||
echo "Set your \$HOME envar (or have your shell do it for you, like on every normal distro) and try again.";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
DIR="$HOME/.config/hypr/scripts"
|
||||
|
||||
if [ "$(realpath "$DIR/$(basename "$0")")" != "$(realpath "$0")" ]; then
|
||||
echo "This script must exist inside of $DIR";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
echo "Installing...";
|
||||
ln -vrs "$DIR"/*.desktop "$HOME/.local/share/applications/"
|
||||
ln -vrs "$HOME/.config/hypr/hyprpanel" "$HOME/.config/"
|
||||
chmod --verbose $PERMS "$DIR"/*.sh
|
||||
xdg-mime default open_folder.desktop inode/directory
|
||||
echo "Done!";
|
||||
exit 0;
|
||||
94
scripts/keyboard.sh
Executable file
94
scripts/keyboard.sh
Executable file
|
|
@ -0,0 +1,94 @@
|
|||
#!/bin/bash
|
||||
|
||||
IS_ACTIVE="false"
|
||||
SCRIPT_LOCATION="$(realpath "$0")"
|
||||
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
if [ $IS_ACTIVE = "true" ]; then
|
||||
"$SCRIPT_LOCATION" hide;
|
||||
else
|
||||
"$SCRIPT_LOCATION" show;
|
||||
fi
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
|
||||
if [ "$1" == "--no-rotate" ]; then
|
||||
if [ $IS_ACTIVE = "true" ]; then
|
||||
"$SCRIPT_LOCATION" hide --no-rotate;
|
||||
else
|
||||
"$SCRIPT_LOCATION" show --no-rotate;
|
||||
fi
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
if [ "$1" == "hide" ]; then
|
||||
killall -s SIGUSR1 wvkbd-deskintl;
|
||||
"$SCRIPT_LOCATION" reset;
|
||||
if [ -z "$2" ]; then
|
||||
hyprctl keyword monitor eDP-1,preferred,0x0,1,transform,0
|
||||
hyprctl keyword input:tablet:transform 0
|
||||
hyprctl keyword input:touchdevice:transform 0
|
||||
exit 0;
|
||||
elif [ "$2" == "--no-rotate" ]; then
|
||||
exit 0;
|
||||
else
|
||||
echo "Unknown flag: $2";
|
||||
fi
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if [ "$1" == "show" ]; then
|
||||
killall -s SIGUSR2 wvkbd-deskintl;
|
||||
sed -i "s/IS_ACTIVE=\"false\"/IS_ACTIVE=\"true\"/" "$SCRIPT_LOCATION";
|
||||
if [ -z "$2" ]; then
|
||||
hyprctl keyword monitor eDP-1,preferred,0x0,1,transform,1
|
||||
hyprctl keyword input:tablet:transform 1
|
||||
hyprctl keyword input:touchdevice:transform 1
|
||||
exit 0;
|
||||
elif [ "$2" == "--no-rotate" ]; then
|
||||
exit 0;
|
||||
else
|
||||
echo "Unknown flag: $2";
|
||||
fi
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if [ "$1" == "json" ]; then
|
||||
if [ $IS_ACTIVE = "true" ]; then
|
||||
STATE="active"
|
||||
ACTION="Hide"
|
||||
ACTION_PL="Ukryj"
|
||||
else
|
||||
STATE="hidden"
|
||||
ACTION="Show"
|
||||
ACTION_PL="Pokaż"
|
||||
fi
|
||||
echo "{\"state\":\"${STATE}\",\"alt\":\"${ACTION}\",\"action\":{\"en\":\"${ACTION}\",\"pl\":\"${ACTION_PL}\"}}";
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
if [ "$1" == "status" ]; then
|
||||
if [ $IS_ACTIVE = "true" ]; then
|
||||
echo "active";
|
||||
else
|
||||
echo "hidden";
|
||||
fi
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
if [ "$1" == "reset" ]; then
|
||||
sed -i "s/IS_ACTIVE=\"true\"/IS_ACTIVE=\"false\"/" "$SCRIPT_LOCATION";
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
|
||||
if [ "$1" == "help" ]; then
|
||||
echo "params: --no-rotate|hide [--no-rotate]|show [--no-rotate]|json|status|reset|help";
|
||||
echo "no param: toggle";
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
echo "Unknown command \"${SCRIPT_LOCATION} $1\", use \"${SCRIPT_LOCATION} help\" for help.";
|
||||
exit 1;
|
||||
9
scripts/open_folder.desktop
Executable file
9
scripts/open_folder.desktop
Executable file
|
|
@ -0,0 +1,9 @@
|
|||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Terminal Folder Opener
|
||||
Comment=Open a terminal in the selected folder
|
||||
Exec=/home/guzio/.config/hypr/scripts/terminal.sh %f
|
||||
MimeType=inode/directory
|
||||
Terminal=false
|
||||
|
||||
# Please replace /home/guzio/ with your actual $HOME path!!!
|
||||
42
scripts/rootedinit.sh
Executable file
42
scripts/rootedinit.sh
Executable file
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/sh
|
||||
# from volume-root.sh
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
DIR="$HOME/.config/hypr/scripts"
|
||||
SELF="$(realpath "$DIR/$(basename "$0")")"
|
||||
|
||||
if [ "$SELF" != "$(realpath "$0")" ]; then
|
||||
echo "This script must exist inside of $DIR";
|
||||
exit 1;
|
||||
fi
|
||||
else
|
||||
if [ "root" != "$USER" ]; then
|
||||
echo "Only root are allowed to arbitrarily specify the directory.";
|
||||
exit 1;
|
||||
fi
|
||||
DIR=$1
|
||||
SELF="Something went horribly wrong! You were assumed to be root in one check, but non-root by the next one.";
|
||||
fi
|
||||
|
||||
if [ "root" != "$USER" ]; then
|
||||
|
||||
if [ "$SELF" != "$(realpath "$0")" ]; then
|
||||
echo "This script must exist inside of $DIR";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
exec sudo "$SELF" "$DIR";
|
||||
echo "NOTE: You should never see this message!"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
# custom logic for rootedinit.sh
|
||||
USRDIR="$DIR/../../.."
|
||||
iptables -P FORWARD ACCEPT #Or Waydroid won't have internet access; iptables-save didn't work for some reason
|
||||
mount -Bv "$USRDIR/Obrazy" "$USRDIR/.local/share/waydroid/data/media/0/Pictures"
|
||||
mount -Bv "$USRDIR/Obrazy" "$USRDIR/.local/share/waydroid/data/media/0/DCIM"
|
||||
mount -Bv "$USRDIR/Dokumenty" "$USRDIR/.local/share/waydroid/data/media/0/Documents"
|
||||
mount -Bv "$USRDIR/Pobrane" "$USRDIR/.local/share/waydroid/data/media/0/Download"
|
||||
mount -Bv "$USRDIR/.config" "$USRDIR/.local/share/waydroid/data/media/0/Source OS/conf"
|
||||
mount -Bv "$USRDIR/.var/app" "$USRDIR/.local/share/waydroid/data/media/0/Source OS/flatpak"
|
||||
swapon /dev/nvme0n1p3 #Unrelated to Waydroid, but this is probably the least awkward place to lazily put it
|
||||
37
scripts/rotate.sh
Executable file
37
scripts/rotate.sh
Executable file
|
|
@ -0,0 +1,37 @@
|
|||
#!/bin/bash
|
||||
|
||||
ORIENTATION="$(head -n1 <(monitor-sensor --accel | grep --line-buffered -Eo "normal|left-up|bottom-up|right-up"))"
|
||||
|
||||
hyprctl activewindow|grep Waydroid >> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
"$(dirname "$(realpath "$0")")/waydroid-root.sh" "rotate-$ORIENTATION"
|
||||
ORIENTATION="normal"
|
||||
fi
|
||||
|
||||
if [[ "$ORIENTATION" == "normal" ]]; then
|
||||
hyprctl keyword monitor eDP-1,preferred,0x0,1,transform,0
|
||||
hyprctl keyword input:tablet:transform 0
|
||||
hyprctl keyword input:touchdevice:transform 0
|
||||
elif [[ "$ORIENTATION" == "left-up" ]]; then
|
||||
hyprctl keyword monitor eDP-1,preferred,0x0,1,transform,1
|
||||
hyprctl keyword input:tablet:transform 1
|
||||
hyprctl keyword input:touchdevice:transform 1
|
||||
elif [[ "$ORIENTATION" == "bottom-up" ]]; then
|
||||
hyprctl keyword monitor eDP-1,preferred,0x0,1,transform,2
|
||||
hyprctl keyword input:tablet:transform 2
|
||||
hyprctl keyword input:touchdevice:transform 2
|
||||
elif [[ "$ORIENTATION" == "right-up" ]]; then
|
||||
hyprctl keyword monitor eDP-1,preferred,0x0,1,transform,3
|
||||
hyprctl keyword input:tablet:transform 3
|
||||
hyprctl keyword input:touchdevice:transform 3
|
||||
else
|
||||
hyprctl notify 3 1000 000 "Unknown orientation: $ORIENTATION. Resetting to normal."
|
||||
hyprctl keyword monitor eDP-1,preferred,0x0,1,transform,0
|
||||
hyprctl keyword input:tablet:transform 0
|
||||
hyprctl keyword input:touchdevice:transform 0
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
killall monitor-sensor
|
||||
|
||||
exit 0;
|
||||
28
scripts/screenshot.sh
Executable file
28
scripts/screenshot.sh
Executable file
|
|
@ -0,0 +1,28 @@
|
|||
#!/bin/sh
|
||||
|
||||
KILLED=false
|
||||
if pgrep satty; then
|
||||
killall satty
|
||||
KILLED=true
|
||||
fi
|
||||
|
||||
if [ -z $1 ]; then
|
||||
:
|
||||
elif [ $1 = "--button" ]; then
|
||||
if [ $KILLED = "true" ]; then
|
||||
exit 0;
|
||||
else
|
||||
set -- "$2";
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
grim -w "$(hyprctl activewindow -j | jq -r .address)" - | satty --filename -
|
||||
elif [ "$1" = "--full" ]; then
|
||||
grim - | satty --filename -
|
||||
else
|
||||
echo "Usage: $0 [--button] [--full]";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
exit 0;
|
||||
8
scripts/stop_waydroid.desktop
Executable file
8
scripts/stop_waydroid.desktop
Executable file
|
|
@ -0,0 +1,8 @@
|
|||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Kill WayDroid Session
|
||||
Comment=Kills a WayDroid Session
|
||||
Exec=waydroid session stop
|
||||
Terminal=true
|
||||
|
||||
# Please replace /home/guzio/ with your actual $HOME path!!!
|
||||
8
scripts/terminal.sh
Executable file
8
scripts/terminal.sh
Executable file
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/sh
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
konsole --new-tab --workdir $HOME
|
||||
exit 0;
|
||||
fi
|
||||
konsole --new-tab --workdir $1
|
||||
hyprctl dispatch "hl.dsp.workspace.toggle_special(\"terminal\")"
|
||||
22
scripts/toggle_hyprshell.sh
Executable file
22
scripts/toggle_hyprshell.sh
Executable file
|
|
@ -0,0 +1,22 @@
|
|||
#!/bin/sh
|
||||
|
||||
SCRIPTDIR="$(dirname "$(realpath "$0")")"
|
||||
|
||||
if hyprctl layers|grep hyprshell; then
|
||||
wtype -k escape
|
||||
else
|
||||
hyprshell socat '"OpenOverview"'
|
||||
|
||||
hyprctl activewindow|grep Waydroid >> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
hyprctl dispatch "hl.dsp.workspace.toggle_special(\"waydroid\")"
|
||||
fi
|
||||
|
||||
if [ "$1" = "-k" ] && [ "$("$SCRIPTDIR"/keyboard.sh status)" != "active" ]; then
|
||||
"$SCRIPTDIR"/keyboard.sh show --no-rotate
|
||||
while hyprctl layers|grep hyprshell; do
|
||||
sleep 0.1;
|
||||
done
|
||||
"$SCRIPTDIR"/keyboard.sh hide --no-rotate
|
||||
fi
|
||||
fi
|
||||
48
scripts/volume-core.sh
Executable file
48
scripts/volume-core.sh
Executable file
|
|
@ -0,0 +1,48 @@
|
|||
#!/bin/sh
|
||||
|
||||
SCRIPT_THIS="$(realpath "$0")"
|
||||
SCRIPT_ROOT="$(dirname "$SCRIPT_THIS")/volume-root.sh"
|
||||
SCRIPT_ROOT_WD="$(dirname "$SCRIPT_THIS")/waydroid-root.sh"
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
:
|
||||
elif [ "$1" = "115" ]; then
|
||||
# „Always control volume on the Linux side” flow commented out and waiting for a better day, because waydroid-root.sh reset-volume is broken (see waydroid-root.sh for details)
|
||||
#hyprctl activewindow|grep Waydroid >> /dev/null
|
||||
#if [ $? -eq 0 ]; then
|
||||
# "$SCRIPT_ROOT_WD" reset-volume
|
||||
#fi
|
||||
#hyprpanel vol +5
|
||||
|
||||
# Shitty „hand controls to Android when Waydroid is in focus” flow that I wish I could forgo
|
||||
hyprctl activewindow|grep Waydroid >> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
wpctl set-volume @DEFAULT_AUDIO_SINK@ 100%
|
||||
else
|
||||
wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||
fi
|
||||
elif [ "$1" = "114" ]; then
|
||||
# „Always control volume on the Linux side” flow commented out and waiting for a better day, because waydroid-root.sh reset-volume is broken (see waydroid-root.sh for details)
|
||||
#hyprctl activewindow|grep Waydroid >> /dev/null
|
||||
#if [ $? -eq 0 ]; then
|
||||
# "$SCRIPT_ROOT_WD" reset-volume
|
||||
#fi
|
||||
#hyprpanel vol -5
|
||||
|
||||
# Shitty „hand controls to Android when Waydroid is in focus” flow that I wish I could forgo
|
||||
hyprctl activewindow|grep Waydroid >> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
wpctl set-volume @DEFAULT_AUDIO_SINK@ 100%
|
||||
else
|
||||
wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
fi
|
||||
elif [ "$1" = "--start-daemon" ]; then
|
||||
while true; do
|
||||
"$SCRIPT_ROOT"|xargs "$SCRIPT_THIS"
|
||||
done
|
||||
elif [ "$1" = "--quit-daemon" ]; then
|
||||
killall "$(basename "$SCRIPT_THIS")";
|
||||
else
|
||||
echo "Unknown flag: $1";
|
||||
exit 1;
|
||||
fi
|
||||
33
scripts/volume-root.sh
Executable file
33
scripts/volume-root.sh
Executable file
|
|
@ -0,0 +1,33 @@
|
|||
#!/bin/sh
|
||||
# I forgot that dirname exists while writing this.
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
DIR="$HOME/.config/hypr/scripts"
|
||||
SELF="$(realpath "$DIR/$(basename "$0")")"
|
||||
|
||||
if [ "$SELF" != "$(realpath "$0")" ]; then
|
||||
echo "This script must exist inside of $DIR";
|
||||
exit 1;
|
||||
fi
|
||||
else
|
||||
if [ "root" != "$USER" ]; then
|
||||
echo "Only root are allowed to arbitrarily specify the directory.";
|
||||
exit 1;
|
||||
fi
|
||||
DIR=$1
|
||||
SELF="Something went horribly wrong! You were assumed to be root in one check, but non-root by the next one.";
|
||||
fi
|
||||
|
||||
if [ "root" != "$USER" ]; then
|
||||
|
||||
if [ "$SELF" != "$(realpath "$0")" ]; then
|
||||
echo "This script must exist inside of $DIR";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
exec sudo "$SELF" "$DIR";
|
||||
echo "NOTE: You should never see this message!"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
"$DIR/volume-bin" | grep -Eo "115 press|114 press"
|
||||
87
scripts/waydroid-root.sh
Executable file
87
scripts/waydroid-root.sh
Executable file
|
|
@ -0,0 +1,87 @@
|
|||
#!/bin/sh
|
||||
|
||||
# custom logic for waydroid-root.sh [PART 1]
|
||||
if [ -z "$1" ]; then
|
||||
echo "Subcommand needed, use \"${SCRIPT_LOCATION} help\" for help.";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if [ "$1" == "help" ]; then
|
||||
echo "params: rotate-normal|rotate-left-up|rotate-right-up|rotate-bottom-up|reset-volume|help";
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
|
||||
# from volume-root.sh (modified to allow an extra param from the user)
|
||||
if [ -z "$2" ]; then
|
||||
DIR="$HOME/.config/hypr/scripts"
|
||||
SELF="$(realpath "$DIR/$(basename "$0")")"
|
||||
|
||||
if [ "$SELF" != "$(realpath "$0")" ]; then
|
||||
echo "This script must exist inside of $DIR";
|
||||
exit 1;
|
||||
fi
|
||||
else
|
||||
if [ "root" != "$USER" ]; then
|
||||
echo "Only root are allowed to arbitrarily specify the directory.";
|
||||
exit 1;
|
||||
fi
|
||||
DIR=$2
|
||||
SELF="Something went horribly wrong! You were assumed to be root in one check, but non-root by the next one.";
|
||||
fi
|
||||
|
||||
if [ "root" != "$USER" ]; then
|
||||
|
||||
if [ "$SELF" != "$(realpath "$0")" ]; then
|
||||
echo "This script must exist inside of $DIR";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
exec sudo "$SELF" "$1" "$DIR";
|
||||
echo "NOTE: You should never see this message!"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
# custom logic for waydroid-root.sh [PART 2]
|
||||
|
||||
if [ "$1" == "rotate-normal" ]; then
|
||||
waydroid shell settings put system user_rotation 0
|
||||
exit;
|
||||
fi
|
||||
|
||||
if [ "$1" == "rotate-right-up" ]; then
|
||||
waydroid shell settings put system user_rotation 1
|
||||
exit;
|
||||
fi
|
||||
|
||||
if [ "$1" == "rotate-bottom-up" ]; then
|
||||
waydroid shell settings put system user_rotation 2
|
||||
exit;
|
||||
fi
|
||||
|
||||
if [ "$1" == "rotate-left-up" ]; then
|
||||
waydroid shell settings put system user_rotation 3
|
||||
exit;
|
||||
fi
|
||||
|
||||
# Commented-out because it doesn't work. I can QUERY those values just fine, and the returned numbers correspond to what I put in my setting on the Android side - but when I try to SET them, nothing happens. I have no idea why, but it is what it is.
|
||||
#if [ "$1" == "reset-volume" ]; then
|
||||
# # These are the „everything is maxed out” values. Don't ask me why are they so random; I didn't make Android.
|
||||
# waydroid shell settings put system volume_alarm 6
|
||||
# waydroid shell settings put system volume_alarm_speaker 7
|
||||
# waydroid shell settings put system volume_bluetooth_sco 7
|
||||
# waydroid shell settings put system volume_music 5
|
||||
# waydroid shell settings put system volume_music_speaker 15
|
||||
# waydroid shell settings put system volume_music_usb_headset 3
|
||||
# waydroid shell settings put system volume_notification 5
|
||||
# waydroid shell settings put system volume_notification_speaker 7
|
||||
# waydroid shell settings put system volume_ring 5
|
||||
# waydroid shell settings put system volume_ring_speaker 7
|
||||
# waydroid shell settings put system volume_system 7
|
||||
# waydroid shell settings put system volume_voice 4
|
||||
# waydroid shell settings put system volume_voice_speaker 15
|
||||
# exit 0;
|
||||
#fi
|
||||
|
||||
echo "Unknown command \"${SCRIPT_LOCATION} $1\", use \"${SCRIPT_LOCATION} help\" for help.";
|
||||
exit 1;
|
||||
6
scripts/waydroid.sh
Executable file
6
scripts/waydroid.sh
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
SCRIPTDIR="$(dirname "$(realpath "$0")")"
|
||||
|
||||
/usr/bin/sshd -f "$HOME/.ssh/wd-local/sshd_config"
|
||||
|
||||
waydroid show-full-ui & sleep 60;"$SCRIPTDIR/rootedinit.sh"
|
||||
BIN
wallpaper-test/wall3.png
Normal file
BIN
wallpaper-test/wall3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 110 KiB |
BIN
wallpaper-test/wall4.png
Normal file
BIN
wallpaper-test/wall4.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
1
wayle/config.toml
Normal file
1
wayle/config.toml
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Wayle configuration file
|
||||
191
wayle/runtime.toml
Normal file
191
wayle/runtime.toml
Normal file
|
|
@ -0,0 +1,191 @@
|
|||
[bar]
|
||||
bg = "transparent"
|
||||
button-variant = "basic"
|
||||
button-label-weight = "bold"
|
||||
button-rounding = "full"
|
||||
button-border-width = 2
|
||||
dropdown-freeze-label = false
|
||||
|
||||
[styling]
|
||||
scale = 1.0
|
||||
rounding = "full"
|
||||
|
||||
[styling.palette]
|
||||
bg = "#000000"
|
||||
surface = "#000000"
|
||||
elevated = "#000000"
|
||||
fg = "#e6ff10"
|
||||
fg-muted = "#c6bb05"
|
||||
primary = "#e6ff10"
|
||||
red = "#ff0000"
|
||||
yellow = "#e6ff10"
|
||||
green = "#00ff00"
|
||||
blue = "#00ffff"
|
||||
|
||||
[modules.battery]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.bluetooth]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.cava]
|
||||
button-bg-color = "bg-base"
|
||||
border-show = true
|
||||
|
||||
[modules.clock]
|
||||
border-show = true
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.cpu]
|
||||
border-show = true
|
||||
border-color = "fg-default"
|
||||
icon-bg-color = "fg-default"
|
||||
label-color = "fg-default"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.dashboard]
|
||||
border-show = true
|
||||
|
||||
[modules.hyprland-workspaces]
|
||||
container-bg-color = "bg-base"
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
|
||||
[modules.hyprsunset]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.idle-inhibit]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.keybind-mode]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.keyboard-input]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.media]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.microphone]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.network]
|
||||
border-show = true
|
||||
icon-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.netstat]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.notification]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.power]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "bg-base"
|
||||
icon-bg-color = "accent"
|
||||
|
||||
[modules.ram]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.storage]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
label-max-length = 435
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.systray]
|
||||
border-show = true
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.volume]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.weather]
|
||||
border-show = true
|
||||
icon-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.window-title]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[modules.world-clock]
|
||||
border-show = true
|
||||
border-color = "accent"
|
||||
icon-color = "accent"
|
||||
icon-bg-color = "accent"
|
||||
label-color = "accent"
|
||||
button-bg-color = "bg-base"
|
||||
|
||||
[wallpaper]
|
||||
engine-enabled = false
|
||||
transition-type = "fade"
|
||||
cycling-mode = "shuffle"
|
||||
1
wayle/schema.json
Normal file
1
wayle/schema.json
Normal file
File diff suppressed because one or more lines are too long
1
wayle/themes/schema.json
Normal file
1
wayle/themes/schema.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"Palette","description":"Ten-color palette for CSS generation.","type":"object","properties":{"bg":{"description":"Base background color (darkest).","type":"string"},"surface":{"description":"Card and sidebar background.","type":"string"},"elevated":{"description":"Raised element background.","type":"string"},"fg":{"description":"Primary text color.","type":"string"},"fg_muted":{"description":"Secondary text color.","type":"string"},"primary":{"description":"Accent color for interactive elements.","type":"string"},"red":{"description":"Red palette color.","type":"string"},"yellow":{"description":"Yellow palette color.","type":"string"},"green":{"description":"Green palette color.","type":"string"},"blue":{"description":"Blue palette color.","type":"string"}},"required":["bg","surface","elevated","fg","fg_muted","primary","red","yellow","green","blue"],"$id":"wayle-theme-0.2.3"}
|
||||
10
wayle/tombi.toml
Normal file
10
wayle/tombi.toml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
[schema]
|
||||
enabled = true
|
||||
|
||||
[[schemas]]
|
||||
path = "./schema.json"
|
||||
include = ["config.toml", "runtime.toml"]
|
||||
|
||||
[[schemas]]
|
||||
path = "./themes/schema.json"
|
||||
include = ["themes/*.toml"]
|
||||
Loading…
Add table
Add a link
Reference in a new issue