fix hyprlock, hypridle & monitor management

This commit is contained in:
2026-08-25 15:14:32 +02:00
parent 7c12c032ac
commit 9db0b4dac0
39 changed files with 923 additions and 142 deletions

14
scripts/auto/extract-lrc.sh Executable file
View File

@@ -0,0 +1,14 @@
#!/bin/bash
for file in "$@"; do
# Vérifie si c'est un fichier opus
if [[ "$file" == *.opus ]]; then
# Extrait et formate les paroles
lyrics=$(exiftool -b -Syncedlyrics "$file" | sed 's/\[/\n\[/g' | sed '/^$/d')
# Crée le fichier .lrc uniquement si le tag n'est pas vide
if [ -n "$lyrics" ]; then
echo "$lyrics" > "${file%.*}.lrc"
fi
fi
done

4
scripts/auto/to-opus.sh Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
for f in "$@"; do
ffmpeg -i "$f" -c:a libopus -b:a 160k "${f%.*}.opus"
done

View File

@@ -0,0 +1,41 @@
adwaita-qt5-git
adwaita-qt6-git
android-studio
appimagelauncher
balena-etcher
beeper-v4-bin
bibata-cursor-theme-bin
catppuccin-gtk-theme-mocha
chirp-next
chromium-widevine
cnrdrvcups-lb-bin
collabora-office
dell-command-configure
dupeguru
electron40-bin
gimp-plugin-resynthesizer
google-chrome
hyprdynamicmonitors-bin
hyprgraphics-git
hyprlang-git
hyprutils-git
hyprwayland-scanner-git
kdeconnect-git
libjpeg6-turbo
log2ram
networkmanager-dmenu-git
onlyoffice-bin
openssl-1.1
orca-slicer-bin
pinta
python-yattag
refind-theme-catppuccin-git
rustdesk-bin
sddm-theme-catppuccin-git
ungoogled-chromium-bin
ventoy-bin
vesktop-bin
vscodium-bin
wlogout
yay
zsh-theme-powerlevel10k-git

View File

@@ -0,0 +1,180 @@
adwaita-qt5-git
adwaita-qt6-git
alacritty
android-studio
appimagelauncher
audacity
balena-etcher
base
base-devel
bc
beeper-v4-bin
bibata-cursor-theme-bin
blender
blueman
bluez
bluez-utils
bolt
brightnessctl
btop
catppuccin-gtk-theme-mocha
chirp-next
chromium-widevine
cliphist
cnrdrvcups-lb-bin
collabora-office
converseen
cups
dell-command-configure
dex
dnsmasq
drawio-desktop
dupeguru
exfat-utils
eza
f3d
file-roller
firefox
flatpak
fwupd
gamemode
ghostscript
gimp
gimp-plugin-gmic
gimp-plugin-resynthesizer
git
github-cli
gnome-calculator
gnome-characters
gnome-keyring
godot
google-chrome
gptfdisk
grim
gst-plugin-pipewire
gvfs
gvfs-afc
gvfs-mtp
gvfs-smb
handbrake
hyprdynamicmonitors-bin
hypridle
hyprland
hyprlock
inkscape
intel-gpu-tools
intel-media-driver
intel-ucode
iwd
jq
kasts
kdeconnect-git
kdenlive
kid3-qt
lib32-gamemode
lib32-nvidia-utils
libva-utils
libvirt
linux
linux-firmware
linux-headers
log2ram
mako
man-db
man-pages
mesa-utils
mixxx
mpv
mtools
mumble
nano
ncdu
ncspot
network-manager-applet
networkmanager
networkmanager-dmenu-git
nextcloud-client
nm-connection-editor
nmap
noto-fonts-cjk
nvidia-open-dkms
nvidia-settings
nvidia-utils
nvtop
nwg-look
obs-studio
obsidian
onlyoffice-bin
orca-slicer-bin
pacman-contrib
pamixer
papirus-icon-theme
pavucontrol
pinta
pipewire-alsa
pipewire-pulse
plymouth
polkit-kde-agent
power-profiles-daemon
powertop
python-build
python-installer
python-pipx
qemu-full
qt5-graphicaleffects
qt5-quickcontrols2
qt5-svg
qt5-wayland
qt6-5compat
qt6-wayland
refind
refind-theme-catppuccin-git
rofi
rustdesk-bin
sane-airscan
sddm
sddm-theme-catppuccin-git
seahorse
signal-desktop
slurp
sof-firmware
steam
swaybg
syncthing
system-config-printer
texinfo
thermald
throttled
thunar
thunar-archive-plugin
thunderbird
timeshift
tree
ttf-jetbrains-mono-nerd
tumbler
ungoogled-chromium-bin
unzip
ventoy-bin
vesktop-bin
viewnior
virt-manager
vscodium-bin
vulkan-intel
waybar
websocat
wget
wine
wine-gecko
wine-mono
wireguard-tools
wl-clipboard
wlogout
woff2-font-awesome
wol
xdg-desktop-portal-hyprland
yay
ydotool
yt-dlp
zram-generator
zsh
zsh-theme-powerlevel10k-git

