diff --git a/.bashrc b/.bashrc index f2c02d7..99cf20b 100644 --- a/.bashrc +++ b/.bashrc @@ -119,11 +119,11 @@ if ! shopt -oq posix; then fi PATH=$PATH:~/.local/bin/ +export WLR_DRM_NO_MODIFIERS=1 alias vim='nvim' alias ssh='ssh -XC' alias xfreerdp='xfreerdp +clipboard /dynamic-resolution ' -alias discord='discord --enable-features=UseOzonePlatform --ozone-platform=wayland ' # Set up fzf key bindings and fuzzy completion eval "$(fzf --bash)" diff --git a/.config/foot/foot.ini b/.config/foot/foot.ini index f0e741e..c6c5a24 100644 --- a/.config/foot/foot.ini +++ b/.config/foot/foot.ini @@ -21,7 +21,7 @@ font=JetBrainsMono NF:size=10 # underline-offset= # underline-thickness= # box-drawings-uses-font-glyphs=no -dpi-aware=no +#dpi-aware=no # initial-window-size-pixels=700x500 # Or, # initial-window-size-chars= @@ -31,7 +31,7 @@ dpi-aware=no # resize-delay-ms=100 # bold-text-in-bright=no -word-delimiters=,│`|:"'()[]{}<> +#word-delimiters=,│`|:"'()[]{}<> # selection-target=primary # workers= # utmp-helper=/usr/lib/utempter/utempter # When utmp backend is ‘libutempter’ (Linux) diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf index aae3cbd..dc611fb 100644 --- a/.config/hypr/hyprland.conf +++ b/.config/hypr/hyprland.conf @@ -24,7 +24,8 @@ autogenerated = 0 # remove this line to remove the warning ################ # See https://wiki.hyprland.org/Configuring/Monitors/ -monitor= eDP-1,preferred,auto,1.8 +monitor=DP-6,preferred,0x0,auto +monitor=eDP-1,preferred,0x2160,1.8 ################### @@ -34,7 +35,7 @@ monitor= eDP-1,preferred,auto,1.8 # See https://wiki.hyprland.org/Configuring/Keywords/ # Set programs that you use -$terminal = foot +$terminal = footclient $fileManager = dolphin $menu = wofi --show drun @@ -46,6 +47,8 @@ $menu = wofi --show drun # Autostart necessary processes (like notifications daemons, status bars, etc.) # Or execute your favorite apps at launch like this: exec-once = waybar +exec-once = foot --server +exec-once = nextcloud-desktop-client.nextcoud # exec-once = $terminal # exec-once = nm-applet & # exec-once = waybar & hyprpaper & firefox @@ -69,17 +72,17 @@ env = HYPRCURSOR_SIZE,24 # https://wiki.hyprland.org/Configuring/Variables/#general general { - gaps_in = 5 - gaps_out = 20 + gaps_in = 2 + gaps_out = 2 - border_size = 2 + border_size = 1 # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.inactive_border = rgba(595959aa) # Set to true enable resizing windows by clicking and dragging on borders and gaps - resize_on_border = false + resize_on_border = true # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = false @@ -187,10 +190,11 @@ $mainMod = SUPER # Sets "Windows" key as main modifier # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod, RETURN, exec, $terminal -bind = $mainMod, E, exec, $fileManager bind = $mainMod, R, exec, $menu -#bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, E, exec, $fileManager + #bind = $mainMod, J, togglesplit, # dwindle +bind = $mainMod, W, togglegroup, bind = $mainMod SHIFT, SPACE, togglefloating, bind = $mainMod SHIFT, Q, killactive, bind = $mainMod SHIFT, M, exit, @@ -201,17 +205,23 @@ bind = $mainMod, l, movefocus, r bind = $mainMod, k, movefocus, u bind = $mainMod, j, movefocus, d +# Move focus with hjkl +bind = $mainMod SHIFT, h, movewindoworgroup, l +bind = $mainMod SHIFT, l, movewindoworgroup, r +bind = $mainMod SHIFT, k, movewindoworgroup, u +bind = $mainMod SHIFT, j, movewindoworgroup, d + +# move inside of grouped windows +bind = $mainMod, n, changegroupactive, f +bind = $mainMod, p, changegroupactive, b + + # Move focus with mainMod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d -# Moce windows around -bind = $mainMod SHIFT, h, movewindow, l -bind = $mainMod SHIFT, l, movewindow, r -bind = $mainMod SHIFT, k, movewindow, u -bind = $mainMod SHIFT, j, movewindow, d # Switch workspaces with mainMod + [0-9] bind = $mainMod, 1, workspace, 1 @@ -237,17 +247,17 @@ bind = $mainMod SHIFT, 8, movetoworkspace, 8 bind = $mainMod SHIFT, 9, movetoworkspace, 9 bind = $mainMod SHIFT, 0, movetoworkspace, 10 -bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ -bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- -bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle -# Requires playerctl -bindl = , XF86AudioPlay, exec, playerctl play-pause -bindl = , XF86AudioPrev, exec, playerctl previous -bindl = , XF86AudioNext, exec, playerctl next +bind = $mainMod, F, fullscreen + +bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindel = ,XF86MonBrightnessDown, exec, brightnessctl set 5%- +bindel = ,XF86MonBrightnessUp ,exec ,brightnessctl set 5%+ # Example special workspace (scratchpad) -bind = $mainMod, S, togglespecialworkspace, magic -bind = $mainMod SHIFT, S, movetoworkspace, special:magic +bind = $mainMod, MINUS, togglespecialworkspace, magic +bind = $mainMod SHIFT, MINUS, movetoworkspace, special:magic # Scroll through existing workspaces with mainMod + scroll bind = $mainMod, mouse_down, workspace, e+1 diff --git a/.config/sway/config b/.config/sway/config index a41b0a3..fdb5c02 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -9,14 +9,15 @@ font 'JetBrainsMono NF' 9 ### Variables # # Logo key. Use Mod1 for Alt. -set $mod Mod4 +#set $mod Mod4 +set $mod Mod1 # Home row direction keys, like vim set $left h set $down j set $up k set $right l # Your preferred terminal emulator -set $term footclient +set $term foot # Your preferred application launcher # Note: pass the final command to swaymsg so that the resulting window can be opened # on the original workspace that the command was run on. @@ -28,6 +29,7 @@ include /etc/sway/config-vars.d/* # # Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) output * bg /usr/share/backgrounds/ubuntu-wallpaper-d.png fill +hide_edge_borders smart # # Example configuration: # @@ -35,13 +37,16 @@ output * bg /usr/share/backgrounds/ubuntu-wallpaper-d.png fill # # You can get the names of your outputs by running: swaymsg -t get_outputs -output eDP-1 scale 1.8 -output DP-6 scale 1.8 +output * scale 1.8 + +set $laptop eDP-1 +output $laptop mode 2880x1800@60Hz scale 2 +bindswitch --reload --locked lid:on output $laptop disable +bindswitch --reload --locked lid:off output $laptop enable +exec_always ./scripts/clamshell-mode.sh + ### Idle configuration -# -# Example configuration: -# exec swayidle -w \ timeout 300 'swaylock -f -c 000000' \ timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \ @@ -66,145 +71,8 @@ exec swayidle -w \ # Read `man 5 sway-input` for more information about this section. ### Key bindings -# -# Basics: -# - # Start a terminal - bindsym $mod+Return exec $term +include ./keybinds.conf - # Kill focused window - bindsym $mod+Shift+q kill - - # Start your launcher - bindsym $mod+d exec $menu - - # Drag floating windows by holding down $mod and left mouse button. - # Resize them with right mouse button + $mod. - # Despite the name, also works for non-floating windows. - # Change normal to inverse to use left mouse button for resizing and right - # mouse button for dragging. - floating_modifier $mod normal - - # Reload the configuration file - bindsym $mod+Shift+c reload - - # Exit sway (logs you out of your Wayland session) - bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' -# -# Moving around: -# - # Move your focus around - bindsym $mod+$left focus left - bindsym $mod+$down focus down - bindsym $mod+$up focus up - bindsym $mod+$right focus right - # Or use $mod+[up|down|left|right] - bindsym $mod+Left focus left - bindsym $mod+Down focus down - bindsym $mod+Up focus up - bindsym $mod+Right focus right - - # Move the focused window with the same, but add Shift - bindsym $mod+Shift+$left move left - bindsym $mod+Shift+$down move down - bindsym $mod+Shift+$up move up - bindsym $mod+Shift+$right move right - # Ditto, with arrow keys - bindsym $mod+Shift+Left move left - bindsym $mod+Shift+Down move down - bindsym $mod+Shift+Up move up - bindsym $mod+Shift+Right move right -# -# Workspaces: -# - # Switch to workspace - bindsym $mod+1 workspace number 1 - bindsym $mod+2 workspace number 2 - bindsym $mod+3 workspace number 3 - bindsym $mod+4 workspace number 4 - bindsym $mod+5 workspace number 5 - bindsym $mod+6 workspace number 6 - bindsym $mod+7 workspace number 7 - bindsym $mod+8 workspace number 8 - bindsym $mod+9 workspace number 9 - bindsym $mod+0 workspace number 10 - # Move focused container to workspace - bindsym $mod+Shift+1 move container to workspace number 1 - bindsym $mod+Shift+2 move container to workspace number 2 - bindsym $mod+Shift+3 move container to workspace number 3 - bindsym $mod+Shift+4 move container to workspace number 4 - bindsym $mod+Shift+5 move container to workspace number 5 - bindsym $mod+Shift+6 move container to workspace number 6 - bindsym $mod+Shift+7 move container to workspace number 7 - bindsym $mod+Shift+8 move container to workspace number 8 - bindsym $mod+Shift+9 move container to workspace number 9 - bindsym $mod+Shift+0 move container to workspace number 10 - # Note: workspaces can have any name you want, not just numbers. - # We just use 1-10 as the default. -# -# Layout stuff: -# - # You can "split" the current object of your focus with - # $mod+b or $mod+v, for horizontal and vertical splits - # respectively. - bindsym $mod+b splith - bindsym $mod+v splitv - - # Switch the current container between different layout styles - bindsym $mod+s layout stacking - bindsym $mod+w layout tabbed - bindsym $mod+e layout toggle split - - # Make the current focus fullscreen - bindsym $mod+f fullscreen - - # Toggle the current focus between tiling and floating mode - bindsym $mod+Shift+space floating toggle - - # Swap focus between the tiling area and the floating area - bindsym $mod+space focus mode_toggle - - # Move focus to the parent container - bindsym $mod+a focus parent -# -# Scratchpad: -# - # Sway has a "scratchpad", which is a bag of holding for windows. - # You can send windows there and get them back later. - - # Move the currently focused window to the scratchpad - bindsym $mod+Shift+minus move scratchpad - - # Show the next scratchpad window or hide the focused scratchpad window. - # If there are multiple scratchpad windows, this command cycles through them. - bindsym $mod+minus scratchpad show -# -# Resizing containers: -# -mode "resize" { - # left will shrink the containers width - # right will grow the containers width - # up will shrink the containers height - # down will grow the containers height - bindsym $right resize shrink width 10px - bindsym $down resize grow height 10px - bindsym $up resize shrink height 10px - bindsym $left resize grow width 10px - - # Ditto, with arrow keys - bindsym Left resize shrink width 10px - bindsym Down resize grow height 10px - bindsym Up resize shrink height 10px - bindsym Right resize grow width 10px - - # Return to default mode - bindsym Return mode "default" - bindsym Escape mode "default" -} - -bindsym $mod+r mode "resize" - -# # Status Bar: # # Read `man 5 sway-bar` for more information about this section. @@ -244,9 +112,6 @@ bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle \ bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle bindsym XF86MonBrightnessDown exec brightnessctl set 5%- bindsym XF86MonBrightnessUp exec brightnessctl set 5%+ -bindsym XF86AudioPlay exec playerctl play-pause -bindsym XF86AudioNext exec playerctl next -bindsym XF86AudioPrev exec playerctl previous bindsym XF86Search exec bemenu-run bindsym $mod+p exec grimshot savecopy anything @@ -254,9 +119,15 @@ bindsym $mod+p exec grimshot savecopy anything bindgesture swipe:right workspace prev bindgesture swipe:left workspace next +default_border pixel 2 +default_floating_border pixel 2 +titlebar_padding 2 +titlebar_border_thickness 2 + exec nextcloud-desktop-client.nextcloud -exec foot --server exec mako +exec preload + include /etc/sway/config.d/* diff --git a/.config/sway/keybinds.conf b/.config/sway/keybinds.conf new file mode 100644 index 0000000..543e324 --- /dev/null +++ b/.config/sway/keybinds.conf @@ -0,0 +1,139 @@ +### Key bindings +# +# Basics: +# +# Start a terminal +bindsym $mod+Return exec $term + +# Kill focused window +bindsym $mod+Shift+q kill + +# Start your launcher +bindsym $mod+d exec $menu + +# Drag floating windows by holding down $mod and left mouse button. +# Resize them with right mouse button + $mod. +# Despite the name, also works for non-floating windows. +# Change normal to inverse to use left mouse button for resizing and right +# mouse button for dragging. +floating_modifier $mod normal + +# Reload the configuration file +bindsym $mod+Shift+c reload + +# Exit sway (logs you out of your Wayland session) +bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' +# +# Moving around: +# +# Move your focus around +bindsym $mod+$left focus left +bindsym $mod+$down focus down +bindsym $mod+$up focus up +bindsym $mod+$right focus right +# Or use $mod+[up|down|left|right] +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# Move the focused window with the same, but add Shift +bindsym $mod+Shift+$left move left +bindsym $mod+Shift+$down move down +bindsym $mod+Shift+$up move up +bindsym $mod+Shift+$right move right +# Ditto, with arrow keys +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right +# +# Workspaces: +# +# Switch to workspace +bindsym $mod+1 workspace number 1 +bindsym $mod+2 workspace number 2 +bindsym $mod+3 workspace number 3 +bindsym $mod+4 workspace number 4 +bindsym $mod+5 workspace number 5 +bindsym $mod+6 workspace number 6 +bindsym $mod+7 workspace number 7 +bindsym $mod+8 workspace number 8 +bindsym $mod+9 workspace number 9 +bindsym $mod+0 workspace number 10 +# Move focused container to workspace +bindsym $mod+Shift+1 move container to workspace number 1 +bindsym $mod+Shift+2 move container to workspace number 2 +bindsym $mod+Shift+3 move container to workspace number 3 +bindsym $mod+Shift+4 move container to workspace number 4 +bindsym $mod+Shift+5 move container to workspace number 5 +bindsym $mod+Shift+6 move container to workspace number 6 +bindsym $mod+Shift+7 move container to workspace number 7 +bindsym $mod+Shift+8 move container to workspace number 8 +bindsym $mod+Shift+9 move container to workspace number 9 +bindsym $mod+Shift+0 move container to workspace number 10 +# Note: workspaces can have any name you want, not just numbers. +# We just use 1-10 as the default. +# +# Layout stuff: +# +# You can "split" the current object of your focus with +# $mod+b or $mod+v, for horizontal and vertical splits +# respectively. +bindsym $mod+b splith +bindsym $mod+v splitv + +# Switch the current container between different layout styles +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# Make the current focus fullscreen +bindsym $mod+f fullscreen + +# Toggle the current focus between tiling and floating mode +bindsym $mod+Shift+space floating toggle + +# Swap focus between the tiling area and the floating area +bindsym $mod+space focus mode_toggle + +# Move focus to the parent container +bindsym $mod+a focus parent +# +# Scratchpad: +# +# Sway has a "scratchpad", which is a bag of holding for windows. +# You can send windows there and get them back later. + +# Move the currently focused window to the scratchpad +bindsym $mod+Shift+minus move scratchpad + +# Show the next scratchpad window or hide the focused scratchpad window. +# If there are multiple scratchpad windows, this command cycles through them. +bindsym $mod+minus scratchpad show +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $right resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $left resize grow width 10px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+r mode "resize" + diff --git a/.config/sway/scripts/clamshell-mode.sh b/.config/sway/scripts/clamshell-mode.sh new file mode 100644 index 0000000..994d67d --- /dev/null +++ b/.config/sway/scripts/clamshell-mode.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +LAPTOP_OUTPUT="eDP-1" +LID_STATE_FILE="/proc/acpi/button/lid/LID0/state" + +read -r LS < "$LID_STATE_FILE" + +case "$LS" in +*open) swaymsg output "$LAPTOP_OUTPUT" enable ;; +*closed) swaymsg output "$LAPTOP_OUTPUT" disable ;; +*) echo "Could not get lid state" >&2 ; exit 1 ;; +esac