Compare commits
No commits in common. "main" and "kik" have entirely different histories.
37
.zshrc
37
.zshrc
@ -14,22 +14,31 @@ plug "zsh-users/zsh-syntax-highlighting"
|
||||
plug "wintermi/zsh-lsd"
|
||||
plug "romkatv/powerlevel10k"
|
||||
# plug "zap-zsh/nvm"
|
||||
#
|
||||
#
|
||||
# # Load and initialise completion system
|
||||
# autoload -Uz compinit
|
||||
# fpath+=~/.zfunc
|
||||
# compinit
|
||||
|
||||
|
||||
# Load and initialise completion system
|
||||
autoload -Uz compinit
|
||||
fpath+=~/.zfunc
|
||||
compinit
|
||||
|
||||
# # nvm initialization
|
||||
# source /usr/share/nvm/init-nvm.sh
|
||||
XDG_CURRENT_DESKTOP="${XDG_CURRENT_DESKTOP:-sway}"
|
||||
MOZ_ENABLE_WAYLAND=1
|
||||
|
||||
alias v="nvim"
|
||||
alias conservation-on="sudo ectool chargecontrol normal 80 80"
|
||||
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"
|
||||
|
||||
@ -38,12 +47,10 @@ export GPG_TTY=$(tty)
|
||||
export EDITOR="nvim"
|
||||
|
||||
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
||||
|
||||
|
||||
source ~/.cargo/env
|
||||
|
||||
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
|
||||
export SDKMAN_DIR="$HOME/.sdkman"
|
||||
[[ -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
|
||||
export GOROOT="$HOME/.local/bin/go"
|
||||
export GOPATH="$HOME/.go"
|
||||
export PATH="$GOROOT/bin:$GOPATH/bin:$PATH"
|
||||
|
||||
@ -17,5 +17,3 @@ npm config set prefix '~/.npm-global'
|
||||
|
||||
FONT
|
||||
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,7 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ln -s ~/Documents/dotfiles/alacritty ~/.config/
|
||||
ln -s ~/Documents/dotfiles/alacritty ~/.config/
|
||||
ln -s ~/Documents/dotfiles/foot ~/.config/
|
||||
ln -s ~/Documents/dotfiles/.gitconfig ~/
|
||||
ln -s ~/Documents/dotfiles/mako ~/.config/
|
||||
ln -s ~/Documents/dotfiles/mpv ~/.config/
|
||||
ln -s ~/Documents/dotfiles/nvim ~/.config/
|
||||
@ -14,4 +15,3 @@ ln -s ~/Documents/dotfiles/wofi ~/.config/
|
||||
ln -s ~/Documents/dotfiles/yt-dlp ~/.config/
|
||||
ln -s ~/Documents/dotfiles/zathura ~/.config/
|
||||
ln -s ~/Documents/dotfiles/.zshrc ~/
|
||||
ln -s ~/Documents/dotfiles/.gitconfig ~/
|
||||
|
||||
@ -22,6 +22,3 @@ profile=high-quality
|
||||
scale=ewa_lanczossharp
|
||||
cscale=ewa_lanczossharp
|
||||
|
||||
|
||||
loop-playlist=inf
|
||||
shuffle=yes
|
||||
|
||||
@ -1,243 +0,0 @@
|
||||
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",
|
||||
"WhoIsSethDaniel/mason-tool-installer.nvim",
|
||||
|
||||
{ "j-hui/fidget.nvim", opts = {} },
|
||||
{ "j-hui/fidget.nvim", opts = {} },
|
||||
|
||||
"saghen/blink.cmp",
|
||||
},
|
||||
@ -116,9 +116,9 @@ return {
|
||||
local servers = {
|
||||
texlab = {},
|
||||
-- clangd = {},
|
||||
gopls = {},
|
||||
jdtls = {},
|
||||
-- nil_ls = {},
|
||||
-- gopls = {},
|
||||
-- pyright = {},
|
||||
-- rust_analyzer = {},
|
||||
ts_ls = {},
|
||||
lua_ls = {
|
||||
settings = {
|
||||
|
||||
1
nvim/main.tex
Normal file
1
nvim/main.tex
Normal file
@ -0,0 +1 @@
|
||||
\subsection{}
|
||||
12
nvim/main.ts
Normal file
12
nvim/main.ts
Normal file
@ -0,0 +1,12 @@
|
||||
const Page = () => {
|
||||
const a: number[] = []
|
||||
a.fill(1)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rafce
|
||||
@ -1,2 +0,0 @@
|
||||
# enable automatic env
|
||||
sdkman_auto_env=true
|
||||
@ -1,2 +0,0 @@
|
||||
[Sleep]
|
||||
HibernateDelaySec=30min
|
||||
@ -1,28 +0,0 @@
|
||||
```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
|
||||
```
|
||||
@ -1,11 +0,0 @@
|
||||
[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 $up k
|
||||
set $right l
|
||||
set $term foot
|
||||
set $term ghostty
|
||||
# Launcher: wofi (sostituisce wmenu-run)
|
||||
set $menu wofi -S drun -p Search -I -b -i
|
||||
|
||||
@ -85,7 +85,7 @@ floating_modifier $mod normal
|
||||
bindsym $mod+Shift+c reload
|
||||
|
||||
# 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
|
||||
# Sposta il focus
|
||||
@ -177,15 +177,36 @@ bindsym $mod+r mode "resize"
|
||||
### Notifiche e Controlli Audio/Luminosità
|
||||
set $notification_time 1000
|
||||
|
||||
# Audio controls
|
||||
bindsym XF86AudioMute exec ~/.config/sway/scripts/notification-control.sh mute-toggle
|
||||
bindsym XF86AudioLowerVolume exec ~/.config/sway/scripts/notification-control.sh volume-down
|
||||
bindsym XF86AudioRaiseVolume exec ~/.config/sway/scripts/notification-control.sh volume-up
|
||||
bindsym XF86AudioMicMute exec ~/.config/sway/scripts/notification-control.sh mic-mute-toggle
|
||||
# Comandi per le notifiche (volume, mute, mic, luminosità)
|
||||
set $audio_notification_cmd command -v notify-send >/dev/null && \
|
||||
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}%"
|
||||
|
||||
# Brightness controls
|
||||
bindsym XF86MonBrightnessDown exec ~/.config/sway/scripts/notification-control.sh brightness-down
|
||||
bindsym XF86MonBrightnessUp exec ~/.config/sway/scripts/notification-control.sh brightness-up
|
||||
set $mute_notification_cmd command -v notify-send >/dev/null && \
|
||||
VALUE=$(pactl get-sink-mute @DEFAULT_SINK@ | 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 "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
|
||||
bindsym XF86AudioPlay exec playerctl play-pause
|
||||
@ -193,24 +214,18 @@ bindsym XF86AudioNext exec playerctl next
|
||||
bindsym XF86AudioPrev exec playerctl previous
|
||||
|
||||
### Screenshot e Registrazione Schermo
|
||||
bindsym Print exec grimshot --notify copy output && \
|
||||
notify-send -u normal "📸 Screenshot" "Full screen copied to clipboard"
|
||||
bindsym Print exec grimshot --notify copy output
|
||||
bindsym $mod+Print exec grimshot --notify copy area
|
||||
bindsym $mod+P exec grimshot --notify copy output
|
||||
bindsym $mod+Shift+P exec grimshot --notify copy area
|
||||
|
||||
# Screenshot selected area
|
||||
bindsym $mod+Print exec grimshot --notify copy area && \
|
||||
notify-send -u normal "📸 Screenshot" "Selected area copied to clipboard"
|
||||
bindsym $mod+XF86AudioMedia exec --no-startup-id \
|
||||
(pgrep -x wf-recorder > /dev/null && killall -s SIGINT wf-recorder && notify-send "Recording Stopped") || \
|
||||
(notify-send "Recording Started + Audio." && wf-recorder --audio --file ~/Videos/$(date +'%Y-%m-%d-%H-%M-%S').mp4)
|
||||
|
||||
# Alternative bindings
|
||||
bindsym $mod+P exec grimshot --notify copy output && \
|
||||
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
|
||||
bindsym XF86AudioMedia exec --no-startup-id \
|
||||
(pgrep -x wf-recorder > /dev/null && killall -s SIGINT wf-recorder && notify-send "Recording Stopped") || \
|
||||
(notify-send "Recording Started" && wf-recorder --file ~/Videos/$(date +'%Y-%m-%d-%H-%M-%S').mp4)
|
||||
|
||||
### 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"
|
||||
@ -233,8 +248,8 @@ bar {
|
||||
### Borders e Gaps
|
||||
default_border pixel
|
||||
smart_gaps on
|
||||
gaps outer 2
|
||||
gaps inner 3
|
||||
gaps outer 3
|
||||
gaps inner 5
|
||||
|
||||
# Impostazioni dei colori per il focus delle finestre
|
||||
client.focused $gruvbox_orange $gruvbox_orange $gruvbox_bg_dark $gruvbox_orange
|
||||
@ -249,15 +264,15 @@ exec_always {
|
||||
}
|
||||
|
||||
### Applicazioni in autostart
|
||||
exec keepassxc
|
||||
# exec flatpak run org.keepassxc.KeePassXC
|
||||
exec nextcloud
|
||||
# exec flatpak run com.nextcloud.desktopclient.nextcloud
|
||||
# exec keepassxc
|
||||
exec flatpak run org.keepassxc.KeePassXC
|
||||
# exec nextcloud
|
||||
exec flatpak run com.nextcloud.desktopclient.nextcloud
|
||||
exec wlsunset -S 08:00 -s 18:00
|
||||
exec blueman-applet
|
||||
exec xss-lock -- swaylock -f -i $wallpaper
|
||||
exec --no-startup-id easyeffects --gapplication-service
|
||||
# exec flatpak run com.github.wwmm.easyeffects --gapplication-service
|
||||
# exec --no-startup-id easyeffects --gapplication-service
|
||||
exec flatpak run com.github.wwmm.easyeffects --gapplication-service
|
||||
exec --no-startup-id wluma
|
||||
|
||||
# Avvio del polkit agent GNOME
|
||||
@ -271,8 +286,7 @@ 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
|
||||
|
||||
### Notifiche Desktop e Clip History
|
||||
exec swaync
|
||||
# exec mako
|
||||
exec mako
|
||||
exec wl-paste --type text --watch cliphist store
|
||||
exec wl-paste --type image --watch cliphist store
|
||||
|
||||
@ -302,3 +316,15 @@ for_window [title="Picture in picture"] floating enable, sticky enable
|
||||
for_window [title="Save File"] floating enable
|
||||
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/*
|
||||
|
||||
@ -1,69 +0,0 @@
|
||||
#!/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
|
||||
18
sway/scripts/pin-keymapp.sh
Executable file
18
sway/scripts/pin-keymapp.sh
Executable file
@ -0,0 +1,18 @@
|
||||
#!/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
|
||||
@ -1,30 +0,0 @@
|
||||
#!/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,11 +1,7 @@
|
||||
// -*- mode: jsonc -*-
|
||||
{
|
||||
"height": 34, // Waybar height (to be removed for auto height)
|
||||
"modules-left": [
|
||||
// "hyprland/workspaces",
|
||||
// // "hyprland/window",
|
||||
"sway/workspaces", "sway/mode", "sway/scratchpad"
|
||||
],
|
||||
"modules-left": ["sway/workspaces", "sway/mode", "sway/scratchpad"],
|
||||
"modules-center": ["clock"],
|
||||
"modules-right": [
|
||||
"idle_inhibitor",
|
||||
@ -17,7 +13,6 @@
|
||||
"backlight",
|
||||
"battery",
|
||||
"tray",
|
||||
"custom/notification"
|
||||
],
|
||||
"sway/mode": {
|
||||
"format": "<span style=\"italic\">{}</span>",
|
||||
@ -117,24 +112,4 @@
|
||||
},
|
||||
"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,8 +1,6 @@
|
||||
* {
|
||||
font-family: "Iosevka Nerd Font", "Font Awesome 6 Free", "monospace";
|
||||
font-size: 16px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
@define-color background #282828;
|
||||
@ -27,18 +25,6 @@ window#waybar {
|
||||
background-color: @background;
|
||||
padding: 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 {
|
||||
@ -48,7 +34,6 @@ window#waybar {
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 10px;
|
||||
border-radius: 0px;
|
||||
color: @foreground;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user