Add session manager for tmux.

This will open a tmux session for each monitor.
Add helper script for tmux actions.
This commit is contained in:
2025-09-22 15:26:42 +02:00
parent c4df56cb47
commit 8e563fec51
8 changed files with 622 additions and 11 deletions

View File

@@ -34,10 +34,6 @@ exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock -f --nofork
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet
# Wallpaper rotation script
exec --no-startup-id ~/.config/i3/wallpaper-rotate.sh --once
exec --no-startup-id ~/.config/i3/wallpaper-rotate.sh --daemon 1800
# Use pactl to adjust volume in PulseAudio.
set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
@@ -48,8 +44,15 @@ bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOU
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# start a terminal
bindsym $mod+Return exec alacritty
# start a terminal with smart monitor/workspace-aware tmux sessions
bindsym $mod+Return exec --no-startup-id /home/jens/.config/i3/smart-terminal.sh
# fallback simple terminal (without smart sessions)
bindsym $mod+Shift+Return exec --no-startup-id /home/jens/.config/i3/simple-terminal.sh
# tmux session management keybindings
bindsym $mod+Shift+t exec --no-startup-id /home/jens/.cargo/bin/alacritty -e /home/jens/.config/i3/tmux-session-manager.sh
bindsym $mod+Control+t exec --no-startup-id /home/jens/.config/i3/tmux-session-manager.sh list | rofi -dmenu -p "Tmux Sessions" -width 60
# kill focused window
bindsym $mod+Shift+q kill
@@ -63,6 +66,23 @@ bindsym $mod+Shift+q kill
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
bindsym $mod+d exec rofi -show run
# Screenshot bindings
bindsym Print exec --no-startup-id ~/.local/bin/screenshot.sh full
bindsym Shift+Print exec --no-startup-id ~/.local/bin/screenshot.sh selection
bindsym $mod+Print exec --no-startup-id ~/.local/bin/screenshot.sh window
bindsym Control+Print exec --no-startup-id ~/.local/bin/screenshot.sh clipboard
bindsym Control+Shift+Print exec --no-startup-id ~/.local/bin/screenshot.sh clipboard-selection
# Alternative screenshot bindings for keyboards that send different codes
bindsym XF86ScreenSaver exec --no-startup-id ~/.local/bin/screenshot.sh full
bindsym Shift+XF86ScreenSaver exec --no-startup-id ~/.local/bin/screenshot.sh selection
bindsym $mod+XF86ScreenSaver exec --no-startup-id ~/.local/bin/screenshot.sh window
# Additional screenshot bindings with mod+s combinations
bindsym $mod+Shift+s exec --no-startup-id ~/.local/bin/screenshot.sh selection
bindsym $mod+Control+s exec --no-startup-id ~/.local/bin/screenshot.sh window
bindsym $mod+Control+Shift+s exec --no-startup-id ~/.local/bin/screenshot.sh full
# change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
@@ -116,7 +136,7 @@ bindsym $mod+a focus parent
# Wallpaper controls
bindsym $mod+Shift+w exec --no-startup-id ~/.config/i3/wallpaper-rotate.sh --once
bindsym $mod+Shift+n exec --no-startup-id ~/.config/i3/wallpaper-rotate.sh --category nature
bindsym $mod+Control+s exec --no-startup-id ~/.config/i3/wallpaper-rotate.sh --category space
# bindsym $mod+Control+s exec --no-startup-id ~/.config/i3/wallpaper-rotate.sh --category space # Disabled - conflicts with screenshot binding
bindsym $mod+Control+c exec --no-startup-id ~/.config/i3/wallpaper-rotate.sh --category cityscape
# Define names for default workspaces for which we configure key bindings later on.