mirror of
https://github.com/arthur-pbty/arch-custom-iso.git
synced 2026-08-01 20:28:05 +02:00
add waybar
This commit is contained in:
@@ -0,0 +1,354 @@
|
|||||||
|
-- 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 = "ghostty"
|
||||||
|
local fileManager = "yazi"
|
||||||
|
local menu = "rofi"
|
||||||
|
|
||||||
|
|
||||||
|
-------------------
|
||||||
|
---- 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("hyprpaper")
|
||||||
|
hl.exec_cmd("waybar")
|
||||||
|
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 = "fr",
|
||||||
|
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 .. " + Return", hl.dsp.exec_cmd(terminal))
|
||||||
|
local closeWindowBind = hl.bind(mainMod .. " + W", 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 .. " + F", hl.dsp.exec_cmd(fileManager))
|
||||||
|
hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }))
|
||||||
|
hl.bind(mainMod .. " + SPACE", 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,
|
||||||
|
})
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
print_status() {
|
||||||
|
time=$(date +"%H:%M")
|
||||||
|
date=$(date +"%d/%m")
|
||||||
|
|
||||||
|
# tooltip complet
|
||||||
|
full_date=$(date +"%A %d %B %Y %H:%M:%S")
|
||||||
|
calendar=$(cal -m)
|
||||||
|
esc_calendar=$(sed 's/&/&/g; s/</</g; s/>/>/g' <<< "$calendar")
|
||||||
|
|
||||||
|
text="$time
|
||||||
|
$date"
|
||||||
|
|
||||||
|
tooltip="$full_date
|
||||||
|
|
||||||
|
$esc_calendar"
|
||||||
|
|
||||||
|
jq -nc \
|
||||||
|
--arg text "$text" \
|
||||||
|
--arg tooltip "$tooltip" \
|
||||||
|
'{ text: $text, tooltip: $tooltip }'
|
||||||
|
}
|
||||||
|
|
||||||
|
print_status
|
||||||
|
|
||||||
|
last=""
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
current=$(date +"%H%M%S%Y%m%d")
|
||||||
|
|
||||||
|
if [[ "$current" != "$last" ]]; then
|
||||||
|
print_status
|
||||||
|
last="$current"
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
@@ -0,0 +1,147 @@
|
|||||||
|
{
|
||||||
|
"reload_style_on_change": true,
|
||||||
|
"layer": "top",
|
||||||
|
"position": "left",
|
||||||
|
"spacing": 0,
|
||||||
|
"width": 35,
|
||||||
|
"modules-left": ["custom/clock", "custom/weather", "cpu", "memory", "custom/media"],
|
||||||
|
"modules-center": ["hyprland/workspaces"],
|
||||||
|
"modules-right": ["group/tray-expander", "pulseaudio", "bluetooth", "network", "battery"],
|
||||||
|
"hyprland/workspaces": {
|
||||||
|
"on-click": "activate",
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"default": "",
|
||||||
|
"1": "1",
|
||||||
|
"2": "2",
|
||||||
|
"3": "3",
|
||||||
|
"4": "4",
|
||||||
|
"5": "5",
|
||||||
|
"6": "6",
|
||||||
|
"7": "7",
|
||||||
|
"8": "8",
|
||||||
|
"9": "9",
|
||||||
|
"10": "0",
|
||||||
|
"active": ""
|
||||||
|
},
|
||||||
|
"persistent-workspaces": {
|
||||||
|
"1": [],
|
||||||
|
"2": [],
|
||||||
|
"3": [],
|
||||||
|
"4": [],
|
||||||
|
"5": [],
|
||||||
|
"6": [],
|
||||||
|
"7": [],
|
||||||
|
"8": [],
|
||||||
|
"9": [],
|
||||||
|
"10": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"interval": 2,
|
||||||
|
"format": "{icon} ",
|
||||||
|
"format-icons": ["", "", "", "", "", "", "", ""],
|
||||||
|
"on-click": "btop"
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"interval": 2,
|
||||||
|
"format": "{icon} ",
|
||||||
|
"format-icons": ["", "", "", "", "", "", "", ""],
|
||||||
|
"on-click": "btop"
|
||||||
|
},
|
||||||
|
"custom/clock": {
|
||||||
|
"exec": "home/arthur/.config/waybar/clock.sh",
|
||||||
|
"return-type": "json",
|
||||||
|
"on-click": "omarchy-launch-floating-terminal-with-presentation omarchy-tz-select",
|
||||||
|
"tooltip": true
|
||||||
|
},
|
||||||
|
"custom/weather": {
|
||||||
|
"exec": "home/arthur/.config/waybar/weather.sh",
|
||||||
|
"return-type": "json",
|
||||||
|
"interval": 60,
|
||||||
|
"tooltip": false,
|
||||||
|
"on-click": "notify-send -u low \"$(omarchy-weather-status)\""
|
||||||
|
},
|
||||||
|
"custom/media": {
|
||||||
|
"exec": "home/arthur/.config/waybar/media.sh",
|
||||||
|
"return-type": "json",
|
||||||
|
"interval": 1,
|
||||||
|
"on-click": "home/arthur/.config/waybar/media_click.sh",
|
||||||
|
"on-click-right": "playerctl -p subtui next",
|
||||||
|
"on-click-middle": "playerctl -p subtui previous",
|
||||||
|
"tooltip": true
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"format-icons": ["", "", "", "", ""],
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-wifi": "{icon}",
|
||||||
|
"format-ethernet": "",
|
||||||
|
"format-disconnected": "",
|
||||||
|
"tooltip-format-wifi": "{essid} ({frequency} GHz)",
|
||||||
|
"tooltip-format-ethernet": "Connected",
|
||||||
|
"tooltip-format-disconnected": "Disconnected",
|
||||||
|
"interval": 3,
|
||||||
|
"spacing": 1,
|
||||||
|
"on-click": "impala"
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"format": "{capacity}% {icon}",
|
||||||
|
"format-discharging": "{icon}",
|
||||||
|
"format-charging": "{icon}",
|
||||||
|
"format-plugged": "",
|
||||||
|
"format-icons": {
|
||||||
|
"charging": ["", "", "", "", "", "", "", "", "", ""],
|
||||||
|
"default": ["", "", "", "", "", "", "", "", "", ""]
|
||||||
|
},
|
||||||
|
"format-full": "",
|
||||||
|
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
|
||||||
|
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
|
||||||
|
"interval": 5,
|
||||||
|
"states": {
|
||||||
|
"warning": 20,
|
||||||
|
"critical": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bluetooth": {
|
||||||
|
"format": "",
|
||||||
|
"format-off": "",
|
||||||
|
"format-disabled": "",
|
||||||
|
"format-connected": "",
|
||||||
|
"format-no-controller": "",
|
||||||
|
"tooltip-format": "Devices connected: {num_connections}",
|
||||||
|
"on-click": "bluetui"
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"on-click": "wiremix",
|
||||||
|
"on-click-right": "pamixer -t",
|
||||||
|
"tooltip-format": "Playing at {volume}%",
|
||||||
|
"scroll-step": 5,
|
||||||
|
"format-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"headset": "",
|
||||||
|
"default": ["", "", ""]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"group/tray-expander": {
|
||||||
|
"orientation": "inherit",
|
||||||
|
"drawer": {
|
||||||
|
"transition-duration": 600,
|
||||||
|
"children-class": "tray-group-item"
|
||||||
|
},
|
||||||
|
"modules": ["custom/expand-icon", "tray"]
|
||||||
|
},
|
||||||
|
"custom/expand-icon": {
|
||||||
|
"format": "",
|
||||||
|
"tooltip": false,
|
||||||
|
"on-scroll-up": "",
|
||||||
|
"on-scroll-down": "",
|
||||||
|
"on-scroll-left": "",
|
||||||
|
"on-scroll-right": ""
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 12,
|
||||||
|
"spacing": 17
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
PLAYER="subtui"
|
||||||
|
|
||||||
|
# Vérifie si Subtui est lancé
|
||||||
|
if ! playerctl -l 2>/dev/null | grep -q "^${PLAYER}$"; then
|
||||||
|
echo '{"text":"","tooltip":"Subtui non lancé"}'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Métadonnées
|
||||||
|
title=$(playerctl -p "$PLAYER" metadata title 2>/dev/null)
|
||||||
|
artist=$(playerctl -p "$PLAYER" metadata artist 2>/dev/null)
|
||||||
|
album=$(playerctl -p "$PLAYER" metadata album 2>/dev/null)
|
||||||
|
status=$(playerctl -p "$PLAYER" status 2>/dev/null)
|
||||||
|
|
||||||
|
# Valeurs par défaut
|
||||||
|
[ -z "$title" ] && title="Titre inconnu"
|
||||||
|
[ -z "$artist" ] && artist="Artiste inconnu"
|
||||||
|
[ -z "$album" ] && album="Album inconnu"
|
||||||
|
|
||||||
|
# Position actuelle (secondes)
|
||||||
|
position=$(playerctl -p "$PLAYER" position 2>/dev/null)
|
||||||
|
[ -z "$position" ] && position=0
|
||||||
|
|
||||||
|
# Durée totale (microsecondes)
|
||||||
|
length=$(playerctl -p "$PLAYER" metadata mpris:length 2>/dev/null)
|
||||||
|
[ -z "$length" ] && length=0
|
||||||
|
|
||||||
|
# Conversion sûre
|
||||||
|
position_sec=$(awk -v p="$position" 'BEGIN { printf("%d", p+0.5) }')
|
||||||
|
length_sec=$((length / 1000000))
|
||||||
|
|
||||||
|
# Format temps
|
||||||
|
elapsed=$(printf "%02d:%02d" $((position_sec/60)) $((position_sec%60)))
|
||||||
|
|
||||||
|
if [ "$length_sec" -gt 0 ]; then
|
||||||
|
duration=$(printf "%02d:%02d" $((length_sec/60)) $((length_sec%60)))
|
||||||
|
else
|
||||||
|
duration="--:--"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Icône
|
||||||
|
if [ "$status" = "Playing" ]; then
|
||||||
|
icon=""
|
||||||
|
else
|
||||||
|
icon=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Échapper les guillemets pour JSON
|
||||||
|
title=${title//\"/\\\"}
|
||||||
|
artist=${artist//\"/\\\"}
|
||||||
|
album=${album//\"/\\\"}
|
||||||
|
|
||||||
|
# Tooltip
|
||||||
|
tooltip="$artist
|
||||||
|
$title
|
||||||
|
|
||||||
|
Album : $album
|
||||||
|
|
||||||
|
$elapsed / $duration
|
||||||
|
|
||||||
|
Clic gauche : Lecture/Pause
|
||||||
|
Clic droit : Suivant
|
||||||
|
Clic milieu : Précédent"
|
||||||
|
|
||||||
|
# Convertir les retours à la ligne pour JSON
|
||||||
|
tooltip=$(echo "$tooltip" | sed ':a;N;$!ba;s/\n/\\n/g')
|
||||||
|
|
||||||
|
# JSON final
|
||||||
|
printf '{"text":"%s","tooltip":"%s"}\n' "$icon" "$tooltip"
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
PLAYER="subtui"
|
||||||
|
|
||||||
|
if playerctl -l 2>/dev/null | grep -q "^${PLAYER}$"; then
|
||||||
|
playerctl -p "$PLAYER" play-pause
|
||||||
|
else
|
||||||
|
ghostty -e subtui &
|
||||||
|
fi
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
* {
|
||||||
|
background-color: black;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
min-height: 0;
|
||||||
|
font-family: 'JetBrainsMono Nerd Font';
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-left {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-right {
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
all: initial;
|
||||||
|
padding: 6px 0;
|
||||||
|
margin: 1.5px 0;
|
||||||
|
min-height: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.empty {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cpu,
|
||||||
|
#memory,
|
||||||
|
#custom-media,
|
||||||
|
#battery,
|
||||||
|
#pulseaudio,
|
||||||
|
#custom-update {
|
||||||
|
min-height: 12px;
|
||||||
|
margin: 7.5px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#bluetooth {
|
||||||
|
margin-top: 17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
margin-top: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-expand-icon {
|
||||||
|
margin-top: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip {
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-update {
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-clock {
|
||||||
|
margin-bottom: 8.75px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-weather {
|
||||||
|
margin-bottom: 7.5px;
|
||||||
|
margin-top: 7.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-weather.unavailable {
|
||||||
|
min-height: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-screenrecording-indicator,
|
||||||
|
#custom-idle-indicator,
|
||||||
|
#custom-notification-silencing-indicator {
|
||||||
|
min-height: 12px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
margin-top: 0;
|
||||||
|
font-size: 10px;
|
||||||
|
padding-right: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-screenrecording-indicator.active {
|
||||||
|
color: #a55555;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-idle-indicator.active,
|
||||||
|
#custom-notification-silencing-indicator.active {
|
||||||
|
color: #a55555;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-voxtype {
|
||||||
|
min-height: 12px;
|
||||||
|
margin: 0 0 7.5px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-voxtype.recording {
|
||||||
|
color: #a55555;
|
||||||
|
}
|
||||||
Executable
+10
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
icon=$(omarchy-weather-icon 2>/dev/null)
|
||||||
|
|
||||||
|
if [[ -n $icon ]]; then
|
||||||
|
icon=$(printf '%s' "$icon" | sed 's/["\\]/\\&/g')
|
||||||
|
printf '{"text":"%s"}\n' "$icon"
|
||||||
|
else
|
||||||
|
printf '{"text":"","class":"unavailable"}\n'
|
||||||
|
fi
|
||||||
@@ -426,7 +426,15 @@ if [[ $(tty) == "/dev/tty1" ]]; then
|
|||||||
"hyprland"
|
"hyprland"
|
||||||
"xdg-desktop-portal-hyprland"
|
"xdg-desktop-portal-hyprland"
|
||||||
"git"
|
"git"
|
||||||
"kitty" # A ENLEVER APRES !
|
"yazi"
|
||||||
|
"dolphin"
|
||||||
|
"rofi"
|
||||||
|
"waybar"
|
||||||
|
"wiremix"
|
||||||
|
"impala"
|
||||||
|
"bluetui"
|
||||||
|
"btop"
|
||||||
|
"cava"
|
||||||
)
|
)
|
||||||
|
|
||||||
arch-chroot /mnt pacman -S --noconfirm "${EXTRA_PACKAGES[@]}"
|
arch-chroot /mnt pacman -S --noconfirm "${EXTRA_PACKAGES[@]}"
|
||||||
@@ -451,6 +459,21 @@ fi
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
chown 1000:1000 "/mnt/home/$username/.bash_profile"
|
chown 1000:1000 "/mnt/home/$username/.bash_profile"
|
||||||
|
|
||||||
|
# --- 4. COPIE DES DOTFILES ---
|
||||||
|
clear
|
||||||
|
echo "Copying custom .config files..."
|
||||||
|
# On vérifie si le dossier .config existe bien à côté du script sur l'ISO
|
||||||
|
if [[ -d ".config" ]]; then
|
||||||
|
# On le copie dans le home de l'utilisateur sur le disque dur
|
||||||
|
cp -r .config "/mnt/home/$username/"
|
||||||
|
# On s'assure que l'utilisateur est bien le propriétaire (1000:1000 est le 1er user par défaut)
|
||||||
|
chown -R 1000:1000 "/mnt/home/$username/.config"
|
||||||
|
echo "Dotfiles copied successfully!"
|
||||||
|
else
|
||||||
|
echo "No .config folder found next to the script, skipping."
|
||||||
|
fi
|
||||||
|
|
||||||
# --- REBOOT AUTOMATIQUE ---
|
# --- REBOOT AUTOMATIQUE ---
|
||||||
echo "Installation finished! Rebooting in 3 seconds..."
|
echo "Installation finished! Rebooting in 3 seconds..."
|
||||||
sleep 3
|
sleep 3
|
||||||
|
|||||||
Reference in New Issue
Block a user