35
scripts/clean.sh Executable file
View File

@@ -0,0 +1,35 @@
#!/bin/bash
set -e
echo "==> Suppression téléchargements partiels..."
sudo rm -f /var/cache/pacman/pkg/download-* 2>/dev/null || true
echo "==> Nettoyage cache pacman..."
sudo paccache -r -k1 -q 2>/dev/null || true
echo "==> Nettoyage orphelins yay..."
yay -Yc --noconfirm 2>/dev/null || true
echo "==> Rotation journaux systemd..."
sudo journalctl --vacuum-time=2weeks 2>/dev/null || true
echo "==> Suppression paquets orphelins..."
orphans=$(pacman -Qdtq 2>/dev/null) || true
if [ -n "$orphans" ]; then
sudo pacman -Rns $orphans --noconfirm || true
else
echo " Aucun orphelin."
fi
echo "==> Nettoyage cache utilisateur..."
find ~/.cache -type f -delete 2>/dev/null || true
find ~/.cache -type d -empty -delete 2>/dev/null || true
echo "==> Nettoyage npm..."
npm cache clean --force 2>/dev/null || true
echo "==> Nettoyage historiques..."
> ~/.lesshst
> ~/.wget-hsts
echo "==> Terminé."

2
scripts/display-manager.sh Executable file
View File

@@ -0,0 +1,2 @@
#!/bin/bash
alacritty -e hyprdynamicmonitors tui

View File

@@ -0,0 +1,9 @@
#!/bin/bash
# Usage: ./download-youtube 'URL'
if [ -z "$1" ]; then
echo "Erreur : donne une URL YouTube en argument."
exit 1
fi
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]" -o "%(title)s.%(ext)s" "$1"

View File

