my_konfig

This commit is contained in:
2025-12-17 18:10:08 +01:00
parent ed4ae93364
commit 773955ef02
42 changed files with 1313 additions and 158 deletions

189
README.md
View File

@@ -1,99 +1,142 @@
# Sway Setup Wiederherstellung # Sway Desktop Wiederherstellung via Ansible
Dieses Verzeichnis enthält alle notwendigen Konfigurationen und eine Liste der Pakete, um dein personalisiertes Sway-Setup wiederherzustellen. Dieses Repository enthält die Konfigurationen und das Ansible-Playbook, um ein vollständiges und personalisiertes Sway-Desktop-Setup automatisiert bereitzustellen.
## 1. Installation der Pakete Das Playbook konfiguriert unter anderem:
* **Desktop-Umgebung:** Sway, Waybar, Wofi, Alacritty, Mako
In der Datei `packages.txt` findest du eine Liste aller benötigten Software-Pakete. Du musst diese mit dem Paketmanager deiner Linux-Distribution installieren. * **Hintergrund:** Statisches Hintergrundbild
* **Skripte:** Automatisches Verbinden von Bluetooth-Geräten, Update-Anzeige für Waybar
**Beispiel für Debian/Ubuntu:** * **Systemdienste:** MPD (Music Player Daemon), rclone-Synchronisierung
```bash
sudo apt update
sudo apt install sway waybar wofi alacritty swaylock swayidle mako kanshi wl-clipboard brightnessctl grim slurp playerctl
```
**Beispiel für Arch Linux:**
```bash
sudo pacman -Syu
sudo pacman -S sway waybar wofi alacritty swaylock swayidle mako kanshi wl-clipboard brightnessctl grim slurp playerctl
```
**Hinweis:** Die Namen der Pakete (besonders für Schriftarten) können leicht variieren. Die in `packages.txt` genannten Anwendungen (wie `brave-browser`) musst du eventuell aus einem separaten Repository installieren.
**Hinweis zu AUR-Paketen (nur Arch Linux):** Einige Pakete wie `tty-clock` befinden sich im Arch User Repository (AUR) und sind nicht in der Paketliste des Ansible-Playbooks enthalten. Diese müssen manuell mit einem AUR-Helper (z.B. `yay` oder `paru`) installiert werden:
```bash
yay -S tty-clock
```
## 2. Backup und Wiederherstellung der Konfiguration
Dieser Ordner (`my_sway_konfig`) dient als zentraler Speicherort für deine Sway-Konfigurationen.
### Backup erstellen
Um ein vollständiges Backup deiner aktuellen Konfigurationen zu erstellen, führe die folgenden Befehle aus:
```bash
cp -r ~/.config/{sway,waybar,mako,wofi,alacritty,kanshi} ~/my_sway_konfig/config/
cp ~/.tmux.conf ~/my_sway_konfig/
```
Diese Befehle kopieren die Konfigurationsordner und die `.tmux.conf` in dein `my_sway_konfig`-Verzeichnis.
### Konfiguration wiederherstellen
Um die Konfigurationen wiederherzustellen, kannst du entweder das Ansible-Playbook verwenden (siehe Abschnitt 3) oder die Dateien manuell kopieren.
**Manuelle Wiederherstellung:**
Navigiere in das `my_sway_konfig`-Verzeichnis und führe die folgenden Befehle aus:
```bash
cp -rT config/ ~/.config/
cp .tmux.conf ~/
```
Dieser Befehl kopiert die `sway`, `waybar`, `mako`, `wofi`, `alacritty` und `kanshi` Ordner an die richtige Stelle in deinem System, sowie die `.tmux.conf`.
--- ---
## 3. Deployment und Testen der Konfiguration mit Ansible ## 1. Voraussetzungen
Dieses Verzeichnis enthält ein Ansible-Playbook (`sway_config_deploy.yml`), das die Installation der benötigten Pakete (für Arch Linux) und das Kopieren deiner Konfigurationsdateien automatisiert. Bevor Sie das Playbook ausführen können, müssen die folgenden Werkzeuge auf dem Zielsystem (Arch Linux) installiert sein:
**Voraussetzung:** Ansible muss auf deinem System installiert sein. Falls nicht: 1. **Ansible:**
* **Arch Linux:** `sudo pacman -S ansible` ```bash
* **Debian/Ubuntu:** `sudo apt-get install ansible` sudo pacman -S ansible
* **Fedora:** `sudo dnf install ansible` ```
2. **git** und **base-devel** (um AUR-Pakete bauen zu können):
```bash
sudo pacman -S --needed git base-devel
```
3. **Ein AUR-Helper (empfohlen: `yay`):** Das Playbook verwendet `yay`, um Pakete aus dem Arch User Repository (AUR) zu installieren. Bitte installieren Sie es manuell, bevor Sie das Playbook starten.
```bash
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
cd ..
rm -rf yay
```
---
## 2. Konfiguration mit Ansible bereitstellen (Empfohlene Methode)
Der empfohlene Weg, dieses Setup zu installieren, ist die Verwendung des mitgelieferten Ansible-Playbooks.
### Playbook ausführen ### Playbook ausführen
1. **Navigiere in das Konfigurationsverzeichnis:** 1. **Navigieren Sie in das Verzeichnis:**
```bash ```bash
cd ~/my_sway_konfig cd ~/my_sway_konfig
``` ```
2. **Führe das Playbook mit `sudo` aus:** 2. **Führen Sie das Playbook aus:**
Dieser Befehl startet den automatisierten Prozess. Er wird Sie nach Ihrem `sudo`-Passwort fragen, um Pakete zu installieren und Systemkonfigurationen vorzunehmen.
```bash ```bash
sudo ansible-playbook sway_config_deploy.yml ansible-playbook sway_config_deploy.yml --ask-become-pass
``` ```
Dieser Befehl installiert die Pakete und kopiert alle Konfigurationsdateien für den im Playbook definierten Benutzer (`target_user`, standardmäßig `jonnybravo`).
3. **(Optional) Zielbenutzer ändern:** 3. **(Optional) Zielbenutzer ändern:**
Wenn du die Konfiguration für einen anderen Benutzer bereitstellen möchtest, kannst du die Variable `target_user` beim Aufruf überschreiben: Standardmäßig ist das Playbook für den Benutzer `jonnybravo` konfiguriert. Um es für einen anderen Benutzer auszuführen, verwenden Sie die `--extra-vars`-Option:
```bash ```bash
sudo ansible-playbook sway_config_deploy.yml --extra-vars "target_user=anderer_benutzer" ansible-playbook sway_config_deploy.yml --ask-become-pass --extra-vars "target_user=anderer_benutzer"
``` ```
### Playbook testen (Dry Run) ### Playbook testen (ohne Änderungen)
Du kannst das Playbook im "Check-Modus" ausführen, um zu sehen, welche Änderungen vorgenommen würden, ohne sie tatsächlich anzuwenden. Bevor Sie das Playbook ausführen, können Sie mit `--check` und `--diff` eine Simulation durchführen. Dies ist sehr nützlich, um zu sehen, was sich ändern würde, ohne das System zu verändern.
1. **Nur Dateikopieroperationen testen (Paketinstallation überspringen):**
```bash ```bash
cd ~/my_sway_konfig # Simuliert die Ausführung und zeigt alle geplanten Änderungen an
sudo ansible-playbook sway_config_deploy.yml --check --skip-tags install_packages ansible-playbook sway_config_deploy.yml --ask-become-pass --check --diff
``` ```
Dies simuliert das Kopieren der Dateien, ohne Pakete zu installieren.
2. **Alle Aufgaben im Check-Modus testen (inklusive Paketinstallation):** ---
```bash
cd ~/my_sway_konfig ## 3. Referenz: Installierte Pakete
sudo ansible-playbook sway_config_deploy.yml --check
``` Das Playbook installiert die folgenden Pakete. Diese Liste dient als Referenz.
Dies simuliert die Installation der Pakete und das Kopieren der Dateien.
### Offizielle Repositories (via pacman)
- sway
- waybar
- wofi
- alacritty
- swaylock
- swayidle
- mako
- kanshi
- wl-clipboard
- brightnessctl
- grim
- slurp
- playerctl
- qalculate-gtk
- tmux
- rclone
- pacman-contrib
- udisks2
- udiskie
- mpd
- ncmpcpp
- ttf-dejavu
- otf-font-awesome
- papirus-icon-theme
- nwg-look
### Arch User Repository (AUR) (via yay)
- tty-clock
- catppuccin-gtk-theme-mocha
---
## 4. MPD & ncmpcpp Cheatsheet
Hier sind einige nützliche Befehle zur Steuerung des Music Player Daemon (MPD) und des Clients `ncmpcpp`.
**Wichtiger Hinweis:** Dein MPD-Server läuft auf Port `6601`. Fast alle Befehle benötigen daher die Angabe `-p 6601`.
### MPD (Der Server)
| Befehl | Beschreibung |
| ------------------------------------ | ------------------------------------------ |
| `systemctl --user status mpd` | Zeigt den Status des MPD-Dienstes an. |
| `systemctl --user restart mpd` | Startet den MPD-Dienst neu. |
| `mpc -p 6601 update` | Scannt dein Musikverzeichnis nach neuen Liedern. |
### mpc (Einfacher Kommandozeilen-Client)
| Befehl | Beschreibung |
| ------------------------------------ | ------------------------------------------ |
| `mpc -p 6601 toggle` | Spielt ab oder pausiert. |
| `mpc -p 6601 next` | Nächstes Lied. |
| `mpc -p 6601 prev` | Vorheriges Lied. |
| `mpc -p 6601 current` | Zeigt den aktuell spielenden Titel an. |
### ncmpcpp (Visueller Client im Terminal)
**Starten:** `ncmpcpp -p 6601`
| Taste(n) | Aktion |
| ---------------- | ------------------------------------------ |
| `1` | Aktuelle Wiedergabeliste |
| `2` | Musik-Browser (Dateisystem) |
| `q` | Beenden |
| `Leertaste` | Wiedergabe umschalten (Play/Pause) |
| `>` | Nächstes Lied |
| `<` | Vorheriges Lied |
| `u` | Musik-Datenbank aktualisieren |

