Compare commits

...

2 Commits

Author SHA1 Message Date
Frieder Schlesier 029f58c1b3 add waybar 2024-04-23 22:44:38 +02:00
Frieder Schlesier b9d5240175 update sway/config 2024-04-23 22:44:28 +02:00
3 changed files with 347 additions and 229 deletions

View File

@ -1,210 +1,166 @@
# Default config for sway
#
# Copy this to ~/.config/sway/config and edit it to your liking.
#
# Read `man 5 sway` for a complete reference.
# Logo key. Use Mod1 for Alt.
set $mod Mod4 set $mod Mod4
# at some point check https://github.com/swaywm/sway/wiki/Useful-add-ons-for-sway
font pango:DejaVu Sans Mono 8 # Configure displays
set $term alacritty # The annoying thing is that sometimes the display ID changes when hotplugging
# my Thunderbolt dock...
set $primary DP-7 DP-8 HDMI-A-1
set $laptop eDP-1
output $laptop pos 1920 135 scale 2
output DP-7 pos 0 0 scale 2
output DP-8 pos 0 0 scale 2
output HDMI-A-1 scale 2
# output * bg ~/.dotfiles/backgrounds/samuel-ferrara-uOi3lg8fGl4-unsplash.jpg fill
# output * bg ~/.dotfiles/backgrounds/scott-rodgerson-lRtzEExP0H8-unsplash.jpg fill
bindsym $mod+Shift+s exec ~/.bin/toggle-display $primary
input type:keyboard {
xkb_layout de,de
xkb_options ctrl:nocaps
}
font pango:Iosevka ss08 7
# Use Mouse+$mod to drag floating windows to their wanted position # Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod floating_modifier $mod
hide_edge_borders both # none|vertical|horizontal|both
output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
# start a terminal
bindsym $mod+Return exec alacritty
# kill focused window # kill focused window
bindsym $mod+Shift+q kill bindsym $mod+Shift+q kill
bindsym $mod+Shift+x exit
bindsym $mod+Shift+r reload
# bindsym $mod+r resize
bindsym $mod+r mode "resize"
# start dmenu (a program launcher) bindsym $mod+Shift+Return exec kitty
# for_window [app_id="^launcher$"] floating enable, sticky enable, resize set 30 ppt 60 ppt, border pixel 10
# set $menu exec $term --class=launcher -e /home/fschl/projects/sway-launcher-desktop/sway-launcher-desktop.sh
# bindsym $mod+d exec $menu
bindsym $mod+d exec wofi --show=drun --lines=10 --prompt=""
# bindsym Ctrl+Shift+l exec i3lock-fancy
bindsym Ctrl+Shift+l exec swaylock \
--screenshots \
--clock \
--indicator \
--indicator-radius 100 \
--indicator-thickness 7 \
--effect-blur 7x9 \
--effect-vignette 0.5:0.5 \
--ring-color 859900 \
--key-hl-color 2aa198 \
--line-color 00000000 \
--inside-color 00000088 \
--separator-color 00000000 \
--grace 2 \
--fade-in 0.2
input * {
xkb_layout "de"
xkb_variant "nodeadkeys"
xkb_options "ctrl:nocaps"
}
# change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym $mod+h split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen
# change container layout (stacked, tabbed, toggle split) # change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split bindsym $mod+e layout toggle split
# use vim keys for window movement
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
# move workspace
bindsym $mod+Mod1+h move workspace to output left
bindsym $mod+Mod1+l move workspace to output right
bindsym $mod+Mod1+Left move workspace to output left
bindsym $mod+Mod1+Right move workspace to output right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left 30 px
bindsym $mod+Shift+Down move down 30 px
bindsym $mod+Shift+Up move up 30 px
bindsym $mod+Shift+Right move right 30 px
bindsym $mod+Shift+h move left 30 px
bindsym $mod+Shift+j move down 30 px
bindsym $mod+Shift+k move up 30 px
bindsym $mod+Shift+l move right 30 px
# split in horizontal orientation
# bindsym $mod+s split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# toggle tiling / floating # toggle tiling / floating
bindsym $mod+Shift+space floating toggle bindsym $mod+Shift+f floating toggle
# toggle pinned floating window
bindsym $mod+Shift+p sticky toggle
# change focus between tiling / floating windows # change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle bindsym $mod+Control+space focus mode_toggle
# float some applications
for_window [class="Tor Browser"] floating enable
bindsym $mod+a focus parent # focus the parent container # focus the parent container
bindsym $mod+a focus parent
# manage workspaces # focus the child container
# look for icons: https://fontawesome.com/icons?d=gallery #bindsym $mod+d focus child
# firefox - browser is placed on this Workspace
set $WS1 "1 " # App launcher
# git - emacs <3 bindsym $mod+space exec fuzzel -w 50 -x 8 -y 8 -r 3 -b 232635ff -t A6Accdff -s A6Accdff -S 232635ff -C c792eacc -m c792eacc -f "Iosevka ss08:weight=light:size=11" --no-fuzzy --icon-theme="Papirus-Dark"
set $WS2 "2 "
# terminal - place for urxvt # Set defaults
set $WS3 "3 " default_orientation horizontal
# envelope - thunderbird windows on here workspace_layout tabbed
set $WS4 "4 "
# code - eclise, intellij IDEs, etc # Configure gaps and borders
set $WS5 "5 " default_border pixel 1
gaps outer 0
gaps inner 4
smart_borders off
hide_edge_borders --i3 none
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws0 "chat"
set $ws1 "1 "
set $ws2 "2 "
set $ws3 "3 "
set $ws4 "4 "
set $ws5 "5 "
# unlock-alt - keepassxc defaults here # unlock-alt - keepassxc defaults here
set $WS8 "8 " set $ws8 "8 "
# linux - less often used terminals for background processes # linux - less often used terminals for background processes
set $WS9 "9 " set $ws9 "9 "
assign [class="^Firefox$"] $WS1 assign [class="^Firefox$"] $ws1
assign [class="^Eclipse$"] $WS5 assign [class="^DebugScreen"] $ws3
assign [class="^Thunderbird$"] $WS4 assign [class="^Thunderbird$"] $ws4
assign [class=".*ee.*ass.*"] $WS8 assign [class=".*ee.*ass.*"] $ws8
# https://faq.i3wm.org/question/3726/workspace-output-multiple-values/index.html%3Fanswer=3731.html#post-id-3731 # Move specific workspaces to outputs
set $LAPTOP LVDS-1 workspace $ws0 output $laptop
# set $EXTERN HDMI-1 workspace $ws1 output $primary $laptop
set $EXTERN VGA-1 workspace $ws2 output $primary $laptop
workspace $ws3 output $laptop
workspace $ws4 output $laptop
workspace $ws5 output $laptop
# monitor settings # Switch to dev workspace by default
bindsym $mod+m mode "monitor" #workspace $ws1
mode "monitor" {
# only laptop
# bindsym 1 exec xrandr --output $LAPTOP --auto --primary --output $CENTER --off $RIGHT --off
# HDMI main, laptop secondary
# bindsym 2 exec xrandr --output $CENTER --primary --auto --output $LAPTOP --auto --left-of $CENTER --output $RIGHT --off
# HDMI main, laptop left, VGA right, *not* supported on X230
# bindsym 3 exec xrandr --output $CENTER --primary --auto --output $LAPTOP --auto --left-of $CENTER --output $RIGHT --auto --right-of $CENTER
# HDMI main, VGA right, laptop off
# bindsym 4 exec xrandr --output $CENTER --primary --auto --output $RIGHT --right-of $CENTER --rotate left --auto --output $LAPTOP --off
# VGA main, laptop left, HDMI off
# bindsym 8 exec xrandr --output $RIGHT --primary --auto --output $LAPTOP --auto --left-of $RIGHT --output $CENTER --off
# HDMI main, VGA right, laptop off
# bindsym 9 exec xrandr --output $CENTER --primary --auto --output $RIGHT --auto --right-of $CENTER --output $LAPTOP --off
# back to normal: Enter or Escape # Switch to workspace
bindsym Return mode "default" bindsym $mod+grave workspace $ws0
bindsym Escape mode "default" bindsym $mod+1 workspace $ws1
bindsym $mod+m mode "default" bindsym $mod+2 workspace $ws2
} bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+p exec xrandr-toggle bindsym $mod+5 workspace $ws5
workspace $WS1 output $EXTERN
workspace $WS2 output $EXTERN
# workspace $WS3 output $LAPTOP
workspace $WS3 output $LAPTOP
workspace $WS4 output $LAPTOP
workspace $WS5 output $EXTERN
workspace $WS8 output $LAPTOP
workspace $WS9 output $LAPTOP
# switch to workspace
bindsym $mod+1 workspace $WS1
bindsym $mod+2 workspace $WS2
bindsym $mod+3 workspace $WS3
bindsym $mod+4 workspace $WS4
bindsym $mod+5 workspace $WS5
bindsym $mod+6 workspace 6 bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7 bindsym $mod+7 workspace 7
bindsym $mod+8 workspace $WS8 bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $WS9 bindsym $mod+9 workspace $ws9
bindsym $mod+0 workspace 10 bindsym $mod+0 workspace 10
# move focused container to workspace # Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace $WS1 bindsym $mod+Shift+grave move container to workspace $ws0
bindsym $mod+Shift+2 move container to workspace $WS2 bindsym $mod+Shift+1 move container to workspace $ws1
bindsym $mod+Shift+3 move container to workspace $WS3 bindsym $mod+Shift+2 move container to workspace $ws2
bindsym $mod+Shift+4 move container to workspace $WS4 bindsym $mod+Shift+3 move container to workspace $ws3
bindsym $mod+Shift+5 move container to workspace $WS5 bindsym $mod+Shift+4 move container to workspace $ws4
bindsym $mod+Shift+5 move container to workspace $ws5
bindsym $mod+Shift+6 move container to workspace 6 bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7 bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace $WS8 bindsym $mod+Shift+8 move container to workspace $ws8
bindsym $mod+Shift+9 move container to workspace $WS9 bindsym $mod+Shift+9 move container to workspace $ws9
bindsym $mod+Shift+0 move container to workspace 10 bindsym $mod+Shift+0 move container to workspace 10
# https://github.com/francma/wob # Bind hotkeys for brightness and volume
set $WOBSOCK $XDG_RUNTIME_DIR/wob.sock bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
exec mkfifo $WOBSOCK && tail -f $WOBSOCK | wob bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+
bindsym --locked $mod+p exec playerctl play-pause
# audio controls
bindsym XF86AudioRaiseVolume exec amixer sset Master 5%+ | sed -En 's/.*\[([0-9]+)%\].*/\1/p' | head -1 > $WOBSOCK
bindsym XF86AudioLowerVolume exec amixer sset Master 5%- | sed -En 's/.*\[([0-9]+)%\].*/\1/p' | head -1 > $WOBSOCK
bindsym XF86AudioMute exec amixer sset Master toggle | sed -En '/\[on\]/ s/.*\[([0-9]+)%\].*/\1/ p; /\[off\]/ s/.*/0/p' | head -1 > $WOBSOCK
bindsym XF86MonBrightnessDown exec brightnessctl set 5%- | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $WOBSOCK
bindsym XF86MonBrightnessUp exec brightnessctl set +5% | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $WOBSOCK
# bindsym XF86AudioRaiseVolume exec amixer set Master 5+ #increase sound volume
# bindsym XF86AudioLowerVolume exec amixer set Master 5- #decrease sound volume
# bindsym XF86AudioMute exec amixer set Master 1+ toggle # mute sound
# bindsym XF86AudioMicMute exec amixer set Capture toggle # mute mic
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
# resize window (you can also use the mouse for that) # resize window (you can also use the mouse for that)
mode "resize" { mode "resize" {
@ -230,66 +186,39 @@ mode "resize" {
bindsym Escape mode "default" bindsym Escape mode "default"
} }
bindsym $mod+r mode "resize" # Screenshots
bindsym Print exec grimshot --notify save output
bindsym Alt+Print exec grimshot --notify save area
# Start i3bar to display a workspace bar (plus the system information i3status # Style the UI
# finds out, if available) client.focused #c792eacc #232635dd #ffffffff #ffffffff #c792eacc
# actually use the rust port https://github.com/greshake/i3status-rust client.unfocused #c792eacc #1c1f2bef #ffffffff #ffffffff #c792eacc
bar {
colors {
background #223232
statusline #93b4a6
# focused_workspace #7d9683 #6c71c4 #fdf6e3
# active_workspace #fdf6e3 #6c71c4 #fdf6e3
# inactive_workspace #002b36 #586e75 #002b36
# urgent_workspace #d33682 #d33682 #fdf6e3
}
status_command ~/.cargo/bin/i3status-rs ~/dotfiles/sway/status-rust.toml # Set up screen locking
# tray_output $LAPTOP set $lock 'swaylock -f -i ~/.dotfiles/backgrounds/samuel-ferrara-uOi3lg8fGl4-unsplash.jpg -s fill --font "Iosevka ss08" --indicator-idle-visible'
tray_output primary exec swayidle -w \
timeout 900 $lock \
timeout 960 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \
before-sleep $lock
output $LAPTOP bindsym Ctrl+Shift+L exec $lock
output $EXTERN # Window rules
font pango:DejaVu Sans Mono, FontAwesome 8 #for_window [title="Firefox — Sharing Indicator"] kill
} for_window [title=".* - mpv$"] floating enable, sticky enable
bar { # Autostart applications
# position top exec waybar
colors { exec mako --border-radius=2 --font="Iosevka ss08 10" --max-visible=5 --outer-margin=5 --margin=3 --background="#1c1f26" --border-color="#89AAEB" --border-size=1 --default-timeout=7000
background #323232 exec nm-applet --indicator
statusline #93b4a6 exec udiskie -t
focused_workspace #7d9683 #6c71b4 #ede6b3 exec gammastep-indicator -l 50.8643:12.1124 -t 6500:3500 -b 1.0:0.7
active_workspace #fdf6e3 #6c71b4 #ede6b3 exec emacs
# focused_workspace #7d9683 #6c71c4 #fdf6e3
# active_workspace #fdf6e3 #6c71c4 #fdf6e3
inactive_workspace #002b36 #586e75 #002b36
urgent_workspace #d33682 #d33682 #fdf6e3
}
status_command i3status --config ~/dotfiles/.i3/status.conf # Set GNOME settings (requires "glib:bin" in Guix)
tray_output $LAPTOP exec gsettings set org.gnome.desktop.interface gtk-theme "Matcha-dark-azul"
exec gsettings set org.gnome.desktop.interface icon-theme "Papirus-Dark"
# i3blocks: http://kumarcode.com/Colorful-i3/ exec gsettings set org.gnome.desktop.interface font-name "Iosevka Aile 11"
# status_command i3blocks -c ~/.i3/i3blocks.conf
output $LAPTOP
output $CENTER
font pango:DejaVu Sans Mono, FontAwesome 8
}
# bar {
# # output $CENTER
# output $RIGHT
# status_command i3status --config ~/.i3/status_small.conf
# tray_output $LAPTOP
# }
# startup programs
exec swaymsg 'exec mako -c /home/fschl/dotfiles/sway/mako.conf'
exec swaymsg 'udiskie'
exec swaymsg 'workspace $WS1; exec firefox;'
exec swaymsg 'workspace $WS2; exec emacs-29.0.50'
exec swaymsg 'workspace $WS3; exec alacritty;'
exec swaymsg 'workspace $WS4; exec thunderbird'
exec swaymsg 'workspace $WS8; exec keepassxc'
# Update DBUS activation records to ensure Flatpak apps work
exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway

99
waybar/config Normal file
View File

@ -0,0 +1,99 @@
{
"layer": "bottom",
"position": "bottom",
"height": 20,
// maybe take another look at e.g. https://gitlab.com/wef/dotfiles/-/blob/master/.config/waybar/config
// https://github.com/Alexays/Waybar/wiki/Configuration
// https://github.com/Alexays/Waybar/wiki/Examples
"modules-left": ["sway/workspaces", "sway/mode"],
"modules-center": [ "custom/disk_root", "network"],
"modules-right": [ "memory", "tray", "battery", "clock", ],
"sway/mode": {
"format": " {}"
},
"sway/workspaces": {
"format": "{name}",
"disable-scroll": true
},
"clock": {
"format": "{:%b %d %H:%M KW%U}",
"tooltip": false
},
"battery": {
"format": " {time} {icon}",
"format-alt": "{capacity}% {icon}",
"format-icons": ["", "", "", "", ""],
"format-charging": "{capacity}% ",
"interval": 30,
"states": {
"warning": 25,
"critical": 10
},
"tooltip": false
},
"custom/disk_home": {
"format": "🏠 {} ",
"interval": 30,
"exec": "df -h --output=avail $HOME | tail -1 | tr -d ' '"
},
"custom/disk_root": {
"format": "💽 {} ",
"interval": 30,
"exec": "df -h --output=avail / | tail -1 | tr -d ' '"
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "<span color='#e88939'>{icon}</span> {temperatureC}°C",
"format-icons": ["", "", ""]
},
"cpu": {
"format": "🏭 {usage}%",
"tooltip": false
},
"memory": {
"format": "💾 {used:0.1f}G"
},
"custom/mail": {
"format": "📩{}",
"interval": 30,
"exec": "notmuch count tag:flagged OR tag:inbox AND NOT tag:killed"
},
"network": {
// "family": "ipv6",
"interface": "wlp3*", // (Optional) To force the use of this interface
"format-wifi": "<span color='#589df6'></span> <span color='gray'>{essid}</span> {frequency} <span color='#589df6'>{signaldBm} dB</span> <span color='#589df6'>⇵</span> {bandwidthUpBits}/{bandwidthDownBits}",
"format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "Disconnected ⚠",
"format-alt": "{ifname}: {ipaddr}/{cidr}",
"interval": 5
},
//"timer": {
// "interval": 1,
// "exec": "~/.config/waybar/timer.sh",
// "exec-if": "pgrep emacs",
// "escape": true
//},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
},
"tooltip": false
},
"tray": {
"icon-size": 20,
"show-passive-items": true
},
"cpu": {
"interval": 2,
"format": "{icon0}{icon1}{icon2}{icon3}{icon4}{icon5}{icon6}{icon7}",
"format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"],
},
}