@@ -0,0 +1,129 @@
#!/bin/bash
# Script de téléchargement et conversion pour xjadeo
# Dépendances : yt-dlp, ffmpeg
set -euo pipefail
# Couleurs pour l'affichage
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Fonction d'affichage
info() { echo -e "${BLUE}[INFO]${NC} $1"; }
success() { echo -e "${GREEN}[OK]${NC} $1"; }
error() { echo -e "${RED}[ERREUR]${NC} $1" >&2; }
warn() { echo -e "${YELLOW}[ATTENTION]${NC} $1"; }
# Vérification des dépendances
check_deps() {
local missing=()
if ! command -v yt-dlp &> /dev/null; then
missing+=("yt-dlp")
fi
if ! command -v ffmpeg &> /dev/null; then
missing+=("ffmpeg")
fi
if [ ${#missing[@]} -ne 0 ]; then
error "Dépendances manquantes : ${missing[*]}"
error "Installe-les avec : sudo pacman -S yt-dlp ffmpeg (Arch) ou sudo apt install yt-dlp ffmpeg (Debian/Ubuntu)"
exit 1
fi
}
# Demande de l'URL
get_url() {
if [ $# -eq 1 ]; then
URL="$1"
info "URL fournie en argument : $URL"
else
read -rp "URL YouTube : " URL
fi
if [[ -z "$URL" ]]; then
error "Aucune URL saisie."
exit 1
fi
}
# Demande du nom de fichier
get_filename() {
# Essaie d'extraire un titre temporaire avec yt-dlp --get-title
local suggested=""
if command -v yt-dlp &> /dev/null; then
suggested=$(yt-dlp --get-title "$URL" 2>/dev/null | sed 's/[^a-zA-Z0-9._-]/_/g' | head -c 80)
fi
if [ -z "$suggested" ]; then
suggested="video"
fi
read -rp "Nom du fichier (sans extension) [$suggested] : " input_name
FILENAME="${input_name:-$suggested}"
}
# Téléchargement
download_video() {
info "Téléchargement de la vidéo depuis $URL..."
# Télécharge la meilleure qualité vidéo+audio et fusionne en MKV
yt-dlp -f "bestvideo+bestaudio" --merge-output-format mkv -o "${FILENAME}.%(ext)s" "$URL"
# Recherche le fichier produit (peut être .mkv ou .webm)
SOURCE_FILE=$(find . -maxdepth 1 -name "${FILENAME}.*" -type f | head -1)
if [ -z "$SOURCE_FILE" ]; then
error "Fichier téléchargé introuvable."
exit 1
fi
success "Téléchargement terminé : $SOURCE_FILE"
}
# Proposer la conversion
ask_conversion() {
echo ""
read -rp "Souhaites-tu convertir cette vidéo au format MJPEG/AVI pour xjadeo ? (o/N) " convert_choice
case "$convert_choice" in
o|O|oui|Oui|y|Y|yes|Yes) CONVERT="yes" ;;
*) CONVERT="no" ;;
esac
}
# Conversion
convert_video() {
local output_file="${FILENAME}_xjadeo.avi"
info "Conversion en cours vers $output_file..."
# Qualité vidéo : on demande un paramètre
read -rp "Qualité vidéo MJPEG (q:v de 2 à 31, 2=meilleure) [2] : " qv
qv="${qv:-2}"
if ! [[ "$qv" =~ ^[0-9]+$ ]] || [ "$qv" -lt 2 ] || [ "$qv" -gt 31 ]; then
warn "Valeur invalide, utilisation de 2"
qv=2
fi
ffmpeg -i "$SOURCE_FILE" -c:v mjpeg -q:v "$qv" -c:a pcm_s16le -fflags +genpts "$output_file"
if [ $? -eq 0 ]; then
success "Conversion terminée : $output_file"
read -rp "Supprimer le fichier source ($SOURCE_FILE) ? (o/N) " del_choice
case "$del_choice" in
o|O|oui|Oui|y|Y|yes|Yes) rm -v "$SOURCE_FILE" ;;
*) info "Fichier source conservé." ;;
esac
else
error "La conversion a échoué."
fi
}
# Fonction principale
main() {
check_deps
get_url "$@"
get_filename
download_video
ask_conversion
if [ "$CONVERT" = "yes" ]; then
convert_video
else
info "Aucune conversion demandée. Le fichier source est $SOURCE_FILE"
fi
info "Terminé."
}
# Exécution
main "$@"

6
scripts/hdm-config-select.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/bash
if grep -q "eco_mode=1" /proc/cmdline; then
ln -sf "$HOME/.config/hyprdynamicmonitors/config-eco.toml" "$HOME/.config/hyprdynamicmonitors/config.toml"
else
ln -sf "$HOME/.config/hyprdynamicmonitors/config-power.toml" "$HOME/.config/hyprdynamicmonitors/config.toml"
fi

View File