128
config/Thunar/accels.scm Normal file
View File

@@ -0,0 +1,128 @@
; thunar GtkAccelMap rc-file -*- scheme -*-
; this file is an automated accelerator map dump
;
; (gtk_accel_path "<Actions>/ThunarDetailsView/expandable-folders" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-type" "")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-last-modified" "")
; (gtk_accel_path "<Actions>/Thunarwindow/menu" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/cut" "<Primary>x")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-size" "")
; (gtk_accel_path "<Actions>/ThunarWindow/file-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/close-tab" "<Primary>w")
; (gtk_accel_path "<Actions>/ThunarWindow/switch-previous-tab-alt" "<Primary><Shift>ISO_Left_Tab")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-size" "")
; (gtk_accel_path "<Actions>/ThunarWindow/new-window" "<Primary>n")
; (gtk_accel_path "<Actions>/ThunarWindow/clear-directory-specific-settings" "")
; (gtk_accel_path "<Actions>/ThunarWindow/close-window" "<Primary>q")
; (gtk_accel_path "<Actions>/ThunarWindow/open-parent" "<Alt>Up")
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-menu" "")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-size-in-bytes" "")
; (gtk_accel_path "<Actions>/ThunarWindow/switch-previous-tab" "<Primary>Page_Up")
; (gtk_accel_path "<Actions>/ThunarActionManager/open" "<Primary>o")
; (gtk_accel_path "<Actions>/ThunarBookmarks/87f311946d76aaa57a4debfe8d0f656a" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-ascending" "")
; (gtk_accel_path "<Actions>/ThunarWindow/toggle-split-view" "F3")
; (gtk_accel_path "<Actions>/ThunarActionManager/copy-2" "<Primary>Insert")
; (gtk_accel_path "<Actions>/ThunarActionManager/trash-delete" "Delete")
; (gtk_accel_path "<Actions>/ThunarWindow/open-recent" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-configure-toolbar" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/forward" "<Alt>Right")
; (gtk_accel_path "<Actions>/ThunarActionManager/restore" "")
; (gtk_accel_path "<Actions>/ThunarWindow/open-location-alt" "<Alt>d")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-out-alt" "<Primary>KP_Subtract")
; (gtk_accel_path "<Actions>/ThunarStandardView/select-by-pattern" "<Primary>s")
; (gtk_accel_path "<Actions>/ThunarWindow/open-file-menu" "F10")
; (gtk_accel_path "<Actions>/ThunarWindow/contents" "F1")
; (gtk_accel_path "<Actions>/ThunarWindow/show-highlight" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-descending" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-name" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/select-all-files" "<Primary>a")
; (gtk_accel_path "<Actions>/ThunarActionManager/execute" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/properties" "<Alt>Return")
; (gtk_accel_path "<Actions>/ThunarActionManager/cut-2" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-dtime" "")
; (gtk_accel_path "<Actions>/ThunarWindow/switch-next-tab" "<Primary>Page_Down")
; (gtk_accel_path "<Actions>/ThunarWindow/open-templates" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/paste-2" "<Shift>Insert")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-filetype" "")
; (gtk_accel_path "<Actions>/ThunarWindow/close-all-windows" "<Primary><Shift>w")
; (gtk_accel_path "<Actions>/ThunarStandardView/create-document" "")
; (gtk_accel_path "<Actions>/ThunarWindow/detach-tab" "")
; (gtk_accel_path "<Actions>/ThunarWindow/cancel-search" "Escape")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in-alt2" "<Primary>equal")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-hidden-count" "")
; (gtk_accel_path "<Actions>/ThunarShortcutsPane/sendto-shortcuts" "<Primary>d")
; (gtk_accel_path "<Actions>/ThunarActionManager/undo" "<Primary>z")
; (gtk_accel_path "<Actions>/ThunarStandardView/toggle-sort-order" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-entry" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/paste" "<Primary>v")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in-alt1" "<Primary>KP_Add")
; (gtk_accel_path "<Actions>/ThunarWindow/view-menubar" "<Primary>m")
; (gtk_accel_path "<Actions>/ThunarStandardView/back" "<Alt>Left")
; (gtk_accel_path "<Actions>/ThunarWindow/open-desktop" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-detailed-list" "<Primary>2")
; (gtk_accel_path "<Actions>/ThunarActionManager/restore-show" "")
; (gtk_accel_path "<Actions>/ThunarWindow/sendto-menu" "")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-display-name" "")
; (gtk_accel_path "<Actions>/ThunarWindow/go-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-out" "<Primary>minus")
; (gtk_accel_path "<Actions>/ThunarWindow/remove-from-recent" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/open-with-other" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/invert-selection" "<Primary><Shift>i")
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-shortcuts" "<Primary>b")
; (gtk_accel_path "<Actions>/ThunarWindow/reload-alt-2" "Reload")
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/reload" "<Primary>r")
; (gtk_accel_path "<Actions>/ThunarWindow/edit-menu" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/copy" "<Primary>c")
; (gtk_accel_path "<Actions>/ThunarWindow/bookmarks-menu" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/forward-alt" "Forward")
; (gtk_accel_path "<Actions>/ThunarActionManager/move-to-trash" "")
; (gtk_accel_path "<Actions>/ThunarWindow/reload-alt-1" "F5")
; (gtk_accel_path "<Actions>/ThunarActionManager/delete-3" "<Shift>KP_Delete")
; (gtk_accel_path "<Actions>/ThunarStandardView/unselect-all-files" "Escape")
; (gtk_accel_path "<Actions>/ThunarWindow/contents/help-menu" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/arrange-items-menu" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-mtime" "")
; (gtk_accel_path "<Actions>/ThunarWindow/open-computer" "")
; (gtk_accel_path "<Actions>/ThunarWindow/toggle-image-preview" "")
; (gtk_accel_path "<Actions>/ThunarWindow/toggle-side-pane" "F9")
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-icons" "<Primary>1")
; (gtk_accel_path "<Actions>/ThunarActionManager/delete-2" "<Shift>Delete")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in" "<Primary>plus")
; (gtk_accel_path "<Actions>/ThunarStandardView/configure-columns" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/rename" "F2")
; (gtk_accel_path "<Actions>/ThunarWindow/open-location" "<Primary>l")
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-compact-list" "<Primary>3")
; (gtk_accel_path "<Actions>/ThunarWindow/view-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/search" "<Primary>f")
; (gtk_accel_path "<Actions>/ThunarWindow/new-tab" "<Primary>t")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-reset" "<Primary>0")
; (gtk_accel_path "<Actions>/ThunarStandardView/back-alt2" "Back")
; (gtk_accel_path "<Actions>/ThunarActionManager/open-in-new-tab" "<Primary><Shift>p")
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-buttons" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/redo" "<Primary><Shift>z")
; (gtk_accel_path "<Actions>/ThunarWindow/open-trash" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/open-in-new-window" "<Primary><Shift>o")
; (gtk_accel_path "<Actions>/ThunarWindow/view-statusbar" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/open-location" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/duplicate" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/trash-delete-2" "KP_Delete")
; (gtk_accel_path "<Actions>/ThunarStandardView/back-alt1" "BackSpace")
; (gtk_accel_path "<Actions>/ThunarStandardView/create-folder" "<Primary><Shift>n")
; (gtk_accel_path "<Actions>/ThunarWindow/open-home" "<Alt>Home")
; (gtk_accel_path "<Actions>/ThunarWindow/switch-focused-split-view-pane" "")
; (gtk_accel_path "<Actions>/ThunarWindow/show-hidden" "<Primary>h")
; (gtk_accel_path "<Actions>/ThunarStandardView/set-default-app" "")
; (gtk_accel_path "<Actions>/ThunarWindow/empty-trash" "")
; (gtk_accel_path "<Actions>/ThunarWindow/preferences" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/delete" "")
; (gtk_accel_path "<Actions>/ThunarWindow/open-network" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-tree" "<Primary>e")
; (gtk_accel_path "<Actions>/ThunarWindow/open-file-system" "")
; (gtk_accel_path "<Actions>/ThunarWindow/search-alt" "Search")
; (gtk_accel_path "<Actions>/ThunarWindow/switch-next-tab-alt" "<Primary>Tab")
; (gtk_accel_path "<Actions>/ThunarActionManager/sendto-desktop" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/make-link" "")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-reset-alt" "<Primary>KP_0")
; (gtk_accel_path "<Actions>/ThunarWindow/about" "")

59
config/Thunar/uca.xml Normal file
View File

@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<actions>
<action>
<icon>audacious</icon>
<name>Add to audacious playlist</name>
<submenu></submenu>
<unique-id>1681893052016505-1</unique-id>
<command>audacious -e %U</command>
<description></description>
<range>*</range>
<patterns>*</patterns>
<audio-files/>
</action>
<action>
<icon>utilities-terminal</icon>
<name>Open Terminal Here</name>
<submenu></submenu>
<unique-id>1703572977408169-1</unique-id>
<command>exo-open --working-directory %f --launch TerminalEmulator</command>
<description>Launch TerminalEmulator</description>
<range></range>
<patterns>*</patterns>
<startup-notify/>
<directories/>
</action>
<action>
<icon>checkbox</icon>
<name>Check sha1sum</name>
<submenu></submenu>
<unique-id>1526633271260079-26</unique-id>
<command>yad --info --title=&quot;Check sha1 for %n&quot; --text=&quot;$(sha1sum %f)&quot;</command>
<description>Check sha1sum</description>
<range></range>
<patterns>*.iso;*.ISO</patterns>
<other-files/>
</action>
<action>
<icon>checkbox</icon>
<name>Check sha256sum</name>
<submenu></submenu>
<unique-id>1577688162350307-1</unique-id>
<command>yad --info --title=&quot;Check sha256 for %n&quot; --text=&quot;$(sha256sum %f)&quot;</command>
<description>Check sha256sum</description>
<range></range>
<patterns>*.iso;*.ISO</patterns>
<other-files/>
</action>
<action>
<icon>checkbox</icon>
<name>Check md5sum</name>
<submenu></submenu>
<unique-id>1526736788575383-2</unique-id>
<command>yad --info --title=&quot;Check md5 for %n&quot; --text=&quot;$(md5sum %f)&quot;</command>
<description>Check md5sum</description>
<range></range>
<patterns>*.iso;*.ISO;*.tar.gz;*.TAR.GZ;*.zip;*.ZIP</patterns>
<other-files/>
</action>
</actions>

View File

@@ -9,6 +9,7 @@
import = [ import = [
"~/.config/alacritty/catppuccin-mocha.toml" "~/.config/alacritty/catppuccin-mocha.toml"
] ]
live_config_reload = true
[font] [font]
# Schriftgröße # Schriftgröße
@@ -33,7 +34,7 @@ padding = { x = 10, y = 10 }
# Hintergrund-Transparenz (Opacity) # Hintergrund-Transparenz (Opacity)
# 1.0 ist komplett undurchsichtig, 0.0 ist komplett durchsichtig. # 1.0 ist komplett undurchsichtig, 0.0 ist komplett durchsichtig.
opacity = 0.95 opacity = 0.4
# Entfernt die Standard-Fensterdekoration (Titelleiste) # Entfernt die Standard-Fensterdekoration (Titelleiste)
# In Sway ist das oft gewünscht, da Sway die Fenster verwaltet. # In Sway ist das oft gewünscht, da Sway die Fenster verwaltet.

View File

@@ -10,3 +10,7 @@ scrolling:
font: font:
# Schriftgröße # Schriftgröße
size: 14.0 size: 14.0
# Fenster-Transparenz
window:
background_opacity: 0.8

BIN
config/fastfetch/arch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

View File

@@ -0,0 +1,75 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"source": "~/.config/fastfetch/arch.png",
"type": "kitty-direct",
"height": 10,
"width": 20,
"padding": {
"top": 1
}
},
"display": {
"separator": " -> "
},
"modules": [
"break",
{
"type": "title",
"keyWidth": 10,
"format": " {6}{7}{8}"
},
{
"type": "custom",
"format": " ─────────────────────────── "
},
{
"type": "kernel",
"key": " ",
"keyColor": "yellow"
},
{
"type": "wm",
"key": " ",
"keyColor": "blue"
},
{
"type": "shell",
"key": " ",
"keyColor": "yellow"
},
{
"type": "terminal",
"key": " ",
"keyColor": "blue"
},
/*
{
"type": "packages",
"key": "󰏖 ",
"keyColor": "yellow"
},
*/
{
"type": "memory",
"key": "󰍛 ",
"keyColor": "magenta",
// format: used / total
"format": "{1} / {2}"
},
{
"type": "uptime",
"key": "󰔛 ",
"keyColor": "green"
},
{
"type": "custom",
"format": " ─────────────────────────── "
},
{
"type": "custom",
"format": " \u001b[31m \u001b[32m \u001b[33m \u001b[34m \u001b[35m \u001b[36m \u001b[37m \u001b[90m "
},
"break",
]
}

View File

@@ -0,0 +1,73 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"height": 5,
"width": 10,
"padding": {
"top": 1
}
},
"display": {
"separator": " -> "
},
"modules": [
"break",
{
"type": "title",
"keyWidth": 10,
"format": " {6}{7}{8}"
},
{
"type": "custom",
"format": " ─────────────────────────── "
},
{
"type": "kernel",
"key": " ",
"keyColor": "yellow"
},
{
"type": "wm",
"key": " ",
"keyColor": "blue"
},
{
"type": "shell",
"key": " ",
"keyColor": "yellow"
},
{
"type": "terminal",
"key": " ",
"keyColor": "blue"
},
/*
{
"type": "packages",
"key": "󰏖 ",
"keyColor": "yellow"
},
*/
{
"type": "memory",
"key": "󰍛 ",
"keyColor": "magenta",
// format: used / total
"format": "{1} / {2}"
},
{
"type": "uptime",
"key": "󰔛 ",
"keyColor": "green"
},
{
"type": "custom",
"format": " ─────────────────────────── "
},
{
"type": "custom",
"format": " \u001b[31m \u001b[32m \u001b[33m \u001b[34m \u001b[35m \u001b[36m \u001b[37m \u001b[90m "
},
"break",
]
}

View File

@@ -0,0 +1,112 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
//"source": "~/.config/fastfetch/nixos.png",
//"type": "kitty-direct",
"height": 15,
"width": 30,
"padding": {
"top": 1
}
},
"display": {
"separator": " ➜ "
},
"modules": [
"break",
{
"type": "os",
"key": " DISTRO",
"keyColor": "31",
},
{
"type": "kernel",
"key": " ├  ",
"keyColor": "31",
},
{
"type": "packages",
"key": " ├ 󰏖 ",
"keyColor": "31",
},
{
"type": "shell",
"key": " └  ",
"keyColor": "31",
},
"break",
{
"type": "wm",
"key": " DE/WM",
"keyColor": "32",
},
{
"type": "wmtheme",
"key": " ├ 󰉼 ",
"keyColor": "32",
},
{
"type": "icons",
"key": " ├ 󰀻 ",
"keyColor": "32",
},
{
"type": "cursor",
"key": " ├  ",
"keyColor": "32",
},
{
"type": "terminal",
"key": " ├  ",
"keyColor": "32",
},
{
"type": "terminalfont",
"key": " └  ",
"keyColor": "32",
},
"break",
{
"type": "host",
"format": "{2}",
"key": "󰌢 SYSTEM",
"keyColor": "33",
},
{
"type": "cpu",
"format": "{1} ({3}) @ {7} GHz",
"key": " ├  ",
"keyColor": "33",
},
{
"type": "gpu",
"format": "{2}",
"key": " ├ 󰢮 ",
"keyColor": "33",
},
{
"type": "memory",
"key": " ├  ",
"keyColor": "33",
},
{
"type": "swap",
"key": " ├ 󰓡 ",
"keyColor": "33",
},
{
"type": "disk",
"key": " ├ 󰋊 ",
"keyColor": "33",
},
{
"type": "display",
"key": " └  ",
"compactType": "original-with-refresh-rate",
"keyColor": "33",
},
"break",
"break",
]
}

View File

@@ -0,0 +1,128 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"padding": {
"top": 1
}
},
"display": {
"separator": " 󰑃 "
},
"modules": [
"break",
{
"type": "os",
"key": " DISTRO",
"keyColor": "yellow"
},
{
"type": "kernel",
"key": "│ ├",
"keyColor": "yellow"
},
{
"type": "packages",
"key": "│ ├󰏖",
"keyColor": "yellow"
},
{
"type": "shell",
"key": "│ └",
"keyColor": "yellow"
},
{
"type": "wm",
"key": " DE/WM",
"keyColor": "blue"
},
{
"type": "wmtheme",
"key": "│ ├󰉼",
"keyColor": "blue"
},
{
"type": "icons",
"key": "│ ├󰀻",
"keyColor": "blue"
},
{
"type": "cursor",
"key": "│ ├",
"keyColor": "blue",
},
{
"type": "terminalfont",
"key": "│ ├",
"keyColor": "blue",
},
{
"type": "terminal",
"key": "│ └",
"keyColor": "blue"
},
{
"type": "host",
"key": "󰌢 SYSTEM",
"keyColor": "green"
},
{
"type": "cpu",
"key": "│ ├󰻠",
"keyColor": "green"
},
{
"type": "gpu",
"key": "│ ├󰻑",
"format": "{2}",
"keyColor": "green"
},
{
"type": "display",
"key": "│ ├󰍹",
"keyColor": "green",
"compactType": "original-with-refresh-rate"
},
{
"type": "memory",
"key": "│ ├󰾆",
"keyColor": "green"
},
{
"type": "swap",
"key": "│ ├󰓡",
"keyColor": "green"
},
{
"type": "uptime",
"key": "│ ├󰅐",
"keyColor": "green"
},
{
"type": "display",
"key": "│ └󰍹",
"keyColor": "green"
},
{
"type": "sound",
"key": " AUDIO",
"format": "{2}",
"keyColor": "magenta"
},
{
"type": "player",
"key": "│ ├󰥠",
"keyColor": "magenta"
},
{
"type": "media",
"key": "│ └󰝚",
"keyColor": "magenta"
},
{
"type": "custom",
"format": "\u001b[90m \u001b[31m \u001b[32m \u001b[33m \u001b[34m \u001b[35m \u001b[36m \u001b[37m \u001b[38m \u001b[39m \u001b[39m  \u001b[38m \u001b[37m \u001b[36m \u001b[35m \u001b[34m \u001b[33m \u001b[32m \u001b[31m \u001b[90m "
},
"break",
]
}

View File

@@ -0,0 +1,40 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/master/doc/json_schema.json",
"modules": [
"title",
"separator",
"os",
"host",
"kernel",
"uptime",
"shell",
"display",
"de",
"cpu",
"gpu",
"memory",
"swap",
"disk",
"wifi",
"localip",
//"publicip",
//"dns",
"poweradapter"
],
"logo": {
"type": "auto", // Logo type: auto, builtin, small, file, etc.
"source": "manjaro", // Built-in logo name or file path
// "width": 40, // Width in characters
// "height": 15, // Height in characters
// "padding": {
// "top": 0, // Top padding
// "left": 0, // Left padding
// "right": 2 // Right padding
// },
"color": { // Override logo colors
"1": "blue",
"2": "green"
}
}
}

View File

@@ -0,0 +1,7 @@
# Path to Oh My Fish install.
set -q XDG_DATA_HOME
and set -gx OMF_PATH "$XDG_DATA_HOME/omf"
or set -gx OMF_PATH "$HOME/.local/share/omf"
# Load Oh My Fish configuration.
source $OMF_PATH/init.fish

15
config/fish/config.fish Normal file
View File

@@ -0,0 +1,15 @@
if status is-interactive
# Commands to run in interactive sessions can go here
end
# ===================================================================
# Automatische Helligkeit für externen Monitor
# Setzt den externen Monitor auf 100% Helligkeit, wenn er erkannt wird.
# ===================================================================
if command -v ddcutil >/dev/null 2>&1
# Prüft, ob der spezifische Monitor (Acer XB273K GP an card1-DP-3) angeschlossen ist.
if ddcutil detect | grep -q "card1-DP-3"
# Befehl im Hintergrund ausführen, um den Shell-Start nicht zu blockieren.
ddcutil --display 1 setvcp 10 100 >/dev/null 2>&1 &
end
end

View File

@@ -0,0 +1,32 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:3800
SETUVAR fish_color_autosuggestion:brblack
SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:normal
SETUVAR fish_color_comment:red
SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:green
SETUVAR fish_color_error:brred
SETUVAR fish_color_escape:brcyan
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:brcyan
SETUVAR fish_color_param:cyan
SETUVAR fish_color_quote:yellow
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_greeting:Hallo\x20du\x20kleiner\x20Fish
SETUVAR fish_key_bindings:fish_default_key_bindings
SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:yellow\x1e\x2di
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr

View File

@@ -0,0 +1,30 @@
function fish_prompt --description 'Prompt ausgeben'
set -l last_status $status
set -l normal (set_color normal)
set -l status_color (set_color brgreen)
set -l cwd_color (set_color $fish_color_cwd)
set -l vcs_color (set_color brpurple)
set -l prompt_status ""
# Since we display the prompt on a new line allow the directory names to be longer.
set -q fish_prompt_pwd_dir_length
or set -lx fish_prompt_pwd_dir_length 0
# Color the prompt differently when we're root
set -l suffix ''
if functions -q fish_is_root_user; and fish_is_root_user
if set -q fish_color_cwd_root
set cwd_color (set_color $fish_color_cwd_root)
end
set suffix '#'
end
# Color the prompt in red on error
if test $last_status -ne 0
set status_color (set_color $fish_color_error)
set prompt_status $status_color "[" $last_status "]" $normal
end
echo -s (prompt_login) ' ' $cwd_color (prompt_pwd) $vcs_color (fish_vcs_prompt) $normal ' ' $prompt_status
echo -n -s $status_color $suffix ' ' $normal
end

64
config/htop/htoprc Normal file
View File

@@ -0,0 +1,64 @@
# Beware! This file is rewritten by htop when settings are changed in the interface.
# The parser is also very primitive, and not human-friendly.
htop_version=3.4.1-3.4.1
config_reader_min_version=3
fields=0 48 17 18 38 39 40 2 46 47 49 1
hide_kernel_threads=1
hide_userland_threads=0
hide_running_in_container=0
shadow_other_users=0
show_thread_names=0
show_program_path=1
highlight_base_name=0
highlight_deleted_exe=1
shadow_distribution_path_prefix=0
highlight_megabytes=1
highlight_threads=1
highlight_changes=0
highlight_changes_delay_secs=5
find_comm_in_cmdline=1
strip_exe_from_cmdline=1
show_merged_command=0
header_margin=1
screen_tabs=1
detailed_cpu_time=0
cpu_count_from_one=0
show_cpu_usage=1
show_cpu_frequency=0
show_cpu_temperature=0
degree_fahrenheit=0
show_cached_memory=1
update_process_names=0
account_guest_in_cpu_meter=0
color_scheme=0
enable_mouse=1
delay=15
hide_function_bar=0
header_layout=two_50_50
column_meters_0=LeftCPUs Memory Swap
column_meter_modes_0=1 1 1
column_meters_1=RightCPUs Tasks LoadAverage Uptime
column_meter_modes_1=1 2 2 2
tree_view=1
sort_key=46
tree_sort_key=46
sort_direction=-1
tree_sort_direction=-1
tree_view_always_by_pid=0
all_branches_collapsed=0
screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT M_SHARE STATE PERCENT_CPU PERCENT_MEM TIME Command
.sort_key=PERCENT_CPU
.tree_sort_key=PERCENT_CPU
.tree_view_always_by_pid=0
.tree_view=1
.sort_direction=-1
.tree_sort_direction=-1
.all_branches_collapsed=0
screen:I/O=PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE PERCENT_SWAP_DELAY PERCENT_IO_DELAY Command
.sort_key=IO_RATE
.tree_sort_key=PID
.tree_view_always_by_pid=0
.tree_view=0
.sort_direction=-1
.tree_sort_direction=1
.all_branches_collapsed=0

37
config/mpd/mpd.conf Normal file
View File

@@ -0,0 +1,37 @@
# Recommended location for database
db_file "/home/jonnybravo/.config/mpd/database"
# If you want to log messages to a file
log_file "/home/jonnybravo/.config/mpd/log"
# The music directory is by default the home directory.
music_directory "/home/jonnybravo/Musik"
# If you want to support playlists
playlist_directory "/home/jonnybravo/.config/mpd/playlists"
# A unique name for this MPD server
pid_file "/home/jonnybravo/.config/mpd/pid"
state_file "/home/jonnybravo/.config/mpd/state"
sticker_file "/home/jonnybravo/.config/mpd/sticker.sql"
bind_to_address "127.0.0.1"
port "6601"
audio_output {
type "pipewire"
name "PipeWire Sound Server"
}
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mpd.fifo"
format "44100:16:2"
}
decoder {
plugin "wildmidi"
enabled "no"
}

