Compare commits

..

No commits in common. "main" and "kik" have entirely different histories.
main ... kik

18 changed files with 122 additions and 488 deletions

37
.zshrc
View File

@ -14,22 +14,31 @@ 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"
@ -38,12 +47,10 @@ 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
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!! export GOROOT="$HOME/.local/bin/go"
export SDKMAN_DIR="$HOME/.sdkman" export GOPATH="$HOME/.go"
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh" export PATH="$GOROOT/bin:$GOPATH/bin:$PATH"
# [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

View File

@ -17,5 +17,3 @@ 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]

View File

@ -1,7 +1,8 @@
#!/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/
@ -14,4 +15,3 @@ 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 ~/

View File

@ -22,6 +22,3 @@ profile=high-quality
scale=ewa_lanczossharp scale=ewa_lanczossharp
cscale=ewa_lanczossharp cscale=ewa_lanczossharp
loop-playlist=inf
shuffle=yes

View File

@ -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
```

View File

@ -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 = {},
jdtls = {}, -- pyright = {},
-- nil_ls = {}, -- rust_analyzer = {},
ts_ls = {}, ts_ls = {},
lua_ls = { lua_ls = {
settings = { settings = {

1
nvim/main.tex Normal file
View File

@ -0,0 +1 @@
\subsection{}

12
nvim/main.ts Normal file
View File

@ -0,0 +1,12 @@
const Page = () => {
const a: number[] = []
a.fill(1)
}
rafce

View File

@ -1,2 +0,0 @@
# enable automatic env
sdkman_auto_env=true

View File

@ -1,2 +0,0 @@
[Sleep]
HibernateDelaySec=30min

View File

@ -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
```

View File

@ -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

View File

@ -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 foot set $term ghostty
# 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,15 +177,36 @@ bindsym $mod+r mode "resize"
### Notifiche e Controlli Audio/Luminosità ### Notifiche e Controlli Audio/Luminosità
set $notification_time 1000 set $notification_time 1000
# Audio controls # Comandi per le notifiche (volume, mute, mic, luminosità)
bindsym XF86AudioMute exec ~/.config/sway/scripts/notification-control.sh mute-toggle set $audio_notification_cmd command -v notify-send >/dev/null && \
bindsym XF86AudioLowerVolume exec ~/.config/sway/scripts/notification-control.sh volume-down VALUE=$(pactl get-sink-volume @DEFAULT_SINK@ | head -n 1 | awk '{print substr($5, 1, length($5)-1)}') && \
bindsym XF86AudioRaiseVolume exec ~/.config/sway/scripts/notification-control.sh volume-up notify-send -e -h string:x-canonical-private-synchronous:audio \
bindsym XF86AudioMicMute exec ~/.config/sway/scripts/notification-control.sh mic-mute-toggle -h "int:value:$VALUE" -t $notification_time "Volume: ${VALUE}%"
# Brightness controls set $mute_notification_cmd command -v notify-send >/dev/null && \
bindsym XF86MonBrightnessDown exec ~/.config/sway/scripts/notification-control.sh brightness-down VALUE=$(pactl get-sink-mute @DEFAULT_SINK@ | head -n 1 | awk '{print $2}') && \
bindsym XF86MonBrightnessUp exec ~/.config/sway/scripts/notification-control.sh brightness-up 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 # Controlli multimediali
bindsym XF86AudioPlay exec playerctl play-pause bindsym XF86AudioPlay exec playerctl play-pause
@ -193,24 +214,18 @@ 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
notify-send -u normal "📸 Screenshot" "Full screen copied to clipboard" 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+XF86AudioMedia exec --no-startup-id \
bindsym $mod+Print exec grimshot --notify copy area && \ (pgrep -x wf-recorder > /dev/null && killall -s SIGINT wf-recorder && notify-send "Recording Stopped") || \
notify-send -u normal "📸 Screenshot" "Selected area copied to clipboard" (notify-send "Recording Started + Audio." && wf-recorder --audio --file ~/Videos/$(date +'%Y-%m-%d-%H-%M-%S').mp4)
# Alternative bindings bindsym XF86AudioMedia exec --no-startup-id \
bindsym $mod+P exec grimshot --notify copy output && \ (pgrep -x wf-recorder > /dev/null && killall -s SIGINT wf-recorder && notify-send "Recording Stopped") || \
notify-send -u normal "📸 Screenshot" "Full screen copied to clipboard" (notify-send "Recording Started" && wf-recorder --file ~/Videos/$(date +'%Y-%m-%d-%H-%M-%S').mp4)
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"
@ -233,8 +248,8 @@ bar {
### Borders e Gaps ### Borders e Gaps
default_border pixel default_border pixel
smart_gaps on smart_gaps on
gaps outer 2 gaps outer 3
gaps inner 3 gaps inner 5
# 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
@ -249,15 +264,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
@ -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 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 swaync exec mako
# 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
@ -302,3 +316,15 @@ 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/*

View File

@ -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
View 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

View File

@ -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

View File

@ -1,11 +1,7 @@
// -*- 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": [ "modules-left": ["sway/workspaces", "sway/mode", "sway/scratchpad"],
// "hyprland/workspaces",
// // "hyprland/window",
"sway/workspaces", "sway/mode", "sway/scratchpad"
],
"modules-center": ["clock"], "modules-center": ["clock"],
"modules-right": [ "modules-right": [
"idle_inhibitor", "idle_inhibitor",
@ -17,7 +13,6 @@
"backlight", "backlight",
"battery", "battery",
"tray", "tray",
"custom/notification"
], ],
"sway/mode": { "sway/mode": {
"format": "<span style=\"italic\">{}</span>", "format": "<span style=\"italic\">{}</span>",
@ -117,24 +112,4 @@
}, },
"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,
}
} }

View File

@ -1,8 +1,6 @@
* { * {
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;
@ -27,18 +25,6 @@ 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 {
@ -48,7 +34,6 @@ window#waybar {
} }
#workspaces button { #workspaces button {
padding: 0 10px;
border-radius: 0px; border-radius: 0px;
color: @foreground; color: @foreground;
} }