@@ -1,2 +0,0 @@
#!/bin/bash
sudo mkinitcpio -c /etc/mkinitcpio-eco.conf -g /boot/initramfs-linux-eco.img

87
scripts/network-hotspot.sh Executable file
View File

@@ -0,0 +1,87 @@
#!/bin/bash
#
# Réinitialise le hotspot "2Limited" sur la carte WiFi disponible.
# Utilisation : sudo ./reset_hotspot.sh
#
set -e # stop en cas d'erreur
# --- Configuration ---
SSID="2Limited"
PASS="calais62"
CHANNEL=6
CONN_NAME="2Limited"
# --- Détection de l'interface WiFi ---
detect_wifi() {
# Liste des interfaces WiFi gérées par NetworkManager (hors loopback, ethernet, etc.)
local iface=$(nmcli -t -f TYPE,DEVICE device | grep -E '^wifi:' | head -1 | cut -d: -f2)
if [ -z "$iface" ]; then
echo "❌ Aucune interface WiFi détectée."
exit 1
fi
echo "$iface"
}
# --- Nettoyage de l'ancienne connexion ---
clean_connection() {
if nmcli con show "$CONN_NAME" &>/dev/null; then
echo "🔁 Suppression de l'ancienne connexion '$CONN_NAME'..."
sudo nmcli con delete "$CONN_NAME" >/dev/null 2>&1 || true
fi
}
# --- Création du hotspot ---
create_hotspot() {
local iface="$1"
echo "📡 Création du hotspot sur $iface..."
sudo nmcli con add type wifi ifname "$iface" mode ap con-name "$CONN_NAME" ssid "$SSID" >/dev/null
sudo nmcli con mod "$CONN_NAME" 802-11-wireless.mode ap
sudo nmcli con mod "$CONN_NAME" 802-11-wireless.band bg
sudo nmcli con mod "$CONN_NAME" 802-11-wireless.channel "$CHANNEL"
sudo nmcli con mod "$CONN_NAME" wifi-sec.key-mgmt wpa-psk
sudo nmcli con mod "$CONN_NAME" wifi-sec.psk "$PASS"
sudo nmcli con mod "$CONN_NAME" 802-11-wireless.powersave 2
sudo nmcli con mod "$CONN_NAME" ipv4.method shared
sudo nmcli con mod "$CONN_NAME" connection.autoconnect yes
}
# --- Démarrage du hotspot ---
start_hotspot() {
echo "▶️ Démarrage du hotspot..."
sudo nmcli con up "$CONN_NAME" >/dev/null
if [ $? -eq 0 ]; then
echo "✅ Hotspot '$SSID' actif."
# Afficher l'IP de la passerelle (le PC)
local gateway=$(ip -4 addr show "$(nmcli -t -f DEVICE device status | grep -E '^wlan' | cut -d: -f1)" | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -1)
echo "🌐 IP du PC (passerelle) : $gateway"
echo "🔑 Mot de passe : $PASS"
echo "📶 Canal : $CHANNEL"
else
echo "❌ Échec du démarrage du hotspot."
exit 1
fi
}
# --- Exécution ---
main() {
echo "🔄 Réinitialisation du hotspot '$SSID'..."
WIFI_IFACE=$(detect_wifi)
echo "🔌 Interface détectée : $WIFI_IFACE"
clean_connection
create_hotspot "$WIFI_IFACE"
start_hotspot
echo ""
echo "✨ Prêt ! L'ESP peut maintenant se connecter à '$SSID'."
}
# Vérification des droits
if [ "$EUID" -ne 0 ]; then
echo "⚠️ Ce script nécessite les droits root. Relance avec sudo."
exit 1
fi
main

View File

@@ -0,0 +1,2 @@
sudo nmcli connection up "Switch-Local"
sudo systemctl start dnsmasq

View File