19
config/ncmpcpp/config Normal file
View File

@@ -0,0 +1,19 @@
mpd_host = "127.0.0.1"
mpd_port = "6601"
mpd_connection_timeout = "5"
colors_enabled = "yes"
# Progressbar
progressbar_look = "━━"
current_item_prefix = "▶ "
current_item_suffix = ""
# Layout
song_status_format = "%a - %t"
song_columns_list_format = "(50)[]{t|a} (50)[]{b}"
playlist_display_mode = "columns"
header_visibility = "yes"
statusbar_visibility = "yes"
titles_visibility = "yes"

0
config/ncmpcpp/error.log Normal file
View File

View File

@@ -0,0 +1,7 @@
[nextcloud]
type = webdav
url = https://nextcloud.schlaubistechtalk.de/remote.php/dav/files/JonnyBravo/
vendor = nextcloud
user = JonnyBravo
pass = sRF3pKvZMWmo6ZhchVtPaaa0NG5CFG-AdjeXy-zTdW0os6tIDsOHkzL-48Q6

View File

@@ -34,6 +34,7 @@ set $lock swaylock -f -c 000000
# Schriftart für Fenstertitel # Schriftart für Fenstertitel
font pango:DejaVu Sans Mono 12 font pango:DejaVu Sans Mono 12
default_border pixel 2
# Home-Row-Richtungstasten (wie in Vim) # Home-Row-Richtungstasten (wie in Vim)
set $left h set $left h
@@ -44,15 +45,14 @@ set $right l
# ============================================================================= # =============================================================================
# Ausgabekonfiguration (Monitore & Hintergrund) # Ausgabekonfiguration (Monitore & Hintergrund)
# ============================================================================= # =============================================================================
# Standard-Hintergrundbild # Standard-Hintergrundbild (ersetzt durch swww)
output * bg ~/Bilder/wallpapersden.com_astronaut-with-jellyfish_2560x1440.jpg fill output * bg ~/Bilder/wallpapersden.com_astronaut-with-jellyfish_2560x1440.jpg fill
# Gaps (Lücken zwischen Fenstern) # Gaps (Lücken zwischen Fenstern)
# Alte Konfiguration auskommentiert: # Alte Konfiguration auskommentiert:
# gaps inner 10 # gaps inner 10
# gaps outer 5 # gaps outer 5
gaps inner 10 gaps outer 0
gaps outer 5
smart_gaps on smart_gaps on
# #
@@ -259,12 +259,20 @@ bindsym Shift+Print exec grim -g "$(slurp)" ~/Bilder/screenshot-$(date +%Y%m%d-%
# ============================================================================= # =============================================================================
# Autostart-Anwendungen # Autostart-Anwendungen
# ============================================================================= # =============================================================================
exec waybar # Startet den Wallpaper-Manager
# exec mpvpaper -o "loop" DP-3 /home/jonnybravo/Bilder/270983_large.mp4
# exec waybar # Original command commented out
exec sleep 1 && waybar # Start Waybar with a 1-second delay
exec mako --config ~/.config/mako/config exec mako --config ~/.config/mako/config
# Startet den Display-Manager für automatische Profile # Startet den Display-Manager für automatische Profile
exec kanshi exec kanshi
# Startet einen Clipboard-Manager (clipman muss installiert sein) # Startet einen Clipboard-Manager (clipman muss installiert sein)
exec wl-paste --watch clipman store exec wl-paste --watch clipman store
# Startet udiskie für Automounting
exec udiskie &
# Startet das Skript für die automatische Bluetooth-Verbindung
exec /home/jonnybravo/.config/sway/scripts/auto-bluetooth.sh &
# Alter Code auskommentiert: # Alter Code auskommentiert:
# # Optional: Startet einen Clipboard-Manager (Zwischenablage-Verlauf) # # Optional: Startet einen Clipboard-Manager (Zwischenablage-Verlauf)
@@ -293,8 +301,12 @@ exec swayidle -w \
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Spezifische Programme auf Workspaces zuweisen # Spezifische Programme auf Workspaces zuweisen
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Brave Browser immer auf Workspace 2 starten # Brave Browser startet auf Workspace 2 (nicht schwebend)
for_window [app_id="brave-browser"] move to workspace $ws2 for_window [app_id="brave-browser"] move to workspace $ws2
# floating enable
# Firefox als schwebendes Fenster
for_window [app_id="firefox"] floating enable
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Bestimmte Fenster automatisch schweben lassen # Bestimmte Fenster automatisch schweben lassen
@@ -312,4 +324,11 @@ for_window [app_id="systemsettings"] floating enable
# Qalculate! (GTK Taschenrechner) # Qalculate! (GTK Taschenrechner)
for_window [app_id="qalculate-gtk"] floating enable, resize set 400px 600px for_window [app_id="qalculate-gtk"] floating enable, resize set 400px 600px
# pulseaudio Einstellungen!
for_window [app_id="org.pulseaudio.pavucontrol"] floating enable, resize set 800px 600px
# VLC als schwebendes Fenster
for_window [class="vlc"] floating enable, resize set 800px 450px, position center
# Thunar als schwebendes Fenster
for_window [app_id="thunar"] floating enable, resize set 1000px 700px, position center

View File

@@ -0,0 +1,12 @@
#!/bin/sh
# Skript zum automatischen Verbinden von Bluetooth-Geräten beim Start
# Eine kurze Pause, um sicherzustellen, dass der Bluetooth-Dienst vollständig gestartet ist
sleep 10
# Verwendung eines Here-Dokuments, um Befehle an bluetoothctl zu senden
bluetoothctl <<EOF
connect 14:3F:A6:26:A8:FC
connect AC:80:0A:22:DD:86
exit
EOF

View File

@@ -0,0 +1 @@
/usr/lib/systemd/user/pipewire.service

View File

@@ -0,0 +1,10 @@
[Unit]
Description=Music Player Daemon
After=network.target sound.target
[Service]
ExecStart=/usr/bin/mpd
Restart=on-failure
[Install]
WantedBy=default.target

View File

@@ -0,0 +1 @@
/usr/lib/systemd/user/wireplumber.service

View File

@@ -0,0 +1 @@
/usr/lib/systemd/user/wireplumber.service

View File

@@ -0,0 +1,11 @@
[Unit]
Description=Rclone sync service for Nextcloud
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/bin/rclone sync /home/jonnybravo/Nextcloud nextcloud: --include "ssh_keys/**" --include "Doku/**" --include "Hack/**" --include "Joplin/**" --include "frei/**" --log-file /home/jonnybravo/.local/share/rclone/rclone-sync.log --log-level INFO
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,10 @@
[Unit]
Description=Run rclone sync every 15 minutes
[Timer]
OnBootSec=2min
OnUnitActiveSec=15min
Unit=rclone-sync.service
[Install]
WantedBy=timers.target

View File

@@ -0,0 +1 @@
/usr/lib/systemd/user/pipewire-pulse.socket

View File

@@ -0,0 +1 @@
/usr/lib/systemd/user/pipewire.socket

View File

@@ -0,0 +1 @@
/home/jonnybravo/.config/systemd/user/rclone-sync.timer

Submodule config/tmux/plugin/catppuccin added at d6458527ef

Submodule config/tmux/plugins/catppuccin/tmux added at d6458527ef

Submodule config/tmux/plugins/tmux-plugins/tmux-battery added at 91b05110cc

Submodule config/tmux/plugins/tmux-plugins/tmux-cpu added at bcb110d754

View File

@@ -2,33 +2,30 @@
"layer": "top", "layer": "top",
"position": "top", "position": "top",
"height": 35, "height": 35,
"modules-left": ["sway/workspaces", "sway/mode"], "modules-left": ["sway/workspaces", "mpd", "sway/mode"],
"modules-center": ["clock"], "modules-center": ["clock"],
"modules-right": ["mpris", "tray", "pulseaudio", "custom/bluetooth", "network", "cpu", "memory", "sway/window", "idle_inhibitor", "custom/power"], "modules-right": ["custom/updates", "tray", "pulseaudio", "custom/bluetooth", "custom/vpn", "network", "custom/rclone", "cpu", "memory", "temperature", "sway/window", "idle_inhibitor"],
"mpris": {
"format": "{player_icon} {dynamic}",
"format-paused": "{player_icon}  {dynamic}",
"player-icons": {
"default": "🎵",
"kew": "🎧"
},
"tooltip-format": "Titel: {title}\nAlbum: {album}\nKünstler: {artist}",
"max-length": 30,
"on-click": "playerctl play-pause",
"on-scroll-up": "playerctl next",
"on-scroll-down": "playerctl previous"
},
"tray": { "tray": {
"icon-size": 16, "icon-size": 16,
"spacing": 10 "spacing": 10,
"excluded-icons": ["Nextcloud"]
}, },
"custom/power": { "mpd": {
"format": "", "format": "{stateIcon}",
"tooltip": false, "format-disconnected": "MPD nicht verbunden",
"on-click": "~/.config/waybar/power.sh" "format-stopped": "",
"state-icons": {
"playing": "",
"paused": ""
},
"port": 6601,
"tooltip-delay": 0,
"tooltip-format": "{title} ({elapsedTime:%M:%S}/{totalTime:%M:%S})",
"on-click": "mpc -p 6601 toggle",
"on-scroll-up": "mpc -p 6601 prev",
"on-scroll-down": "mpc -p 6601 next"
}, },
"custom/bluetooth": { "custom/bluetooth": {
@@ -39,6 +36,12 @@
"on-click": "~/.config/waybar/bluetooth.sh" "on-click": "~/.config/waybar/bluetooth.sh"
}, },
"custom/vpn": {
"format": "{}",
"exec": "~/.config/waybar/vpn-status.sh",
"interval": 5
},
"sway/workspaces": { "sway/workspaces": {
"disable-scroll": true, "disable-scroll": true,
"all-outputs": true, "all-outputs": true,
@@ -60,11 +63,17 @@
"cpu": { "cpu": {
"format": " {usage}%", "format": " {usage}%",
"tooltip": true, "tooltip": true,
"interval": 1 "interval": 4
}, },
"memory": { "memory": {
"format": " {}%", "format": " {}%",
"interval": 1 "interval": 4
},
"temperature": {
"hwmon-path": "/sys/class/hwmon/hwmon5/temp1_input",
"format": " {temperatureC}°C",
"critical-threshold": 90,
"interval": 4
}, },
"network": { "network": {
"format-wifi": " {essid}", "format-wifi": " {essid}",
@@ -74,9 +83,18 @@
"tooltip-format": "{ifname} via {gwaddr} ", "tooltip-format": "{ifname} via {gwaddr} ",
"on-click": "alacritty -e iwctl" "on-click": "alacritty -e iwctl"
}, },
"custom/rclone": {
"format": "{}",
"exec": "~/.config/waybar/rclone-status.sh",
"interval": 10
},
"pulseaudio": { "pulseaudio": {
"reverse-scrolling": 1,
"format": "{icon} {volume}%", "format": "{icon} {volume}%",
"format-muted": "", "format-muted": "",
"tooltip-format": "Gerät: {desc}",
"format-icons": { "format-icons": {
"headphone": "", "headphone": "",
"hands-free": "", "hands-free": "",
@@ -90,6 +108,14 @@
"on-click-right": "pactl set-sink-mute @DEFAULT_SINK@ toggle" "on-click-right": "pactl set-sink-mute @DEFAULT_SINK@ toggle"
}, },
"custom/updates": {
"format": "{}",
"exec": "~/.config/waybar/updates.sh",
"interval": 3600,
"tooltip": true,
"on-click": "alacritty -e sudo pacman -Syu"
},
"idle_inhibitor": { "idle_inhibitor": {
"format": "{icon}", "format": "{icon}",
"format-icons": { "format-icons": {

33
config/waybar/rclone-status.sh Executable file
View File

@@ -0,0 +1,33 @@
#!/bin/bash
# Default error state
ICON=""
TEXT="Unknown"
# Check for DBUS session
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
TEXT="No D-Bus"
else
# Check if the service is active (syncing)
if systemctl --user is-active --quiet rclone-sync.service; then
ICON=""
TEXT="Sync..."
else
# Check if the service file exists/is loaded
if ! systemctl --user list-units --all | grep -q "rclone-sync.service"; then
TEXT="No Service"
else
LAST_STATUS=$(systemctl --user show rclone-sync.service -p ExecMainStatus --value)
if [ "$LAST_STATUS" == "0" ]; then
ICON=""
TEXT="OK"
else
ICON=""
TEXT="Fehler"
fi
fi
fi
fi
# Output a single line of plain text
printf "%s %s\n" "$ICON" "$TEXT"

View File

@@ -7,7 +7,7 @@
} }
window#waybar { window#waybar {
background-color: rgba(30, 30, 46, 0.85); /* Base with transparency */ background-color: rgba(30, 30, 46, 0.65); /* Base with transparency */
color: #cdd6f4; /* Text */ color: #cdd6f4; /* Text */
transition-property: background-color; transition-property: background-color;
transition-duration: .5s; transition-duration: .5s;
@@ -20,12 +20,17 @@ window#waybar {
#clock, #clock,
#cpu, #cpu,
#memory, #memory,
#temperature,
#network, #network,
#pulseaudio, #pulseaudio,
#custom-bluetooth, #custom-bluetooth,
#custom-power, #custom-power,
#window, #window,
#mpris { #mpris,
#custom-rclone,
#custom-updates,
#custom-vpn,
#mpd {
padding: 2px 10px; padding: 2px 10px;
margin: 3px 3px; margin: 3px 3px;
border-radius: 10px; border-radius: 10px;
@@ -80,6 +85,15 @@ window#waybar {
color: #1e1e2e; /* Base */ color: #1e1e2e; /* Base */
} }
#temperature {
background-color: #a6e3a1; /* Green */
color: #1e1e2e; /* Base */
}
#temperature.critical {
background-color: #f38ba8; /* Red */
}
#network { #network {
background-color: #f9e2af; /* Yellow */ background-color: #f9e2af; /* Yellow */
color: #1e1e2e; /* Base */ color: #1e1e2e; /* Base */
@@ -95,13 +109,18 @@ window#waybar {
color: #1e1e2e; /* Base */ color: #1e1e2e; /* Base */
} }
#mpd {
background-color: #f5e0dc; /* Rosewater */
color: #1e1e2e; /* Base */
}
#window { #window {
font-weight: bold; font-weight: bold;
color: #cdd6f4; /* Text */ color: #cdd6f4; /* Text */
} }
/* Hover-Effekt für alle Module */ /* Hover-Effekt für alle Module */
#workspaces:hover, #mode:hover, #clock:hover, #cpu:hover, #memory:hover, #network:hover, #pulseaudio:hover, #custom-bluetooth:hover, #custom-power:hover { #workspaces:hover, #mode:hover, #clock:hover, #cpu:hover, #memory:hover, #network:hover, #pulseaudio:hover, #custom-bluetooth:hover, #custom-power:hover, #mpd:hover {
background-color: rgba(88, 91, 112, 0.9); /* Surface2 with transparency */ background-color: rgba(88, 91, 112, 0.9); /* Surface2 with transparency */
} }
@@ -116,3 +135,30 @@ window#waybar {
#idle_inhibitor.activated { #idle_inhibitor.activated {
background-color: #a6e3a1; /* Green */ background-color: #a6e3a1; /* Green */
} }
#custom-rclone {
background-color: #89b4fa; /* Blue */
color: #1e1e2e; /* Base */
}
#custom-updates {
background-color: #fab387; /* Orange */
color: #1e1e2e; /* Base */
}
#custom-vpn {
background-color: #89b4fa; /* Blue */
color: #1e1e2e; /* Base */
}
#tooltip {
background-color: #1e1e2e; /* Base */
color: #cdd6f4; /* Text */
border-radius: 10px;
padding: 5px 10px;
border: 1px solid #313244; /* Surface0 */
}
#tooltip label {
color: #cdd6f4; /* Text */
}