90
waybar/style.css Normal file
View File

@ -0,0 +1,90 @@
* {
border: none;
border-radius: 0;
font-family: Iosevka ss08;
font-size: 13px;
box-shadow: none;
text-shadow: none;
transition-duration: 0s;
}
window.eDP-1 * {
font-size: 11px;
}
window {
color: #ffffff;
background: rgba(35, 38, 53, 0.8);
}
#workspaces {
margin: 0 2px;
}
#workspaces button {
padding: 0 5px;
color: rgba(217, 216, 216, 0.6);
}
#workspaces button.visible {
color: rgba(217, 216, 216, 1);
}
#workspaces button.focused {
font-weight: bold;
/* border-bottom: 2px solid rgba(217, 216, 216, 1); */
}
#workspaces button.unfocused {
/* border-bottom: 2px solid rgba(217, 216, 216, 0); */
}
#workspaces button.urgent {
color: rgba(238, 46, 36, 1);
}
#mode,
#battery,
#cpu,
#memory,
#network,
#pulseaudio,
#idle_inhibitor,
#backlight,
#custom-storage,
#custom-spotify,
#custom-weather,
#custom-mail {
margin: 0px 6px 0px 10px;
min-width: 25px;
}
#clock {
margin: 0px 2px 0px 2px;
min-width: 120px;
}
#custom-timer {
font-weight: bold;
color: rgba(247, 172, 66, 1);
}
#battery.warning {
color: rgba(255, 210, 4, 1);
}
#battery.critical {
color: rgba(238, 46, 36, 1);
}
#battery.charging {
color: rgba(217, 216, 216, 1);
}
#custom-storage.warning {
color: rgba(255, 210, 4, 1);
}
#custom-storage.critical {
color: rgba(238, 46, 36, 1);
}