@@ -12,30 +12,35 @@ cnrdrvcups-lb-bin
collabora-office
dell-command-configure
dupeguru
electron40-bin
electron37
gimp-plugin-resynthesizer
glava
google-chrome
grimblast-git
gtk2
hyprdynamicmonitors-bin
hyprgraphics-git
hyprlang-git
hyprutils-git
hyprwayland-scanner-git
kdeconnect-git
libjpeg6-turbo
log2ram
networkmanager-dmenu-git
obs-advanced-masks
obs-move-transition
onlyoffice-bin
openssl-1.1
orca-slicer-bin
pinta
python-yattag
refind-theme-catppuccin-git
rsgain
rtpmidid-bin
rustdesk-bin
sddm-theme-catppuccin-git
spotify
ungoogled-chromium-bin
ventoy-bin
vesktop-bin
vibe-audio-visualizer-git
vscodium-bin
wlogout
xwaylandvideobridge
yay
zsh-theme-powerlevel10k-git

View File

@@ -1,7 +1,12 @@
adwaita-qt5-git
adwaita-qt6-git
aegisub
alacritty
alsa-firmware
alsa-utils
android-studio
android-tools
android-udev
appimagelauncher
audacity
balena-etcher
@@ -18,6 +23,7 @@ bolt
brightnessctl
btop
catppuccin-gtk-theme-mocha
cdrtools
chirp-next
chromium-widevine
cliphist
@@ -30,11 +36,13 @@ dex
dnsmasq
drawio-desktop
dupeguru
etckeeper
exfat-utils
eza
f3d
file-roller
firefox
firefox-i18n-fr
flatpak
fwupd
gamemode
@@ -44,6 +52,7 @@ gimp-plugin-gmic
gimp-plugin-resynthesizer
git
github-cli
glava
gnome-calculator
gnome-characters
gnome-keyring
@@ -51,6 +60,7 @@ godot
google-chrome
gptfdisk
grim
grimblast-git
gst-plugin-pipewire
gvfs
gvfs-afc
@@ -66,6 +76,8 @@ intel-gpu-tools
intel-media-driver
intel-ucode
iwd
jack2
jdk17-openjdk
jq
kasts
kdeconnect-git
@@ -83,6 +95,7 @@ mako
man-db
man-pages
mesa-utils
meson
mixxx
mpv
mtools
@@ -97,19 +110,25 @@ nextcloud-client
nm-connection-editor
nmap
noto-fonts-cjk
ntfs-3g
ntfsprogs
nvidia-open-dkms
nvidia-settings
nvidia-utils
nvtop
nwg-look
obs-advanced-masks
obs-move-transition
obs-studio
obsidian
onlyoffice-bin
openrct2
orca-slicer-bin
pacman-contrib
pamixer
papirus-icon-theme
pavucontrol
perl-image-exiftool
pinta
pipewire-alsa
pipewire-pulse
@@ -117,6 +136,7 @@ plymouth
polkit-kde-agent
power-profiles-daemon
powertop
projectm
python-build
python-installer
python-pipx
@@ -130,18 +150,24 @@ qt6-wayland
refind
refind-theme-catppuccin-git
rofi
rsgain
rtpmidid-bin
rustdesk-bin
sane-airscan
sbctl
sddm
sddm-theme-catppuccin-git
seahorse
signal-desktop
slurp
sof-firmware
spotify
sqlcipher
steam
swaybg
syncthing
system-config-printer
tcpdump
texinfo
thermald
throttled
@@ -156,6 +182,7 @@ ungoogled-chromium-bin
unzip
ventoy-bin
vesktop-bin
vibe-audio-visualizer-git
viewnior
virt-manager
vscodium-bin
@@ -163,6 +190,7 @@ vulkan-intel
waybar
websocat
wget
whois
wine
wine-gecko
wine-mono
@@ -172,6 +200,8 @@ wlogout
woff2-font-awesome
wol
xdg-desktop-portal-hyprland
xjadeo
xwaylandvideobridge
yay
ydotool
yt-dlp