18
config/waybar/updates.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/sh
# Führt checkupdates aus und fängt die Ausgabe ab
updates=$(checkupdates)
# Prüft, ob die Ausgabe von checkupdates nicht leer ist
if [ -n "$updates" ]; then
# Zählt die Anzahl der verfügbaren Updates
num_updates=$(echo "$updates" | wc -l)
# Erstellt einen Tooltip mit den Paketnamen
tooltip=$(echo "$updates" | sed 's/ -> / /')
# Gibt das JSON-Format für Waybar aus
printf '{"text": " %s", "tooltip": "%s"}\n' "$num_updates" "$tooltip"
else
# Gibt nichts aus, damit Waybar das Modul verbirgt
exit 0
fi

12
config/waybar/vpn-status.sh Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
# This script checks for a WireGuard interface.
WG_INTERFACE="wg0"
if ip link show "$WG_INTERFACE" &> /dev/null; then
# If the interface exists, VPN is on.
printf " VPN On\n"
else
# If not, VPN is off.
printf " VPN Off\n"
fi

Binary file not shown.

After

Width:  |  Height:  |  Size: 777 KiB

View File

@@ -1,7 +1,7 @@
- name: Deploy Sway Configuration - name: Deploy Sway Configuration
hosts: localhost hosts: localhost
connection: local connection: local
become: true # Run the entire playbook with elevated privileges become: true
vars: vars:
target_user: jonnybravo target_user: jonnybravo
@@ -26,53 +26,127 @@
- playerctl - playerctl
- qalculate-gtk - qalculate-gtk
- tmux - tmux
- rclone
- pacman-contrib
- udisks2
- udiskie
- mpd
- ncmpcpp
- ttf-dejavu
- otf-font-awesome
- papirus-icon-theme
- nwg-look
state: present state: present
- name: Ensure .config directory exists for target user - name: Check if yay is installed
ansible.builtin.file: ansible.builtin.command: "which yay"
path: "/home/{{ target_user }}/.config" register: yay_check
state: directory changed_when: false
owner: "{{ target_user }}" ignore_errors: true
group: "{{ target_user }}"
mode: '0755'
- name: Ensure .config subdirectories exist - name: Install AUR packages with yay
ansible.builtin.command: "yay -S --noconfirm tty-clock catppuccin-gtk-theme-mocha"
when: yay_check.rc == 0
become: true
become_user: "{{ target_user }}"
- name: Add user to storage group
ansible.builtin.user:
name: "{{ target_user }}"
groups: storage
append: true
notify:
- Reboot required for group changes
- name: Create required directories
ansible.builtin.file: ansible.builtin.file:
path: "/home/{{ target_user }}/.config/{{ item }}" path: "{{ item }}"
state: directory state: directory
owner: "{{ target_user }}" owner: "{{ target_user }}"
group: "{{ target_user }}" group: "{{ target_user }}"
mode: '0755' mode: '0755'
loop: loop:
- sway - "/home/{{ target_user }}/.config/sway"
- waybar - "/home/{{ target_user }}/.config/sway/scripts"
- mako - "/home/{{ target_user }}/.config/waybar"
- wofi - "/home/{{ target_user }}/.config/mako"
- alacritty - "/home/{{ target_user }}/.config/wofi"
- kanshi - "/home/{{ target_user }}/.config/alacritty"
- "/home/{{ target_user }}/.config/kanshi"
- "/home/{{ target_user }}/.config/rclone"
- "/home/{{ target_user }}/.config/systemd/user"
- "/home/{{ target_user }}/.config/mpd"
- "/home/{{ target_user }}/.config/ncmpcpp"
- name: Copy all config files - name: Copy configuration files
ansible.builtin.copy: ansible.builtin.copy:
src: "{{ playbook_dir }}/config/{{ item.path }}" src: "{{ playbook_dir }}/{{ item.src }}"
dest: "/home/{{ target_user }}/.config/{{ item.path }}" dest: "/home/{{ target_user }}/{{ item.dest }}"
owner: "{{ target_user }}" owner: "{{ target_user }}"
group: "{{ target_user }}" group: "{{ target_user }}"
mode: '0644' mode: '0644'
loop: loop:
- { path: 'sway/config' } - { src: 'config/sway/config', dest: '.config/sway/config' }
- { path: 'waybar/config' } - { src: 'config/waybar/config', dest: '.config/waybar/config' }
- { path: 'waybar/style.css' } - { src: 'config/waybar/style.css', dest: '.config/waybar/style.css' }
- { path: 'mako/config' } - { src: 'config/mako/config', dest: '.config/mako/config' }
- { path: 'wofi/config' } - { src: 'config/wofi/config', dest: '.config/wofi/config' }
- { path: 'alacritty/alacritty.toml' } - { src: 'config/alacritty/alacritty.toml', dest: '.config/alacritty/alacritty.toml' }
- { path: 'alacritty/alacritty.yml' } - { src: 'config/alacritty/alacritty.yml', dest: '.config/alacritty/alacritty.yml' }
- { path: 'alacritty/catppuccin-mocha.toml' } - { src: 'config/alacritty/catppuccin-mocha.toml', dest: '.config/alacritty/catppuccin-mocha.toml' }
- { path: 'kanshi/config' } - { src: 'config/kanshi/config', dest: '.config/kanshi/config' }
- { src: 'config/rclone/rclone.conf', dest: '.config/rclone/rclone.conf' }
- { src: '.tmux.conf', dest: '.tmux.conf' }
- { src: 'config/systemd/user/rclone-sync.service', dest: '.config/systemd/user/rclone-sync.service' }
- { src: 'config/systemd/user/rclone-sync.timer', dest: '.config/systemd/user/rclone-sync.timer' }
- { src: 'config/mpd/mpd.conf', dest: '.config/mpd/mpd.conf' }
- { src: 'config/ncmpcpp', dest: '.config/ncmpcpp' }
- { src: 'config/systemd/user/mpd.service', dest: '.config/systemd/user/mpd.service' }
- name: Copy Tmux config to home directory - name: Copy background image
ansible.builtin.copy: ansible.builtin.copy:
src: "{{ playbook_dir }}/.tmux.conf" src: "{{ playbook_dir }}/media/wallpapersden.com_astronaut-with-jellyfish_2560x1440.jpg"
dest: "/home/{{ target_user }}/.tmux.conf" dest: "/home/{{ target_user }}/Bilder/wallpapersden.com_astronaut-with-jellyfish_2560x1440.jpg"
owner: "{{ target_user }}" owner: "{{ target_user }}"
group: "{{ target_user }}" group: "{{ target_user }}"
mode: '0644' mode: '0644'
- name: Copy and make waybar scripts executable
ansible.builtin.copy:
src: "{{ playbook_dir }}/config/waybar/{{ item }}"
dest: "/home/{{ target_user }}/.config/waybar/{{ item }}"
owner: "{{ target_user }}"
group: "{{ target_user }}"
mode: '0755'
loop:
- "updates.sh"
- "vpn-status.sh"
- "rclone-status.sh"
- name: Copy and make sway scripts executable
ansible.builtin.copy:
src: "{{ playbook_dir }}/config/sway/scripts/auto-bluetooth.sh"
dest: "/home/{{ target_user }}/.config/sway/scripts/auto-bluetooth.sh"
owner: "{{ target_user }}"
group: "{{ target_user }}"
mode: '0755'
- name: Reload systemd daemon for the target user
ansible.builtin.command: "systemctl --user daemon-reload"
become: true
become_user: "{{ target_user }}"
- name: Enable and start the rclone timer for the target user
ansible.builtin.command: "systemctl --user enable --now rclone-sync.timer"
become: true
become_user: "{{ target_user }}"
- name: Enable and start mpd service for the target user
ansible.builtin.command: "systemctl --user enable --now mpd.service"
become: true
become_user: "{{ target_user }}"
handlers:
- name: Reboot required for group changes
ansible.builtin.debug:
msg: "User '{{ target_user }}' was added to the 'storage' group. A reboot or re-login is required for changes to take effect."