Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8f1d3cc383 | |||
| a008bd33b1 | |||
| 31caf2c391 | |||
| 1b31f4dd4d | |||
| 06f4d43e7e | |||
| a8c152e766 | |||
| 39b78f3b43 | |||
| 1b7077d75b |
37
.zshrc
37
.zshrc
@ -14,31 +14,22 @@ plug "zsh-users/zsh-syntax-highlighting"
|
|||||||
plug "wintermi/zsh-lsd"
|
plug "wintermi/zsh-lsd"
|
||||||
plug "romkatv/powerlevel10k"
|
plug "romkatv/powerlevel10k"
|
||||||
# plug "zap-zsh/nvm"
|
# plug "zap-zsh/nvm"
|
||||||
|
#
|
||||||
|
#
|
||||||
# Load and initialise completion system
|
# # Load and initialise completion system
|
||||||
autoload -Uz compinit
|
# autoload -Uz compinit
|
||||||
fpath+=~/.zfunc
|
# fpath+=~/.zfunc
|
||||||
compinit
|
# compinit
|
||||||
|
|
||||||
# # nvm initialization
|
# # nvm initialization
|
||||||
# source /usr/share/nvm/init-nvm.sh
|
# source /usr/share/nvm/init-nvm.sh
|
||||||
|
XDG_CURRENT_DESKTOP="${XDG_CURRENT_DESKTOP:-sway}"
|
||||||
|
MOZ_ENABLE_WAYLAND=1
|
||||||
|
|
||||||
alias v="nvim"
|
alias v="nvim"
|
||||||
alias conservation-on="sudo ectool chargecontrol normal 80 80"
|
alias conservation-on="sudo ectool chargecontrol normal 80 80"
|
||||||
alias conservation-off="sudo ectool chargecontrol normal"
|
alias conservation-off="sudo ectool chargecontrol normal"
|
||||||
# alias orphans="sudo pacman -Qtdq | sudo pacman -Rns -"
|
alias orphans="sudo pacman -Qtdq | sudo pacman -Rns -"
|
||||||
|
|
||||||
# Define variables for monitor names
|
|
||||||
LAPTOP_MONITOR="eDP-1"
|
|
||||||
EXTERNAL_MONITOR="DP-2"
|
|
||||||
|
|
||||||
# Alias to disable laptop screen (only if external is connected)
|
|
||||||
alias laptop-screen-off='if xrandr | grep "$EXTERNAL_MONITOR connected"; then swaymsg output $LAPTOP_MONITOR disable; echo "Laptop screen disabled."; else echo "External monitor not connected. Keeping laptop screen on."; fi'
|
|
||||||
|
|
||||||
# Alias to enable laptop screen
|
|
||||||
alias laptop-screen-on='swaymsg output $LAPTOP_MONITOR enable; echo "Laptop screen enabled."'
|
|
||||||
|
|
||||||
|
|
||||||
alias space="du -hsx * | sort -rh | head -10"
|
alias space="du -hsx * | sort -rh | head -10"
|
||||||
|
|
||||||
@ -47,10 +38,12 @@ export GPG_TTY=$(tty)
|
|||||||
export EDITOR="nvim"
|
export EDITOR="nvim"
|
||||||
|
|
||||||
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
|
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
|
||||||
|
export NVM_DIR="$HOME/.nvm"
|
||||||
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
||||||
|
|
||||||
|
|
||||||
source ~/.cargo/env
|
|
||||||
|
|
||||||
export GOROOT="$HOME/.local/bin/go"
|
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
|
||||||
export GOPATH="$HOME/.go"
|
export SDKMAN_DIR="$HOME/.sdkman"
|
||||||
export PATH="$GOROOT/bin:$GOPATH/bin:$PATH"
|
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"
|
||||||
|
# [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||||
|
|||||||
@ -17,3 +17,5 @@ npm config set prefix '~/.npm-global'
|
|||||||
|
|
||||||
FONT
|
FONT
|
||||||
https://github.com/ryanoasis/nerd-fonts/releases/download/v3.4.0/Inconsolata.zip
|
https://github.com/ryanoasis/nerd-fonts/releases/download/v3.4.0/Inconsolata.zip
|
||||||
|
- (guida per installare i nerd fonts)[https://blog.khmersite.net/p/installing-nerd-font-on-fedora/]
|
||||||
|
- (iosevka)[https://release-assets.githubusercontent.com/github-production-release-asset/27574418/da264fe4-47cc-4350-acd3-4435de81106e?sp=r&sv=2018-11-09&sr=b&spr=https&se=2025-10-23T07%3A54%3A53Z&rscd=attachment%3B+filename%3DIntelOneMono.zip&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2025-10-23T06%3A54%3A07Z&ske=2025-10-23T07%3A54%3A53Z&sks=b&skv=2018-11-09&sig=mxyF4BWvhxi8ePVdXlPnWk6t3vY5m5xd4t7W%2BRZhL%2FU%3D&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc2MTIwNDkzMywibmJmIjoxNzYxMjAzMTMzLCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.m4n0dZ3ElI-zBBX281ciSWgdS8tedJihBq-_FfVpY1E&response-content-disposition=attachment%3B%20filename%3DIntelOneMono.zip&response-content-type=application%2Foctet-stream]
|
||||||
|
|||||||
4
link.sh
4
link.sh
@ -1,8 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
ln -s ~/Documents/dotfiles/alacritty ~/.config/
|
# ln -s ~/Documents/dotfiles/alacritty ~/.config/
|
||||||
ln -s ~/Documents/dotfiles/foot ~/.config/
|
ln -s ~/Documents/dotfiles/foot ~/.config/
|
||||||
ln -s ~/Documents/dotfiles/.gitconfig ~/
|
|
||||||
ln -s ~/Documents/dotfiles/mako ~/.config/
|
ln -s ~/Documents/dotfiles/mako ~/.config/
|
||||||
ln -s ~/Documents/dotfiles/mpv ~/.config/
|
ln -s ~/Documents/dotfiles/mpv ~/.config/
|
||||||
ln -s ~/Documents/dotfiles/nvim ~/.config/
|
ln -s ~/Documents/dotfiles/nvim ~/.config/
|
||||||
@ -15,3 +14,4 @@ ln -s ~/Documents/dotfiles/wofi ~/.config/
|
|||||||
ln -s ~/Documents/dotfiles/yt-dlp ~/.config/
|
ln -s ~/Documents/dotfiles/yt-dlp ~/.config/
|
||||||
ln -s ~/Documents/dotfiles/zathura ~/.config/
|
ln -s ~/Documents/dotfiles/zathura ~/.config/
|
||||||
ln -s ~/Documents/dotfiles/.zshrc ~/
|
ln -s ~/Documents/dotfiles/.zshrc ~/
|
||||||
|
ln -s ~/Documents/dotfiles/.gitconfig ~/
|
||||||
|
|||||||
@ -22,3 +22,6 @@ profile=high-quality
|
|||||||
scale=ewa_lanczossharp
|
scale=ewa_lanczossharp
|
||||||
cscale=ewa_lanczossharp
|
cscale=ewa_lanczossharp
|
||||||
|
|
||||||
|
|
||||||
|
loop-playlist=inf
|
||||||
|
shuffle=yes
|
||||||
|
|||||||
243
network-manager-resolvd-config.md
Normal file
243
network-manager-resolvd-config.md
Normal file
@ -0,0 +1,243 @@
|
|||||||
|
Excellent question. The fact that this happens *sometimes* is the key to understanding the problem. It points to a race condition or a conflict between the different services managing your network, specifically `NetworkManager` and `systemd-resolved`, based on the information your router is providing.
|
||||||
|
|
||||||
|
Here's a breakdown of the moving parts and why they sometimes fail to cooperate.
|
||||||
|
|
||||||
|
### The Actors on Your System
|
||||||
|
|
||||||
|
1. **The Router (The Source of Truth):**
|
||||||
|
* When you connect to Wi-Fi, your router provides network configuration information.
|
||||||
|
* For IPv4, it uses **DHCP** to give you an IP address, a gateway, and DNS servers.
|
||||||
|
* For IPv6, it uses **Router Advertisements (RAs)** and/or **DHCPv6**. RAs can include information about which DNS servers to use.
|
||||||
|
* **The Core Issue:** Some routers, especially consumer-grade ones, are poorly configured. They advertise their own **link-local** (`fe80::...`) address as the DNS server in their IPv6 RAs. This is technically valid but problematic for many client systems.
|
||||||
|
|
||||||
|
2. **NetworkManager (The Connection Manager):**
|
||||||
|
* Its job is to manage network interfaces (like `wlp1s0`). It brings the Wi-Fi up, handles authentication, and listens for the configuration data from your router (both DHCP and RAs).
|
||||||
|
* When it receives the DNS server information, it needs to pass it on to the system's resolver.
|
||||||
|
|
||||||
|
3. **systemd-resolved (The DNS Resolver):**
|
||||||
|
* This is the service that actually performs the DNS lookups for your applications (like your web browser). It's designed to be a central clearinghouse for DNS. It maintains a list of all DNS servers learned from all network interfaces, caches results, and can handle advanced protocols like DNS-over-TLS.
|
||||||
|
|
||||||
|
### The Conflict: Who Controls `/etc/resolv.conf`?
|
||||||
|
|
||||||
|
The problem arises from how `NetworkManager` and `systemd-resolved` are configured to interact, and which one gets the final say over the `/etc/resolv.conf` file. There are two common modes:
|
||||||
|
|
||||||
|
1. **Mode A: `NetworkManager` is in control (Your likely situation).**
|
||||||
|
* In this setup, `NetworkManager` takes the DNS server information it receives from the router and writes it *directly* into `/etc/resolv.conf`.
|
||||||
|
* The file comment `# Generated by NetworkManager` is the evidence for this.
|
||||||
|
* When your router sends that bad `fe80::1%wlp1s0` address, `NetworkManager` dutifully writes it into the file, and your system's DNS breaks.
|
||||||
|
|
||||||
|
2. **Mode B: `systemd-resolved` is in control (The modern, recommended setup).**
|
||||||
|
* `NetworkManager` is configured to pass all the DNS information it learns to `systemd-resolved` via an internal system bus (D-Bus).
|
||||||
|
* `systemd-resolved` then manages the DNS servers internally.
|
||||||
|
* `/etc/resolv.conf` is then symlinked to a file managed by `systemd-resolved` (like `/run/systemd/resolve/stub-resolv.conf`), which contains only `nameserver 127.0.0.53`. This points all system queries to the local `systemd-resolved` daemon, which then intelligently forwards them to the correct upstream servers.
|
||||||
|
|
||||||
|
### Why "Sometimes"? The Race Condition
|
||||||
|
|
||||||
|
The fact that it's intermittent strongly suggests a race condition between your IPv4 and IPv6 configuration on startup or reconnect.
|
||||||
|
|
||||||
|
* **Scenario 1 (Everything Works):** Your system connects, the IPv4 DHCP negotiation finishes first. `NetworkManager` gets a valid IPv4 DNS server (e.g., `8.8.8.8` or your ISP's) and writes it to `/etc/resolv.conf`. A moment later, the problematic IPv6 RA arrives, but `NetworkManager` might prioritize or already be using the working IPv4 server.
|
||||||
|
* **Scenario 2 (DNS Breaks):** Your system connects, but the IPv6 Router Advertisement is processed first. `NetworkManager` receives the `fe80::1%wlp1s0` address and writes it to `/etc/resolv.conf`. DNS is broken from the start. A few moments later, the IPv4 address might arrive, but `NetworkManager` might not update the config file, leaving the broken one in place. This can also happen after waking from suspend. Such intermittent failures are a known class of bugs [github.com](https://github.com/systemd/systemd/issues/21123).
|
||||||
|
|
||||||
|
As one user on a forum described a similar situation, "After doing a -Syu and reboot, I no longer have access to the internet system-wide. I can ping 8.8.8.8 but not ping google.com" – this is the classic symptom you are experiencing [forum.endeavouros.com](https://forum.endeavouros.com/t/no-internet-dns-issues-after-update-networkmanager-systemd-resolved-on-kde/69865).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### How to Verify and Fix This Permanently
|
||||||
|
|
||||||
|
The best solution is to switch to the modern setup where `systemd-resolved` is in full control.
|
||||||
|
|
||||||
|
#### Step 1: Check Your Current `resolv.conf` Setup
|
||||||
|
|
||||||
|
Run this command to see what `/etc/resolv.conf` really is:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ls -l /etc/resolv.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
* **If it shows a file (`-rw-r--r-- ...`)**, you are in the problematic Mode A.
|
||||||
|
* **If it shows a symlink (`lrwxrwxrwx ... -> ../run/systemd/resolve/stub-resolv.conf`)**, you are in Mode B, but `NetworkManager` might still be misconfigured.
|
||||||
|
|
||||||
|
#### Step 2: Configure NetworkManager to Use `systemd-resolved`
|
||||||
|
|
||||||
|
1. Edit the main NetworkManager configuration file:
|
||||||
|
```bash
|
||||||
|
sudo nano /etc/NetworkManager/NetworkManager.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
2. In the `[main]` section, add or uncomment the `dns` line and set it to `systemd-resolved`:
|
||||||
|
```ini
|
||||||
|
[main]
|
||||||
|
plugins=ifupdown,keyfile
|
||||||
|
dns=systemd-resolved
|
||||||
|
|
||||||
|
[ifupdown]
|
||||||
|
managed=false
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Save the file and exit.
|
||||||
|
|
||||||
|
#### Step 3: Enable `systemd-resolved` and Create the Correct Symlink
|
||||||
|
|
||||||
|
1. First, ensure the service is running:
|
||||||
|
```bash
|
||||||
|
sudo systemctl enable systemd-resolved.service
|
||||||
|
sudo systemctl start systemd-resolved.service
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Next, remove the static file and create the correct symlink. This forces the system to use the local `systemd-resolved` stub resolver.
|
||||||
|
```bash
|
||||||
|
# IMPORTANT: Back up the old file first
|
||||||
|
sudo mv /etc/resolv.conf /etc/resolv.conf.bak
|
||||||
|
|
||||||
|
# Create the symlink
|
||||||
|
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Step 4: Restart and Verify
|
||||||
|
|
||||||
|
Restart `NetworkManager` to apply all the changes.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart NetworkManager
|
||||||
|
```
|
||||||
|
|
||||||
|
Now, your DNS should work reliably. Check your `resolv.conf` to confirm it points to `127.0.0.53`. To see the *actual* DNS servers your system is now using (which it gets from `NetworkManager`), use the `resolvectl` command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
resolvectl status
|
||||||
|
```
|
||||||
|
|
||||||
|
This will give you a detailed report, showing the DNS servers for each interface (like `wlp1s0`). Even if the problematic `fe80::` address is listed there, `systemd-resolved` is smart enough to ignore or fall back from it if it doesn't work, preventing a total DNS outage.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Excellent! You've correctly identified that you're in "Mode A," where `NetworkManager` writes directly to `/etc/resolv.conf`. Switching to the modern approach where `systemd-resolved` handles everything is the most robust and permanent solution.
|
||||||
|
|
||||||
|
Let's walk through the process step-by-step. This is a standard and safe procedure on most modern Linux distributions.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step-by-Step Guide to Switch to `systemd-resolved`
|
||||||
|
|
||||||
|
We are going to reconfigure your system so that:
|
||||||
|
1. `NetworkManager` passes DNS information to `systemd-resolved`.
|
||||||
|
2. `systemd-resolved` manages all DNS lookups.
|
||||||
|
3. `/etc/resolv.conf` points to the local `systemd-resolved` service.
|
||||||
|
|
||||||
|
#### Step 1: Configure NetworkManager
|
||||||
|
|
||||||
|
First, we need to tell `NetworkManager` to stop managing `/etc/resolv.conf` by itself and start sending its DNS information to `systemd-resolved`.
|
||||||
|
|
||||||
|
1. Open the `NetworkManager.conf` file with a text editor and `sudo` privileges:
|
||||||
|
```bash
|
||||||
|
sudo nano /etc/NetworkManager/NetworkManager.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Find the `[main]` section. Add a `dns` line and set it to `systemd-resolved`. If the line already exists but is set to something else (like `default`), change it.
|
||||||
|
|
||||||
|
**Your file should look like this:**
|
||||||
|
```ini
|
||||||
|
[main]
|
||||||
|
plugins=ifupdown,keyfile
|
||||||
|
dns=systemd-resolved
|
||||||
|
|
||||||
|
[ifupdown]
|
||||||
|
managed=false
|
||||||
|
```
|
||||||
|
*(Note: You might have other settings in the `[main]` section. Just make sure the `dns=systemd-resolved` line is present and correct.)*
|
||||||
|
|
||||||
|
3. Save the file and exit the editor (in `nano`, press `Ctrl+O`, then `Enter` to save, and `Ctrl+X` to exit).
|
||||||
|
|
||||||
|
#### Step 2: Enable and Start `systemd-resolved`
|
||||||
|
|
||||||
|
Now, let's make sure the `systemd-resolved` service is active and will start automatically on boot.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Enable the service to start on every boot
|
||||||
|
sudo systemctl enable systemd-resolved.service
|
||||||
|
|
||||||
|
# Start the service right now
|
||||||
|
sudo systemctl start systemd-resolved.service
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Step 3: Recreate `/etc/resolv.conf` as a Symlink
|
||||||
|
|
||||||
|
This is the most important step. We will replace the static file that `NetworkManager` used to write with a symbolic link to the `resolv.conf` file that `systemd-resolved` provides.
|
||||||
|
|
||||||
|
1. **Important:** Back up your current `resolv.conf` file. This lets you easily revert if something goes wrong.
|
||||||
|
```bash
|
||||||
|
sudo mv /etc/resolv.conf /etc/resolv.conf.bak
|
||||||
|
```
|
||||||
|
This command safely renames the file.
|
||||||
|
|
||||||
|
2. Create the new symbolic link:
|
||||||
|
```bash
|
||||||
|
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
|
||||||
|
```
|
||||||
|
This links `/etc/resolv.conf` to the "stub" resolver file, which correctly points all DNS queries to the local `systemd-resolved` daemon.
|
||||||
|
|
||||||
|
#### Step 4: Restart NetworkManager and Verify
|
||||||
|
|
||||||
|
Finally, restart `NetworkManager` to apply all the changes and verify that everything is working.
|
||||||
|
|
||||||
|
1. Restart the service:
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart NetworkManager
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Verify the symlink:** Check that `/etc/resolv.conf` is now a link.
|
||||||
|
```bash
|
||||||
|
ls -l /etc/resolv.conf
|
||||||
|
```
|
||||||
|
The output should look like this (colors and dates will vary):
|
||||||
|
```
|
||||||
|
lrwxrwxrwx 1 root root 39 Nov 18 10:30 /etc/resolv.conf -> /run/systemd/resolve/stub-resolv.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Verify the content:** Check what's inside the new `resolv.conf`.
|
||||||
|
```bash
|
||||||
|
cat /etc/resolv.conf
|
||||||
|
```
|
||||||
|
The output should show `127.0.0.53` as the nameserver. This is the local `systemd-resolved` stub resolver.
|
||||||
|
```
|
||||||
|
# This file is managed by man:systemd-resolved(8). Do not edit.
|
||||||
|
...
|
||||||
|
nameserver 127.0.0.53
|
||||||
|
options edns0 trust-ad
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Check the REAL DNS servers:** Use `resolvectl` to see which DNS servers `systemd-resolved` is actually using (which it learned from `NetworkManager`).
|
||||||
|
```bash
|
||||||
|
resolvectl status
|
||||||
|
```
|
||||||
|
This will give you a detailed report. Look for the section corresponding to your Wi-Fi interface (`wlp1s0`). You will see the actual IP addresses of the DNS servers it is using. Even if the problematic `fe80::` address is listed, `systemd-resolved` is much more resilient and will fall back to other working servers.
|
||||||
|
|
||||||
|
5. **Final Test:**
|
||||||
|
```bash
|
||||||
|
ping archlinux.org
|
||||||
|
```
|
||||||
|
If you get a reply, congratulations! Your DNS is now being managed robustly by `systemd-resolved`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### How to Revert (If Needed)
|
||||||
|
|
||||||
|
If anything goes wrong, you can easily go back to the old setup:
|
||||||
|
|
||||||
|
1. **Restore the old `resolv.conf`:**
|
||||||
|
```bash
|
||||||
|
sudo mv /etc/resolv.conf.bak /etc/resolv.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Edit `NetworkManager.conf` again:**
|
||||||
|
```bash
|
||||||
|
sudo nano /etc/NetworkManager/NetworkManager.conf
|
||||||
|
```
|
||||||
|
Remove the `dns=systemd-resolved` line, or change it back to `dns=default`.
|
||||||
|
|
||||||
|
3. **Restart NetworkManager:**
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart NetworkManager
|
||||||
|
```
|
||||||
@ -5,7 +5,7 @@ return {
|
|||||||
"mason-org/mason-lspconfig.nvim",
|
"mason-org/mason-lspconfig.nvim",
|
||||||
"WhoIsSethDaniel/mason-tool-installer.nvim",
|
"WhoIsSethDaniel/mason-tool-installer.nvim",
|
||||||
|
|
||||||
{ "j-hui/fidget.nvim", opts = {} },
|
{ "j-hui/fidget.nvim", opts = {} },
|
||||||
|
|
||||||
"saghen/blink.cmp",
|
"saghen/blink.cmp",
|
||||||
},
|
},
|
||||||
@ -116,9 +116,9 @@ return {
|
|||||||
local servers = {
|
local servers = {
|
||||||
texlab = {},
|
texlab = {},
|
||||||
-- clangd = {},
|
-- clangd = {},
|
||||||
-- gopls = {},
|
gopls = {},
|
||||||
-- pyright = {},
|
jdtls = {},
|
||||||
-- rust_analyzer = {},
|
-- nil_ls = {},
|
||||||
ts_ls = {},
|
ts_ls = {},
|
||||||
lua_ls = {
|
lua_ls = {
|
||||||
settings = {
|
settings = {
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
\subsection{}
|
|
||||||
12
nvim/main.ts
12
nvim/main.ts
@ -1,12 +0,0 @@
|
|||||||
const Page = () => {
|
|
||||||
const a: number[] = []
|
|
||||||
a.fill(1)
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
rafce
|
|
||||||
2
sdkman/config
Normal file
2
sdkman/config
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# enable automatic env
|
||||||
|
sdkman_auto_env=true
|
||||||
2
services/hibernate.conf
Normal file
2
services/hibernate.conf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[Sleep]
|
||||||
|
HibernateDelaySec=30min
|
||||||
28
services/readme.md
Normal file
28
services/readme.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
```bash
|
||||||
|
|
||||||
|
sudo tee /etc/systemd/system/suspend-radios.service << 'EOF'
|
||||||
|
[Unit]
|
||||||
|
Description=Disable radios before suspend
|
||||||
|
Before=sleep.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/sbin/rfkill block wifi bluetooth
|
||||||
|
ExecStop=/usr/sbin/rfkill unblock wifi bluetooth
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=sleep.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sudo systemctl enable suspend-radios.service
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo mkdir -p /etc/systemd/sleep.conf.d
|
||||||
|
sudo tee /etc/systemd/sleep.conf.d/hibernate.conf << 'EOF'
|
||||||
|
[Sleep]
|
||||||
|
HibernateDelaySec=30min
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
```
|
||||||
11
services/suspend-radios.service
Normal file
11
services/suspend-radios.service
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Disable radios before suspend
|
||||||
|
Before=sleep.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/sbin/rfkill block wifi bluetooth
|
||||||
|
ExecStop=/usr/sbin/rfkill unblock wifi bluetooth
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=sleep.target
|
||||||
98
sway/config
98
sway/config
@ -4,7 +4,7 @@ set $left h
|
|||||||
set $down j
|
set $down j
|
||||||
set $up k
|
set $up k
|
||||||
set $right l
|
set $right l
|
||||||
set $term ghostty
|
set $term foot
|
||||||
# Launcher: wofi (sostituisce wmenu-run)
|
# Launcher: wofi (sostituisce wmenu-run)
|
||||||
set $menu wofi -S drun -p Search -I -b -i
|
set $menu wofi -S drun -p Search -I -b -i
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ floating_modifier $mod normal
|
|||||||
bindsym $mod+Shift+c reload
|
bindsym $mod+Shift+c reload
|
||||||
|
|
||||||
# Esci da Sway (con conferma tramite swaynag)
|
# Esci da Sway (con conferma tramite swaynag)
|
||||||
bindsym $mod+Shift+e exec swaynag -t warning -m 'Hai premuto la scorciatoia per uscire. Vuoi davvero uscire da Sway?' -B 'Sì, esci' 'swaymsg exit'
|
# bindsym $mod+Shift+e exec swaynag -t warning -m 'Hai premuto la scorciatoia per uscire. Vuoi davvero uscire da Sway?' -B 'Sì, esci' 'swaymsg exit'
|
||||||
|
|
||||||
### Navigazione e spostamento tra finestre
|
### Navigazione e spostamento tra finestre
|
||||||
# Sposta il focus
|
# Sposta il focus
|
||||||
@ -177,36 +177,15 @@ bindsym $mod+r mode "resize"
|
|||||||
### Notifiche e Controlli Audio/Luminosità
|
### Notifiche e Controlli Audio/Luminosità
|
||||||
set $notification_time 1000
|
set $notification_time 1000
|
||||||
|
|
||||||
# Comandi per le notifiche (volume, mute, mic, luminosità)
|
# Audio controls
|
||||||
set $audio_notification_cmd command -v notify-send >/dev/null && \
|
bindsym XF86AudioMute exec ~/.config/sway/scripts/notification-control.sh mute-toggle
|
||||||
VALUE=$(pactl get-sink-volume @DEFAULT_SINK@ | head -n 1 | awk '{print substr($5, 1, length($5)-1)}') && \
|
bindsym XF86AudioLowerVolume exec ~/.config/sway/scripts/notification-control.sh volume-down
|
||||||
notify-send -e -h string:x-canonical-private-synchronous:audio \
|
bindsym XF86AudioRaiseVolume exec ~/.config/sway/scripts/notification-control.sh volume-up
|
||||||
-h "int:value:$VALUE" -t $notification_time "Volume: ${VALUE}%"
|
bindsym XF86AudioMicMute exec ~/.config/sway/scripts/notification-control.sh mic-mute-toggle
|
||||||
|
|
||||||
set $mute_notification_cmd command -v notify-send >/dev/null && \
|
# Brightness controls
|
||||||
VALUE=$(pactl get-sink-mute @DEFAULT_SINK@ | head -n 1 | awk '{print $2}') && \
|
bindsym XF86MonBrightnessDown exec ~/.config/sway/scripts/notification-control.sh brightness-down
|
||||||
notify-send -e -h string:x-canonical-private-synchronous:audio \
|
bindsym XF86MonBrightnessUp exec ~/.config/sway/scripts/notification-control.sh brightness-up
|
||||||
-h "string:x-canonical-private-synchronous:audio" -t $notification_time "Mute: ${VALUE}"
|
|
||||||
|
|
||||||
set $mute_mic_notification_cmd command -v notify-send >/dev/null && \
|
|
||||||
VALUE=$(pactl get-source-mute @DEFAULT_SOURCE@ | head -n 1 | awk '{print $2}') && \
|
|
||||||
notify-send -e -h string:x-canonical-private-synchronous:audio \
|
|
||||||
-h "string:x-canonical-private-synchronous:audio" -t $notification_time "Mic Mute: ${VALUE}"
|
|
||||||
|
|
||||||
set $brightness_notification_cmd command -v notify-send >/dev/null && \
|
|
||||||
VALUE=$(brightnessctl get) && \
|
|
||||||
MAX=255 && \
|
|
||||||
PERCENT=$((VALUE * 100 / MAX)) && \
|
|
||||||
notify-send -e -h string:x-canonical-private-synchronous:brightness \
|
|
||||||
-h "int:value:$PERCENT" -t $notification_time "Brightness: ${PERCENT}%"
|
|
||||||
|
|
||||||
# Key bindings per audio e luminosità
|
|
||||||
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle; exec $mute_notification_cmd
|
|
||||||
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% && $audio_notification_cmd
|
|
||||||
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% && $audio_notification_cmd
|
|
||||||
bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle && $mute_mic_notification_cmd
|
|
||||||
bindsym XF86MonBrightnessDown exec brightnessctl s 10%- && $brightness_notification_cmd
|
|
||||||
bindsym XF86MonBrightnessUp exec brightnessctl s 10%+ && $brightness_notification_cmd
|
|
||||||
|
|
||||||
# Controlli multimediali
|
# Controlli multimediali
|
||||||
bindsym XF86AudioPlay exec playerctl play-pause
|
bindsym XF86AudioPlay exec playerctl play-pause
|
||||||
@ -214,18 +193,24 @@ bindsym XF86AudioNext exec playerctl next
|
|||||||
bindsym XF86AudioPrev exec playerctl previous
|
bindsym XF86AudioPrev exec playerctl previous
|
||||||
|
|
||||||
### Screenshot e Registrazione Schermo
|
### Screenshot e Registrazione Schermo
|
||||||
bindsym Print exec grimshot --notify copy output
|
bindsym Print exec grimshot --notify copy output && \
|
||||||
bindsym $mod+Print exec grimshot --notify copy area
|
notify-send -u normal "📸 Screenshot" "Full screen copied to clipboard"
|
||||||
bindsym $mod+P exec grimshot --notify copy output
|
|
||||||
bindsym $mod+Shift+P exec grimshot --notify copy area
|
|
||||||
|
|
||||||
bindsym $mod+XF86AudioMedia exec --no-startup-id \
|
# Screenshot selected area
|
||||||
(pgrep -x wf-recorder > /dev/null && killall -s SIGINT wf-recorder && notify-send "Recording Stopped") || \
|
bindsym $mod+Print exec grimshot --notify copy area && \
|
||||||
(notify-send "Recording Started + Audio." && wf-recorder --audio --file ~/Videos/$(date +'%Y-%m-%d-%H-%M-%S').mp4)
|
notify-send -u normal "📸 Screenshot" "Selected area copied to clipboard"
|
||||||
|
|
||||||
bindsym XF86AudioMedia exec --no-startup-id \
|
# Alternative bindings
|
||||||
(pgrep -x wf-recorder > /dev/null && killall -s SIGINT wf-recorder && notify-send "Recording Stopped") || \
|
bindsym $mod+P exec grimshot --notify copy output && \
|
||||||
(notify-send "Recording Started" && wf-recorder --file ~/Videos/$(date +'%Y-%m-%d-%H-%M-%S').mp4)
|
notify-send -u normal "📸 Screenshot" "Full screen copied to clipboard"
|
||||||
|
|
||||||
|
bindsym $mod+Shift+P exec grimshot --notify copy area && \
|
||||||
|
notify-send -u normal "📸 Screenshot" "Selected area copied to clipboard"
|
||||||
|
|
||||||
|
# this one includes audio track in the recording
|
||||||
|
bindsym $mod+XF86AudioMedia exec ~/.config/sway/scripts/screen-recording.sh audio
|
||||||
|
# this one not
|
||||||
|
bindsym XF86AudioMedia exec ~/.config/sway/scripts/screen-recording.sh
|
||||||
|
|
||||||
### Modalità per azioni di sistema (lock, logout, reboot, suspend, shutdown)
|
### Modalità per azioni di sistema (lock, logout, reboot, suspend, shutdown)
|
||||||
set $mode_system "What to do? (l) lock, (e) logout, (r) reboot, (Shift+s) shutdown"
|
set $mode_system "What to do? (l) lock, (e) logout, (r) reboot, (Shift+s) shutdown"
|
||||||
@ -248,8 +233,8 @@ bar {
|
|||||||
### Borders e Gaps
|
### Borders e Gaps
|
||||||
default_border pixel
|
default_border pixel
|
||||||
smart_gaps on
|
smart_gaps on
|
||||||
gaps outer 3
|
gaps outer 2
|
||||||
gaps inner 5
|
gaps inner 3
|
||||||
|
|
||||||
# Impostazioni dei colori per il focus delle finestre
|
# Impostazioni dei colori per il focus delle finestre
|
||||||
client.focused $gruvbox_orange $gruvbox_orange $gruvbox_bg_dark $gruvbox_orange
|
client.focused $gruvbox_orange $gruvbox_orange $gruvbox_bg_dark $gruvbox_orange
|
||||||
@ -264,15 +249,15 @@ exec_always {
|
|||||||
}
|
}
|
||||||
|
|
||||||
### Applicazioni in autostart
|
### Applicazioni in autostart
|
||||||
# exec keepassxc
|
exec keepassxc
|
||||||
exec flatpak run org.keepassxc.KeePassXC
|
# exec flatpak run org.keepassxc.KeePassXC
|
||||||
# exec nextcloud
|
exec nextcloud
|
||||||
exec flatpak run com.nextcloud.desktopclient.nextcloud
|
# exec flatpak run com.nextcloud.desktopclient.nextcloud
|
||||||
exec wlsunset -S 08:00 -s 18:00
|
exec wlsunset -S 08:00 -s 18:00
|
||||||
exec blueman-applet
|
exec blueman-applet
|
||||||
exec xss-lock -- swaylock -f -i $wallpaper
|
exec xss-lock -- swaylock -f -i $wallpaper
|
||||||
# exec --no-startup-id easyeffects --gapplication-service
|
exec --no-startup-id easyeffects --gapplication-service
|
||||||
exec flatpak run com.github.wwmm.easyeffects --gapplication-service
|
# exec flatpak run com.github.wwmm.easyeffects --gapplication-service
|
||||||
exec --no-startup-id wluma
|
exec --no-startup-id wluma
|
||||||
|
|
||||||
# Avvio del polkit agent GNOME
|
# Avvio del polkit agent GNOME
|
||||||
@ -286,7 +271,8 @@ exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CU
|
|||||||
exec dbus-update-activation-environment WAYLAND_DISPLAY DISPLAY XDG_CURRENT_DESKTOP SWAYSOCK I3SOCK XCURSOR_SIZE XCURSOR_THEME
|
exec dbus-update-activation-environment WAYLAND_DISPLAY DISPLAY XDG_CURRENT_DESKTOP SWAYSOCK I3SOCK XCURSOR_SIZE XCURSOR_THEME
|
||||||
|
|
||||||
### Notifiche Desktop e Clip History
|
### Notifiche Desktop e Clip History
|
||||||
exec mako
|
exec swaync
|
||||||
|
# exec mako
|
||||||
exec wl-paste --type text --watch cliphist store
|
exec wl-paste --type text --watch cliphist store
|
||||||
exec wl-paste --type image --watch cliphist store
|
exec wl-paste --type image --watch cliphist store
|
||||||
|
|
||||||
@ -316,15 +302,3 @@ for_window [title="Picture in picture"] floating enable, sticky enable
|
|||||||
for_window [title="Save File"] floating enable
|
for_window [title="Save File"] floating enable
|
||||||
for_window [app_id="firefox" title="Firefox — Sharing Indicator"] kill
|
for_window [app_id="firefox" title="Firefox — Sharing Indicator"] kill
|
||||||
|
|
||||||
# assign [app_id="configs"] workspace configs
|
|
||||||
assign [class="Spotify"] workspace 10
|
|
||||||
|
|
||||||
for_window [app_id="keymapp"] floating enable
|
|
||||||
for_window [app_id="keymapp"] resize set width 800 px height 600 px
|
|
||||||
for_window [app_id="keymapp"] move position 100%-800px 100%-600px
|
|
||||||
for_window [app_id="keymapp"] mark pin-keymapp
|
|
||||||
no_focus [app_id="keymapp"]
|
|
||||||
exec_always ~/.config/sway/scripts/pin-keymapp.sh
|
|
||||||
|
|
||||||
# Includi eventuali configurazioni aggiuntive
|
|
||||||
# include /etc/sway/config.d/*
|
|
||||||
|
|||||||
69
sway/scripts/notification-control.sh
Executable file
69
sway/scripts/notification-control.sh
Executable file
@ -0,0 +1,69 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
ACTION="$1"
|
||||||
|
NOTIFICATION_TIME=1000
|
||||||
|
|
||||||
|
case "$ACTION" in
|
||||||
|
volume-up)
|
||||||
|
pactl set-sink-volume @DEFAULT_SINK@ +5%
|
||||||
|
VALUE=$(pactl get-sink-volume @DEFAULT_SINK@ | head -n 1 | awk '{print substr($5, 1, length($5)-1)}')
|
||||||
|
notify-send -e -h string:x-canonical-private-synchronous:audio \
|
||||||
|
-h "int:value:$VALUE" -t $NOTIFICATION_TIME "🔊 Volume" "${VALUE}%"
|
||||||
|
;;
|
||||||
|
|
||||||
|
volume-down)
|
||||||
|
pactl set-sink-volume @DEFAULT_SINK@ -5%
|
||||||
|
VALUE=$(pactl get-sink-volume @DEFAULT_SINK@ | head -n 1 | awk '{print substr($5, 1, length($5)-1)}')
|
||||||
|
notify-send -e -h string:x-canonical-private-synchronous:audio \
|
||||||
|
-h "int:value:$VALUE" -t $NOTIFICATION_TIME "🔉 Volume" "${VALUE}%"
|
||||||
|
;;
|
||||||
|
|
||||||
|
mute-toggle)
|
||||||
|
pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||||
|
MUTED=$(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print $2}')
|
||||||
|
if [ "$MUTED" = "yes" ]; then
|
||||||
|
notify-send -e -h string:x-canonical-private-synchronous:audio \
|
||||||
|
-t $NOTIFICATION_TIME "🔇 Audio Muted" "Output muted"
|
||||||
|
else
|
||||||
|
notify-send -e -h string:x-canonical-private-synchronous:audio \
|
||||||
|
-t $NOTIFICATION_TIME "🔊 Audio Unmuted" "Output active"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
mic-mute-toggle)
|
||||||
|
pactl set-source-mute @DEFAULT_SOURCE@ toggle
|
||||||
|
MUTED=$(pactl get-source-mute @DEFAULT_SOURCE@ | awk '{print $2}')
|
||||||
|
if [ "$MUTED" = "yes" ]; then
|
||||||
|
notify-send -e -h string:x-canonical-private-synchronous:audio \
|
||||||
|
-t $NOTIFICATION_TIME "🎤 Microphone Muted" "Mic muted"
|
||||||
|
else
|
||||||
|
notify-send -e -h string:x-canonical-private-synchronous:audio \
|
||||||
|
-t $NOTIFICATION_TIME "🎤 Microphone Active" "Mic unmuted"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
brightness-up)
|
||||||
|
brightnessctl s 10%+
|
||||||
|
# Get current and max brightness values
|
||||||
|
CURRENT=$(brightnessctl get)
|
||||||
|
MAX=$(brightnessctl max)
|
||||||
|
PERCENT=$((CURRENT * 100 / MAX))
|
||||||
|
notify-send -e -h string:x-canonical-private-synchronous:brightness \
|
||||||
|
-h "int:value:$PERCENT" -t $NOTIFICATION_TIME "☀️ Brightness" "${PERCENT}%"
|
||||||
|
;;
|
||||||
|
|
||||||
|
brightness-down)
|
||||||
|
brightnessctl s 10%-
|
||||||
|
# Get current and max brightness values
|
||||||
|
CURRENT=$(brightnessctl get)
|
||||||
|
MAX=$(brightnessctl max)
|
||||||
|
PERCENT=$((CURRENT * 100 / MAX))
|
||||||
|
notify-send -e -h string:x-canonical-private-synchronous:brightness \
|
||||||
|
-h "int:value:$PERCENT" -t $NOTIFICATION_TIME "🔅 Brightness" "${PERCENT}%"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 {volume-up|volume-down|mute-toggle|mic-mute-toggle|brightness-up|brightness-down}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@ -1,18 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Follow current workspace and place bottom-right at 800x600.
|
|
||||||
# Requires the window to be marked "pin-keymapp" and floating.
|
|
||||||
|
|
||||||
# Subscribe to workspace changes
|
|
||||||
swaymsg -t subscribe '["workspace"]' | while read -r _; do
|
|
||||||
# Ensure the window exists before issuing moves
|
|
||||||
if swaymsg -t get_tree | jq -e '.. | objects | select(.marks? and (index("pin-keymapp"))) ' >/dev/null; then
|
|
||||||
# Move to current workspace
|
|
||||||
swaymsg '[con_mark="pin-keymapp"] move container to workspace current'
|
|
||||||
# Ensure size, then place. Order matters: floating -> resize -> move.
|
|
||||||
swaymsg '[con_mark="pin-keymapp"] floating enable'
|
|
||||||
swaymsg '[con_mark="pin-keymapp"] resize set width 800 px height 600 px'
|
|
||||||
swaymsg '[con_mark="pin-keymapp"] move position 100%-800px 100%-600px'
|
|
||||||
# If needed (multi-output absolute coords), use:
|
|
||||||
# swaymsg '[con_mark="pin-keymapp"] move absolute position 100%-800px 100%-600px'
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
30
sway/scripts/screen-recording.sh
Executable file
30
sway/scripts/screen-recording.sh
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
RECORD_DIR="$HOME/Videos"
|
||||||
|
TIMESTAMP=$(date +'%Y-%m-%d-%H-%M-%S')
|
||||||
|
AUDIO_FLAG="$1"
|
||||||
|
|
||||||
|
# Create directory if it doesn't exist
|
||||||
|
if [ ! -d "$RECORD_DIR" ]; then
|
||||||
|
mkdir -p "$RECORD_DIR"
|
||||||
|
notify-send -u low "📁 Directory Created" "$RECORD_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if pgrep -x wf-recorder > /dev/null; then
|
||||||
|
killall -s SIGINT wf-recorder
|
||||||
|
notify-send -u normal "🛑 Recording Stopped" "Saved to $RECORD_DIR/"
|
||||||
|
else
|
||||||
|
if [ "$AUDIO_FLAG" = "audio" ]; then
|
||||||
|
notify-send -u normal "🔴 Recording Started" "With audio enabled"
|
||||||
|
wf-recorder --audio --file "$RECORD_DIR/${TIMESTAMP}.mp4"
|
||||||
|
else
|
||||||
|
notify-send -u normal "🔴 Recording Started" "Video only"
|
||||||
|
wf-recorder --file "$RECORD_DIR/${TIMESTAMP}.mp4"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
notify-send -u normal "✅ Recording Complete" "Saved as ${TIMESTAMP}.mp4"
|
||||||
|
else
|
||||||
|
notify-send -u critical "❌ Recording Failed" "Check your configuration"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
@ -1,7 +1,11 @@
|
|||||||
// -*- mode: jsonc -*-
|
// -*- mode: jsonc -*-
|
||||||
{
|
{
|
||||||
"height": 34, // Waybar height (to be removed for auto height)
|
"height": 34, // Waybar height (to be removed for auto height)
|
||||||
"modules-left": ["sway/workspaces", "sway/mode", "sway/scratchpad"],
|
"modules-left": [
|
||||||
|
// "hyprland/workspaces",
|
||||||
|
// // "hyprland/window",
|
||||||
|
"sway/workspaces", "sway/mode", "sway/scratchpad"
|
||||||
|
],
|
||||||
"modules-center": ["clock"],
|
"modules-center": ["clock"],
|
||||||
"modules-right": [
|
"modules-right": [
|
||||||
"idle_inhibitor",
|
"idle_inhibitor",
|
||||||
@ -13,6 +17,7 @@
|
|||||||
"backlight",
|
"backlight",
|
||||||
"battery",
|
"battery",
|
||||||
"tray",
|
"tray",
|
||||||
|
"custom/notification"
|
||||||
],
|
],
|
||||||
"sway/mode": {
|
"sway/mode": {
|
||||||
"format": "<span style=\"italic\">{}</span>",
|
"format": "<span style=\"italic\">{}</span>",
|
||||||
@ -112,4 +117,24 @@
|
|||||||
},
|
},
|
||||||
"on-click": "pavucontrol",
|
"on-click": "pavucontrol",
|
||||||
},
|
},
|
||||||
|
"custom/notification" : {
|
||||||
|
"tooltip" : false,
|
||||||
|
"format" : "{} {icon}",
|
||||||
|
"format-icons" : {
|
||||||
|
"notification" : "",
|
||||||
|
"none" : "",
|
||||||
|
"dnd-notification" : " ",
|
||||||
|
"dnd-none" : "",
|
||||||
|
"inhibited-notification" : " ",
|
||||||
|
"inhibited-none" : "",
|
||||||
|
"dnd-inhibited-notification" : " ",
|
||||||
|
"dnd-inhibited-none" : " ",
|
||||||
|
},
|
||||||
|
"return-type" : "json",
|
||||||
|
"exec-if" : "which swaync-client",
|
||||||
|
"exec" : "swaync-client -swb",
|
||||||
|
"on-click" : "sleep 0.1 && swaync-client -t -sw",
|
||||||
|
"on-click-right" : "sleep 0.1 && swaync-client -d -sw",
|
||||||
|
"escape" : true,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
* {
|
* {
|
||||||
font-family: "Iosevka Nerd Font", "Font Awesome 6 Free", "monospace";
|
font-family: "Iosevka Nerd Font", "Font Awesome 6 Free", "monospace";
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@define-color background #282828;
|
@define-color background #282828;
|
||||||
@ -25,6 +27,18 @@ window#waybar {
|
|||||||
background-color: @background;
|
background-color: @background;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.module-left * {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-notification {
|
||||||
|
/* padding: 0 20px; */
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 20px;
|
||||||
|
font-size: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#custom-scratch {
|
#custom-scratch {
|
||||||
@ -34,6 +48,7 @@ window#waybar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button {
|
#workspaces button {
|
||||||
|
padding: 0 10px;
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
color: @foreground;
|
color: @foreground;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user