1st dotfiles commit
This commit is contained in:
parent
39c99549d0
commit
a57c4c068f
31 changed files with 8636 additions and 0 deletions
1
waybar/.~lock.style.css#
Normal file
1
waybar/.~lock.style.css#
Normal file
|
|
@ -0,0 +1 @@
|
|||
,root,ohTP,29.06.2026 09:24,file:///root/.config/libreoffice/4;
|
||||
216
waybar/backup/config_ini.json
Normal file
216
waybar/backup/config_ini.json
Normal file
|
|
@ -0,0 +1,216 @@
|
|||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"height": 30,
|
||||
"icon-size": 40,
|
||||
"reload-style-on-change": true,
|
||||
"modules-left": [
|
||||
"custom/shutdown",
|
||||
"sway/workspaces",
|
||||
"mpris"
|
||||
],
|
||||
"modules-center": ["custom/weather"],
|
||||
"modules-right": [
|
||||
"group/audio",
|
||||
"group/hardware",
|
||||
"battery",
|
||||
"network",
|
||||
"clock",
|
||||
"idle_inhibitor",
|
||||
"sway/hibernate"
|
||||
],
|
||||
"sway/workspaces": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"1": "<span></span>",
|
||||
"2": "<span></span>",
|
||||
"3": "<span></span>",
|
||||
"4": "<span></span>",
|
||||
"5": "<span></span>",
|
||||
"6": "<span></span>",
|
||||
"7": "<span></span>",
|
||||
"8": "<span></span>",
|
||||
},
|
||||
"on-click": "activate"
|
||||
},
|
||||
"custom/shutdown": {
|
||||
"format": "",
|
||||
"tooltip": false,
|
||||
"on-click": "systemctl poweroff"
|
||||
},
|
||||
"custom/hibernate": {
|
||||
"format": "",
|
||||
"tooltip": false,
|
||||
"on-click": "systemctl hibernate"
|
||||
},
|
||||
|
||||
"custom/weather": {
|
||||
"format": "{}",
|
||||
"interval": 900,
|
||||
"exec": "~/.config/waybar/scripts/weather_module.py",
|
||||
"tooltip": true,
|
||||
"on-click": "exec ~/.config/waybar/scripts/weather_module.py",
|
||||
"return-type": "json",
|
||||
},
|
||||
|
||||
"mpris": {
|
||||
"interval": 10,
|
||||
"format": "{player_icon} {dynamic}",
|
||||
"format-paused": "{status_icon} {artist} {title}",
|
||||
"on-click-middle": "playerctl play-pause",
|
||||
"on-click": "playerctl previous",
|
||||
"on-click-right": "playerctl next",
|
||||
"scroll-step": 5.0,
|
||||
"on-scroll-up": "$HOME/.config/hypr/scripts/volume.sh --inc",
|
||||
"on-scroll-down": "$HOME/.config/hypr/scripts/volume.sh --dec",
|
||||
"smooth-scrolling-threshold": 1,
|
||||
"tooltip": true,
|
||||
"tooltip-format": "{status_icon} {dynamic}\nLeft Click: previous\nMid Click: Pause\nRight Click: Next",
|
||||
"player-icons": {
|
||||
"chromium": "",
|
||||
"default": "",
|
||||
"firefox": "",
|
||||
"kdeconnect": "",
|
||||
"mopidy": "",
|
||||
"mpv": "",
|
||||
"spotify": "",
|
||||
"vlc": "",
|
||||
},
|
||||
"status-icons": {
|
||||
"paused": "",
|
||||
"playing": "",
|
||||
"stopped": "",
|
||||
},
|
||||
"dynamic-order": ["artist", "title"],
|
||||
"max-length": 50,
|
||||
},
|
||||
|
||||
"group/audio": {
|
||||
"orientation": "horizontal",
|
||||
"modules": [
|
||||
"pulseaudio",
|
||||
"bluetooth"
|
||||
]
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"format": "{icon} {volume}%",
|
||||
"format-bluetooth": "{icon} {volume}% ",
|
||||
"format-muted": "",
|
||||
"on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
||||
},
|
||||
|
||||
"bluetooth": {
|
||||
"format": "",
|
||||
"format-disabled": "",
|
||||
"format-connected": "",
|
||||
"tooltip-format": "Devices connected: {num_connections}",
|
||||
"on-click": "bluetooth toggle"
|
||||
},
|
||||
|
||||
|
||||
"group/hardware": {
|
||||
"orientation": "horizontal",
|
||||
"modules": [
|
||||
"memory"
|
||||
]
|
||||
},
|
||||
|
||||
"memory": {
|
||||
"interval": 2,
|
||||
"format": "{icon} {percentage}%",
|
||||
"rformat-icons": [
|
||||
"",
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"battery": {
|
||||
"format": "{capacity}% {icon}",
|
||||
"format-discharging": "{capacity}% {icon}",
|
||||
"format-charging": "{capacity}% {icon}",
|
||||
"format-plugged": " {capacity}%",
|
||||
"format-icons": {
|
||||
"charging": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"default": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"format-full": " {capacity}%",
|
||||
"tooltip-format-discharging": "{timeTo}",
|
||||
"tooltip-format-charging": "{timeTo}",
|
||||
"interval": 5,
|
||||
"on-click": "exec tlp toggle",
|
||||
"on-click-right": "notify-send -u low \"$(omarchy-battery-status)\"",
|
||||
"states": {
|
||||
"warning": 20,
|
||||
"critical": 10
|
||||
}
|
||||
},
|
||||
|
||||
"network": {
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"format": "{icon}",
|
||||
"format-wifi": "{icon}",
|
||||
"format-ethernet": "",
|
||||
"format-disconnected": "",
|
||||
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
||||
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
||||
"tooltip-format-disconnected": "Disconnected",
|
||||
"interval": 3,
|
||||
"spacing": 1,
|
||||
"on-click": "exec foot nmtui"
|
||||
},
|
||||
|
||||
"clock": {
|
||||
"format": "{:%H:%M}",
|
||||
"tooltip-format": "<span>{calendar}</span>",
|
||||
"calendar": {
|
||||
"mode": "month",
|
||||
"mode-mon-col": 3,
|
||||
"on-click-right": "mode",
|
||||
"format": {
|
||||
"month": "<span color='#ffead3'><b>{}</b></span>",
|
||||
"weekdays": "<span color='#ffcc66'><b>{}</b></span>",
|
||||
"today": "<span color='#ff6699'><b>{}</b></span>",
|
||||
},
|
||||
},
|
||||
"timezone": "Europe/Paris"
|
||||
},
|
||||
|
||||
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": "\uf06e",
|
||||
"deactivated": "\uf070"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
116
waybar/backup/style_ini.css
Normal file
116
waybar/backup/style_ini.css
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
* {
|
||||
font-family: "JetBrainsMono Nerd Font Propo";
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
tooltip * {
|
||||
background-color: #301934;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: transparent;
|
||||
}
|
||||
/*
|
||||
window#waybar {
|
||||
background: transparent;
|
||||
transition-property: background-color;
|
||||
transition-duration: 0.5s;
|
||||
border-bottom: 0px solid #444;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
#mpris {
|
||||
color: #ffffff;
|
||||
border-radius: 4px;
|
||||
margin: 0px 3px;
|
||||
padding: 0px 12px;
|
||||
}
|
||||
|
||||
#pulseaudio, #bluetooth, #clock, #network {
|
||||
border-radius: 4px;
|
||||
margin: 0px 3px;
|
||||
padding: 0px 12px;
|
||||
background-color: #200116;
|
||||
color: #DABFFF;
|
||||
}
|
||||
|
||||
#idle_inhibitor.deactivated {
|
||||
margin: 0px 3px;
|
||||
padding: 0px 12px;
|
||||
background-color: #200200;
|
||||
}
|
||||
|
||||
#group-hardware {
|
||||
color: #200116;
|
||||
}
|
||||
|
||||
#memory {
|
||||
border-radius: 4px;
|
||||
margin: 0px 3px;
|
||||
padding: 0px 12px;
|
||||
background-color: #200116;
|
||||
color: #8FA6CB;
|
||||
}
|
||||
|
||||
#battery {
|
||||
border-radius: 4px;
|
||||
margin: 0px 3px;
|
||||
padding: 0px 12px;
|
||||
background-color: #4C0827;
|
||||
color: #8FA6CB;
|
||||
}
|
||||
|
||||
#custom-weather {
|
||||
border-radius: 4px;
|
||||
margin: 0px 3px;
|
||||
padding: 0px 12px;
|
||||
color: #8FA6CB;
|
||||
}
|
||||
|
||||
#custom-menu, #custom-shutdown, #custom-hibernate{
|
||||
padding: 0px 3px;
|
||||
padding-right: 16px;
|
||||
padding-left: 14px;
|
||||
color: #e06c75;
|
||||
}
|
||||
|
||||
#custom-menu:hover, #custom-shutdown:hover, #custom-logout:hover {
|
||||
background: #ffffff;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
|
||||
#workspaces button {
|
||||
all: initial;
|
||||
/* Remove GTK theme values (waybar #1351) */
|
||||
min-width: 0;
|
||||
/* Fix weird spacing in materia (waybar #450) */
|
||||
box-shadow: inset 0 -3px transparent;
|
||||
/* Use box-shadow instead of border so the text isn't offset */
|
||||
padding: 0px 15px;
|
||||
margin: 0px 3px;
|
||||
border-radius: 4px;
|
||||
color: #D6E3F8;
|
||||
background-color: #8b0c99;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
transition: all 50ms ease-out;
|
||||
color: #dddddd;
|
||||
background-color: #1B264F;
|
||||
font-weight: bold;
|
||||
border-bottom: 2px solid #ff0000; /* Optionnel : barre sous l'active */
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
box-shadow: inherit;
|
||||
text-shadow: inherit;
|
||||
color: #1e1e2e;
|
||||
background-color: #1B264F;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background-color: #f38ba8;
|
||||
}
|
||||
|
||||
307
waybar/config
Normal file
307
waybar/config
Normal file
|
|
@ -0,0 +1,307 @@
|
|||
{
|
||||
"reload_style_on_change": true,
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"mod": "dock",
|
||||
"margin-top": 0,
|
||||
"margin-left": 5,
|
||||
"margin-right": 5,
|
||||
"margin-bottom": 0,
|
||||
|
||||
|
||||
"group/left0": {
|
||||
"orientation": "inherit",
|
||||
"modules": ["custom/debian"],
|
||||
"margin-left": 4,
|
||||
"margin-right": 4
|
||||
},
|
||||
|
||||
"group/left1": {
|
||||
"orientation": "inherit",
|
||||
"modules": ["clock", "custom/notification-silencing-indicator", "custom/weather"]
|
||||
},
|
||||
|
||||
"group/left2": {
|
||||
"orientation": "inherit",
|
||||
"modules": ["sway/workspaces"]
|
||||
},
|
||||
|
||||
|
||||
"group/left3": {
|
||||
"orientation": "inherit",
|
||||
"modules": [
|
||||
"custom/screenrecording-indicator"
|
||||
]
|
||||
},
|
||||
|
||||
"group/left4": {
|
||||
"orientation": "inherit",
|
||||
"modules": []
|
||||
},
|
||||
|
||||
"modules-left": [
|
||||
"group/left0",
|
||||
"group/left1",
|
||||
"group/left2",
|
||||
"group/left3",
|
||||
"group/left4"
|
||||
],
|
||||
|
||||
|
||||
"modules-center": ["mpris"],
|
||||
"modules-right": ["group/right1", "group/right2"],
|
||||
|
||||
"group/right1": {
|
||||
"orientation": "inherit",
|
||||
"modules": ["tray", "idle_inhibitor"]
|
||||
},
|
||||
|
||||
"group/right2": {
|
||||
"orientation": "inherit",
|
||||
"modules": [
|
||||
"backlight",
|
||||
"bluetooth",
|
||||
"pulseaudio",
|
||||
"network",
|
||||
"memory",
|
||||
"battery"
|
||||
],
|
||||
},
|
||||
|
||||
"sway/workspaces": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"01": "<span></span>",
|
||||
"02": "<span></span>",
|
||||
"03": "<span></span>",
|
||||
"04": "<span></span>",
|
||||
"05": "<span></span>",
|
||||
"06": "<span></span>",
|
||||
"07": "<span></span>",
|
||||
"08": "<span></span>",
|
||||
},
|
||||
"on-click": "activate"
|
||||
},
|
||||
|
||||
"custom/debian": {
|
||||
"format": "",
|
||||
"on-click": "exec wlogout",
|
||||
"on-click-right": "",
|
||||
"tooltip-format": "L’université n’est pas une usine à fabriquer des diplômes, à la façon des usines à saucisses qui fabriquent des saucisses. \n\nC’est le lieu où une chance est donnée à des hommes de devenir qui ils sont vraiment. \n\nSimon Leys"
|
||||
},
|
||||
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": "",
|
||||
"deactivated": ""
|
||||
}
|
||||
},
|
||||
|
||||
"custom/notification-silencing-indicator": {
|
||||
"on-click": "omarchy-toggle-notification-silencing",
|
||||
"exec": "$OMARCHY_PATH/default/waybar/indicators/notification-silencing.sh",
|
||||
"signal": 10,
|
||||
"return-type": "json"
|
||||
},
|
||||
|
||||
"sway/window": {
|
||||
"format": "{title}",
|
||||
"max-length": 30,
|
||||
"rewrite": {
|
||||
" - ": "", // if no window is focused, a single dash is displayed, this removes it
|
||||
"(.*chrome)...(.*)": " $1 ",
|
||||
"(.*zen)...(.*)": " $1 ",
|
||||
"(.*foot)...(.*)": " $2 ",
|
||||
"(.*code) - (.*)": " $1 ",
|
||||
"^.*btop( .*|$)": " BTOP $1 ",
|
||||
"(.*) - Spotify": " $1 ",
|
||||
"(.*) - BeeperTexts": " $1 ",
|
||||
"(.*Discord)...(.*).. (.*)": " $2 ",
|
||||
"(.*) - org.gnome.Nautilus": " $1 ",
|
||||
"(.*Steam)...(.*)": " $1",
|
||||
"(.*imv)...(.*).. (.*)": " $2",
|
||||
"(.*) - com.obsproject.Studio": " $1 "
|
||||
}
|
||||
},
|
||||
|
||||
"memory": {
|
||||
"interval": 5,
|
||||
"format": " {icon} {percentage:02}%",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
|
||||
"clock": {
|
||||
"format": " {:%H:%M %a} ",
|
||||
"format-alt": " {:%d/%m/%Y %H:%M:%S}",
|
||||
"tooltip-format": "<span>{calendar}</span>",
|
||||
"calendar": {
|
||||
"mode": "month",
|
||||
"mode-mon-col": 3,
|
||||
"on-click-right": "mode",
|
||||
"format": {
|
||||
"month": "<span color='#ffead3'><b>{}</b></span>",
|
||||
"weekdays": "<span color='#ffcc66'><b>{}</b></span>",
|
||||
"today": "<span color='#ff6699'><b>{}</b></span>"
|
||||
}
|
||||
},
|
||||
"on-click-right": "omarchy-launch-floating-terminal-with-presentation omarchy-tz-select"
|
||||
},
|
||||
|
||||
"network": {
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"format": "{icon}",
|
||||
"format-wifi": "{icon}",
|
||||
"format-ethernet": "",
|
||||
"format-disconnected": "",
|
||||
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
||||
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
||||
"tooltip-format-disconnected": "Disconnected",
|
||||
"interval": 3,
|
||||
"spacing": 1,
|
||||
"on-click": "exec foot nmtui"
|
||||
},
|
||||
|
||||
"battery": {
|
||||
"format": "{capacity}% {icon}",
|
||||
"format-discharging": "{icon} {capacity}%",
|
||||
"format-charging": "{icon} {capacity}%",
|
||||
"format-plugged": " {capacity} %",
|
||||
"format-icons": {
|
||||
"charging": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"default": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"format-full": "",
|
||||
"tooltip-format-discharging": "{timeTo}",
|
||||
"tooltip-format-charging": "{timeTo}",
|
||||
"interval": 5,
|
||||
"on-click": "exec tlp toggle",
|
||||
"on-click-right": "notify-send -u low \"$(omarchy-battery-status)\"",
|
||||
"states": {
|
||||
"warning": 20,
|
||||
"critical": 10
|
||||
}
|
||||
},
|
||||
|
||||
"bluetooth": {
|
||||
"format": "",
|
||||
"format-disabled": "",
|
||||
"format-connected": "",
|
||||
"tooltip-format": "Devices connected: {num_connections}",
|
||||
"on-click": "bluetooth toggle"
|
||||
},
|
||||
|
||||
"backlight": {
|
||||
"device": "intel_backlight",
|
||||
"format": "{icon}",
|
||||
"tooltip-format": "{percent}%",
|
||||
"format-icons": [
|
||||
"🌑",
|
||||
"🌘",
|
||||
"🌗",
|
||||
"🌖",
|
||||
"🌕"
|
||||
]
|
||||
},
|
||||
|
||||
"custom/weather": {
|
||||
"format": "{}",
|
||||
"interval": 900,
|
||||
"exec": "~/.config/waybar/scripts/weather_module.py",
|
||||
"tooltip": true,
|
||||
"on-click": "exec ~/.config/waybar/scripts/weather_module.py",
|
||||
"return-type": "json",
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"format": "{icon} {volume}%",
|
||||
"format-muted": "",
|
||||
"format-icons": {
|
||||
"default": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
],
|
||||
},
|
||||
"on-click": "amixer sset 'Master' toggle",
|
||||
"scroll-step": 3,
|
||||
},
|
||||
|
||||
"tray": {
|
||||
"icon-size": 12,
|
||||
"spacing": 10
|
||||
},
|
||||
|
||||
"mpris": {
|
||||
"ignored-players": [],
|
||||
"interval": 10,
|
||||
"format": "{player_icon} {dynamic}",
|
||||
"format-paused": "{status_icon} {artist} {title}",
|
||||
"on-click-middle": "playerctl play-pause",
|
||||
"on-click": "playerctl previous",
|
||||
"on-click-right": "playerctl next",
|
||||
"scroll-step": 5.0,
|
||||
"on-scroll-up": "",
|
||||
"on-scroll-down": "",
|
||||
"smooth-scrolling-threshold": 1,
|
||||
"tooltip": true,
|
||||
"tooltip-format": "{status_icon} {dynamic}\nLeft Click: previous\nMid Click: Pause\nRight Click: Next",
|
||||
"player-icons": {
|
||||
"chromium": "",
|
||||
"default": "",
|
||||
"firefox": "",
|
||||
"kdeconnect": "",
|
||||
"mopidy": "",
|
||||
"mpv": "",
|
||||
"vlc": "",
|
||||
},
|
||||
"status-icons": {
|
||||
"paused": "",
|
||||
"playing": "",
|
||||
"stopped": "",
|
||||
},
|
||||
"dynamic-order": ["artist", "title"],
|
||||
"max-length": 50,
|
||||
},
|
||||
|
||||
"custom/screenrecording-indicator": {
|
||||
"on-click": "omarchy-capture-screenrecording",
|
||||
"exec": "$OMARCHY_PATH/default/waybar/indicators/screen-recording.sh",
|
||||
"signal": 8,
|
||||
"return-type": "json"
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
26
waybar/rose-pine.css
Normal file
26
waybar/rose-pine.css
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Variant: Rosé Pine
|
||||
* Maintainer: DankChoir
|
||||
*/
|
||||
|
||||
@define-color base #191724;
|
||||
@define-color surface #1f1d2e;
|
||||
@define-color overlay #26233a;
|
||||
|
||||
@define-color muted #6e6a86;
|
||||
@define-color subtle #908caa;
|
||||
@define-color text #e0def4;
|
||||
|
||||
@define-color love #eb6f92;
|
||||
@define-color gold #f6c177;
|
||||
@define-color rose #ebbcba;
|
||||
@define-color pine #31748f;
|
||||
@define-color foam #9ccfd8;
|
||||
@define-color iris #c4a7e7;
|
||||
@define-color plum #DDA0DD;
|
||||
@define-color purple #341731;
|
||||
@define-color blue #0a8cf0;
|
||||
|
||||
@define-color highlightLow #21202e;
|
||||
@define-color highlightMed #403d52;
|
||||
@define-color highlightHigh #524f67;
|
||||
59
waybar/scripts/weather.sh
Executable file
59
waybar/scripts/weather.sh
Executable file
|
|
@ -0,0 +1,59 @@
|
|||
#!/bin/bash
|
||||
|
||||
# --- CONFIGURATION ---
|
||||
API_KEY="00e744eb427e575e1e8ed79f31f770fb" # Paste your key here
|
||||
LAT="48.856613" # Replace with your Latitude
|
||||
LON="2.352222" # Replace with your Longitude
|
||||
UNITS="metric" # Use "metric" for Celsius, "imperial" for Fahrenheit
|
||||
# ---------------------
|
||||
|
||||
# Validate configuration
|
||||
if [ -z "$LAT" ] || [ -z "$LON" ] || [ -z "$UNITS" ] || [ -z "$API_KEY" ]; then
|
||||
echo "Config missing"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Fetch the weather data
|
||||
RESPONSE=$(curl -s "[https://api.openweathermap.org/data/2.5/weather?lat=$](https://api.openweathermap.org/data/2.5/weather?lat=$){LAT}&lon=${LON}&appid=${API_KEY}&units=${UNITS}")
|
||||
|
||||
# Check if curl failed to get a response
|
||||
if [ -z "$RESPONSE" ]; then
|
||||
echo "No connection"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 1. Get the Temperature
|
||||
# We use jq's built-in 'round' function to avoid ugly decimals (e.g., 71.6°F becomes 72°F)
|
||||
TEMP=$(echo "$RESPONSE" | jq '.main.temp | round')
|
||||
|
||||
# 2. Get the Description (for the tooltip)
|
||||
DESC=$(echo "$RESPONSE" | jq -r '.weather[0].description')
|
||||
|
||||
# 3. Get the Icon Code and map it to an emoji
|
||||
ICON_CODE=$(echo "$RESPONSE" | jq -r '.weather[0].icon')
|
||||
|
||||
case $ICON_CODE in
|
||||
"01d") ICON="☀️";; # Clear sky day
|
||||
"01n") ICON="🌙";; # Clear sky night
|
||||
"02d") ICON="⛅";; # Few clouds day
|
||||
"02n") ICON="☁️";; # Few clouds night
|
||||
"03d"|"03n") ICON="☁️";; # Scattered clouds
|
||||
"04d"|"04n") ICON="☁️";; # Broken clouds
|
||||
"09d"|"09n") ICON="🌧️";; # Shower rain
|
||||
"10d") ICON="🌦️";; # Rain day
|
||||
"10n") ICON="🌧️";; # Rain night
|
||||
"11d"|"11n") ICON="⛈️";; # Thunderstorm
|
||||
"13d"|"13n") ICON="❄️";; # Snow
|
||||
"50d"|"50n") ICON="🌫️";; # Mist
|
||||
*) ICON="❓";; # Default
|
||||
esac
|
||||
|
||||
# Determine unit label
|
||||
if [ "$UNITS" = "metric" ]; then
|
||||
LABEL="°C"
|
||||
else
|
||||
LABEL="°F"
|
||||
fi
|
||||
|
||||
# Final JSON output for Waybar
|
||||
echo "{\"text\": \"${ICON} ${TEMP}${LABEL}\", \"tooltip\": \"${DESC}\"}"
|
||||
83
waybar/scripts/weather_module.py
Executable file
83
waybar/scripts/weather_module.py
Executable file
|
|
@ -0,0 +1,83 @@
|
|||
#!/usr/bin/env python3
|
||||
import requests
|
||||
import json
|
||||
import sys
|
||||
import os
|
||||
|
||||
# CONFIGURATION
|
||||
import requests
|
||||
import json
|
||||
import sys
|
||||
import os
|
||||
|
||||
# CONFIGURATION
|
||||
API_KEY = "ebb6d6ea53be021675e3276f7fe8cd77" # Remplacez par votre clé OpenWeatherMap
|
||||
CITY = "Paris" # Ville par défaut si non précisée
|
||||
UNITS = "metric" # "metric" pour °C, "imperial" pour °F
|
||||
LANG = "fr" # "fr" pour français, "en" pour anglais
|
||||
|
||||
def get_weather():
|
||||
if not API_KEY or API_KEY == "VOTRE_CLE_API_ICI":
|
||||
return {"text": "❌ Clé API manquante", "class": "weather-error", "tooltip": "Configurez la clé API dans le script."}
|
||||
|
||||
try:
|
||||
url = f"https://api.openweathermap.org/data/2.5/weather?q={CITY}&appid={API_KEY}&units={UNITS}&lang={LANG}"
|
||||
response = requests.get(url, timeout=5)
|
||||
|
||||
if response.status_code == 401:
|
||||
return {"text": "❌ Clé API invalide", "class": "weather-error", "tooltip": "Erreur 401: Vérifiez votre clé OpenWeatherMap."}
|
||||
|
||||
if response.status_code == 404:
|
||||
return {"text": "❌ Ville introuvable", "class": "weather-error", "tooltip": f"La ville '{CITY}' n'a pas été trouvée."}
|
||||
|
||||
if response.status_code != 200:
|
||||
return {"text": "⚠️ Erreur API", "class": "weather-error", "tooltip": f"Code {response.status_code}: {response.text}"}
|
||||
|
||||
data = response.json()
|
||||
|
||||
# Extraction des données
|
||||
temp = data["main"]["temp"]
|
||||
description = data["weather"][0]["description"].capitalize()
|
||||
icon_code = data["weather"][0]["icon"]
|
||||
wind_speed = data["wind"]["speed"]
|
||||
|
||||
# Mapping des icônes OpenWeather vers les icônes Waybar standard (ou Unicode)
|
||||
# OpenWeather utilise des codes comme "10d", "01n". Waybar utilise souvent des noms ou des emojis.
|
||||
# Ici, nous utilisons des emojis pour une compatibilité universelle.
|
||||
icon = "☁️"
|
||||
if "01" in icon_code:
|
||||
icon = "☀️" if "d" in icon_code else "🌙"
|
||||
elif "02" in icon_code:
|
||||
icon = "⛅" if "d" in icon_code else "🌥️"
|
||||
elif "03" in icon_code or "04" in icon_code:
|
||||
icon = "☁️"
|
||||
elif "09" in icon_code or "10" in icon_code:
|
||||
icon = "🌧️"
|
||||
elif "11" in icon_code:
|
||||
icon = "⛈️"
|
||||
elif "13" in icon_code:
|
||||
icon = "❄️"
|
||||
elif "50" in icon_code:
|
||||
icon = "🌫️"
|
||||
|
||||
# Formatage du texte
|
||||
text = f"{icon} {int(temp)}°C"
|
||||
tooltip = f"{description}\nVent: {wind_speed} m/s\nVille: {data['name']}, {data['sys']['country']}"
|
||||
|
||||
return {
|
||||
"text": text,
|
||||
"tooltip": tooltip,
|
||||
"class": "weather-good" if temp > 10 else "weather-cold" if temp < 0 else "weather-warm"
|
||||
}
|
||||
|
||||
except requests.exceptions.Timeout:
|
||||
return {"text": "⏱️ Timeout", "class": "weather-error", "tooltip": "La requête a expiré."}
|
||||
except requests.exceptions.ConnectionError:
|
||||
return {"text": "🚫 Pas de réseau", "class": "weather-error", "tooltip": "Impossible de se connecter à OpenWeatherMap."}
|
||||
except Exception as e:
|
||||
return {"text": "❌ Erreur", "class": "weather-error", "tooltip": str(e)}
|
||||
|
||||
if __name__ == "__main__":
|
||||
result = get_weather()
|
||||
print(json.dumps(result))
|
||||
sys.stdout.flush()
|
||||
234
waybar/style.css
Normal file
234
waybar/style.css
Normal file
|
|
@ -0,0 +1,234 @@
|
|||
@import "./rose-pine.css";
|
||||
|
||||
/* --- Global-Settings ---*/
|
||||
|
||||
* {
|
||||
font-family: 'JetBrainsMono Nerd Font';
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
min-height: 0px;
|
||||
border-radius:7px;
|
||||
}
|
||||
|
||||
/* --- Waybar ---*/
|
||||
window#waybar {
|
||||
background-color: transparent;
|
||||
transition-property: background-color;
|
||||
transition-duration: .5s;
|
||||
}
|
||||
|
||||
#waybar > box {
|
||||
margin: 2px 6px;
|
||||
padding: 0px;
|
||||
background-color: @base;
|
||||
border: 0px solid alpha(@highlightMed, 0.3);
|
||||
box-shadow:
|
||||
inset 3px 0 0 0px @iris,
|
||||
inset -3px 0 0 0px @iris,
|
||||
0px 1px 2px rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
|
||||
/* --- Single Module Config's ---*/
|
||||
#left0, #left1, #left2, #left3, #left4,
|
||||
#right1, #right2,
|
||||
.modules-center {
|
||||
margin: 0px 2px;
|
||||
padding: 0 5px;
|
||||
transition: all 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
#left0 {
|
||||
background-color: @overlay;
|
||||
border-radius: 1px;
|
||||
}
|
||||
|
||||
#left1 {
|
||||
background-color: @overlay;
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
#left2 {
|
||||
background-color: @overlay;
|
||||
box-shadow: inset 0 -3px 0 0 @love;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#left3 {
|
||||
background-color: @surface;
|
||||
box-shadow: inset 0 -3px 0 0 @pine;
|
||||
}
|
||||
|
||||
.modules-center {
|
||||
color: @plum;
|
||||
background-color: @surface;
|
||||
box-shadow: inset 0 -3px 0 0 @foam;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#right1 {
|
||||
background-color: @surface;
|
||||
box-shadow: inset 0 -3px 0 0 @subtle;
|
||||
}
|
||||
|
||||
#right2 {
|
||||
background-color: @overlay;
|
||||
}
|
||||
|
||||
|
||||
window#waybar.empty #window {
|
||||
background: transparent;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
color: transparent;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
#waybar.empty .modules-center {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
#mpris {
|
||||
background-color: @surface;
|
||||
box-shadow: inset 0 -3px 0 0 @rose;
|
||||
color: @rose;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
background-color: transparent;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
color: @subtle;
|
||||
padding: 0 8px;
|
||||
margin: 2px 2px;
|
||||
transition: all 0.2s ease;
|
||||
opacity: 0.75;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
color: @love;
|
||||
}
|
||||
|
||||
#workspaces button.empty {
|
||||
color: @muted;
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
#workspaces button.empty.active {
|
||||
color: @rose;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background-color: alpha(@highlightMed, 0.5);
|
||||
color: @text;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
color: @base;
|
||||
background-color: @love;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* --- General Modules --- */
|
||||
|
||||
#tray,
|
||||
#window,
|
||||
#cpu,
|
||||
#clock,
|
||||
#battery,
|
||||
#network,
|
||||
#memory,
|
||||
#backlight,
|
||||
#bluetooth,
|
||||
#pulseaudio,
|
||||
#custom-weather,
|
||||
#custom-update,
|
||||
#idle_inhibitor,
|
||||
#custom-idle-indicator,
|
||||
#custom-notification-silencing-indicator,
|
||||
#custom-debian,
|
||||
#custom-screenrecording-indicator,
|
||||
#custom-updatespacman {
|
||||
min-width: 16px;
|
||||
margin: 0 2px;
|
||||
padding: 0 4px;
|
||||
}
|
||||
|
||||
#custom-update {
|
||||
padding-left: 3px;
|
||||
}
|
||||
|
||||
/* --- Module-Group-Colors --- */
|
||||
|
||||
#custom-debian { color: @gold; }
|
||||
#clock, #custom-weather { color: @text; }
|
||||
#bluetooth { color: @rose; }
|
||||
#memory { color: @iris; }
|
||||
#pulseaudio { color: @love; }
|
||||
#network { color: @foam; }
|
||||
#battery { color: @pine; }
|
||||
#backlight { color: @gold; }
|
||||
#idle_inhibitor.activated { color: @gold; }
|
||||
#idle_inhibitor.deactivated { color: @muted; }
|
||||
#tray { color: @muted; }
|
||||
|
||||
#custom-voxtype {
|
||||
min-width: 12px;
|
||||
margin: 0 0 0 7.5px;
|
||||
}
|
||||
|
||||
#custom-voxtype.recording,
|
||||
#custom-idle-indicator.active,
|
||||
#custom-notification-silencing-indicator.active {
|
||||
color: @love;
|
||||
}
|
||||
|
||||
#custom-idle-indicator,
|
||||
#custom-notification-silencing-indicator {
|
||||
min-width: 12px;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
font-size: 12px;
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
|
||||
/* Specific Module */
|
||||
|
||||
#tray > .needs-attention {
|
||||
-gtk-icon-effect: highlight;
|
||||
background-color: @transparent;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
tooltip * {
|
||||
background-color: @purple;
|
||||
border: 0px solid @highlightHigh;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
tooltip label {
|
||||
color: @text;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
|
||||
/* Specific animation Module */
|
||||
|
||||
#custom-screenrecording-indicator.active {
|
||||
color: @rose;
|
||||
animation: blink-recording 0.5s infinite alternate linear;
|
||||
}
|
||||
|
||||
@keyframes blink-recording {
|
||||
to { color: transparent; }
|
||||
}
|
||||
|
||||
234
waybar/style.css.save
Normal file
234
waybar/style.css.save
Normal file
|
|
@ -0,0 +1,234 @@
|
|||
@import "./rose-pine.css";
|
||||
|
||||
/* --- Global-Settings ---*/
|
||||
|
||||
* {
|
||||
font-family: 'JetBrainsMono Nerd Font';
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
min-height: 0px;
|
||||
border-radius:7px;
|
||||
}
|
||||
|
||||
/* --- Waybar ---*/
|
||||
window#waybar {
|
||||
background-color: transparent;
|
||||
transition-property: background-color;
|
||||
transition-duration: .5s;
|
||||
}
|
||||
|
||||
#waybar > box {
|
||||
margin: 2px 6px;
|
||||
padding: 0px;
|
||||
background-color: @base;
|
||||
border: 0px solid alpha(@highlightMed, 0.3);
|
||||
box-shadow:
|
||||
inset 3px 0 0 0px @iris,
|
||||
inset -3px 0 0 0px @iris,
|
||||
0px 1px 2px rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
|
||||
/* --- Single Module Config's ---*/
|
||||
#left0, #left1, #left2, #left3, #left4,
|
||||
#right1, #right2,
|
||||
.modules-center {
|
||||
margin: 0px 2px;
|
||||
padding: 0 5px;
|
||||
transition: all 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
#left0 {
|
||||
background-color: @overlay;
|
||||
border-radius: 1px;
|
||||
}
|
||||
|
||||
#left1 {
|
||||
background-color: @overlay;
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
#left2 {
|
||||
background-color: @overlay;
|
||||
box-shadow: inset 0 -3px 0 0 @love;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#left3 {
|
||||
background-color: @surface;
|
||||
box-shadow: inset 0 -3px 0 0 @pine;
|
||||
}
|
||||
|
||||
.modules-center {
|
||||
color: @plum;
|
||||
background-color: @surface;
|
||||
box-shadow: inset 0 -3px 0 0 @foam;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#right1 {
|
||||
background-color: @surface;
|
||||
box-shadow: inset 0 -3px 0 0 @subtle;
|
||||
}
|
||||
|
||||
#right2 {
|
||||
background-color: @overlay;
|
||||
}
|
||||
|
||||
|
||||
window#waybar.empty #window {
|
||||
background: transparent;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
color: transparent;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
#waybar.empty .modules-center {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
#mpris {
|
||||
background-color: @surface;
|
||||
box-shadow: inset 0 -3px 0 0 @rose;
|
||||
color: @rose;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
background-color: transparent;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
color: @subtle;
|
||||
padding: 0 8px;
|
||||
margin: 2px 2px;
|
||||
transition: all 0.2s ease;
|
||||
opacity: 0.75;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
color: @love;
|
||||
}
|
||||
|
||||
#workspaces button.empty {
|
||||
color: @muted;
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
#workspaces button.empty.active {
|
||||
color: @rose;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background-color: alpha(@highlightMed, 0.5);
|
||||
color: @text;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
color: @base;
|
||||
background-color: @love;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* --- General Modules --- */
|
||||
|
||||
#tray,
|
||||
#window,
|
||||
#cpu,
|
||||
#clock,
|
||||
#battery,
|
||||
#network,
|
||||
#memory,
|
||||
#backlight,
|
||||
#bluetooth,
|
||||
#pulseaudio,
|
||||
#custom-weather,
|
||||
#custom-update,
|
||||
#idle_inhibitor,
|
||||
#custom-idle-indicator,
|
||||
#custom-notification-silencing-indicator,
|
||||
#custom-debian,
|
||||
#custom-screenrecording-indicator,
|
||||
#custom-updatespacman {
|
||||
min-width: 16px;
|
||||
margin: 0 2px;
|
||||
padding: 0 4px;
|
||||
}
|
||||
|
||||
#custom-update {
|
||||
padding-left: 3px;
|
||||
}
|
||||
|
||||
/* --- Module-Group-Colors --- */
|
||||
|
||||
#custom-debian { color: @gold; }
|
||||
#clock { color: @text; }
|
||||
#bluetooth { color: @rose; }
|
||||
#memory { color: @iris; }
|
||||
#pulseaudio { color: @love; }
|
||||
#network { color: @foam; }
|
||||
#battery { color: @pine; }
|
||||
#backlight { color: @gold; }
|
||||
#idle_inhibitor.activated { color: @gold; }
|
||||
#idle_inhibitor.deactivated { color: @muted; }
|
||||
#tray { color: @muted; }
|
||||
|
||||
#custom-voxtype {
|
||||
min-width: 12px;
|
||||
margin: 0 0 0 7.5px;
|
||||
}
|
||||
|
||||
#custom-voxtype.recording,
|
||||
#custom-idle-indicator.active,
|
||||
#custom-notification-silencing-indicator.active {
|
||||
color: @love;
|
||||
}
|
||||
|
||||
#custom-idle-indicator,
|
||||
#custom-notification-silencing-indicator {
|
||||
min-width: 12px;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
font-size: 12px;
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
|
||||
/* Specific Module */
|
||||
|
||||
#tray > .needs-attention {
|
||||
-gtk-icon-effect: highlight;
|
||||
background-color: @transparent;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
tooltip * {
|
||||
background-color: @purple;
|
||||
border: 0px solid @highlightHigh;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
tooltip label {
|
||||
color: @text;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
|
||||
/* Specific animation Module */
|
||||
|
||||
#custom-screenrecording-indicator.active {
|
||||
color: @rose;
|
||||
animation: blink-recording 0.5s infinite alternate linear;
|
||||
}
|
||||
|
||||
@keyframes blink-recording {
|
||||
to { color: transparent; }
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue