diff --git a/dot_config/i3/bar b/dot_config/i3/bar new file mode 100644 index 0000000..6730949 --- /dev/null +++ b/dot_config/i3/bar @@ -0,0 +1,27 @@ +# vim:ft=i3config +bar { + status_command i3status-rs + + tray_output primary + tray_padding 2 + + position top + workspace_min_width 20 + + mode hide + hidden_state hide + modifier $mod + + strip_workspace_numbers yes + strip_workspace_name no + + colors { + separator #A6ADC8 + background #000000 + statusline #1E1E2E + focused_workspace #F5C2E7 #F5C2E7 #11111B + active_workspace #CBA6F7 #CBA6F7 #11111B + inactive_workspace #11111B #11111B #CDD6F4 + urgent_workspace #F38BA8 #F38BA8 #11111B + } +} diff --git a/dot_config/i3/config b/dot_config/i3/config index 12b088b..8287bbc 100644 --- a/dot_config/i3/config +++ b/dot_config/i3/config @@ -1,5 +1,5 @@ # vim:ft=i3config:fdm=marker -# Please see http://i3wm.org/docs/userguide.html for a complete reference! +# reference: http://i3wm.org/docs/userguide.html # main mod key set $mod Mod4 @@ -8,107 +8,32 @@ set $modFocus Mod4+Ctrl set $modMove Mod4+Shift # hyper - CMD+Shift+Control+Alt set $hyper Mod4+Mod1+Shift+Ctrl + # programs to easily switch set $browser firefox -set $fileman thunar +set $fileman pcmanfm set $terminal wezterm-gui start set $pwman 1password --quick-access # Set DPI value set_from_resource $dpi Xft.dpi 140 -# Configure border style -default_border pixel 2 -default_floating_border pixel 2 -default_orientation auto - -# change borders -bindsym $mod+Shift+b border none -bindsym $mod+b border pixel 2 -bindsym $mod+n border normal - -# Font for window titles. Will also be used by the bar unless a different font -# is used in the bar {} block below. -font pango:Berkeley Mono, Symbols Nerd Font Mono, Inter 16 -title_align center - # Use Mouse+$mod to drag floating windows floating_modifier $mod -# 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 -# kill focused window -bindsym $mod+Shift+q kill +# Configure border style +default_border pixel 2 +default_floating_border pixel 2 -# Start Applications -bindsym $mod+Shift+Return exec $terminal -bindsym $mod+e exec --no-startup-id $fileman -bindsym $mod+t exec --no-startup-id pkill picom -bindsym $mod+Ctrl+t exec --no-startup-id picom -b -bindsym $mod+Ctrl+x exec --no-startup-id xkill -bindsym $hyper+p --release exec --no-startup-id flameshot gui -bindsym $hyper+space exec --no-startup-id gopass ls --flat | rofi -dmenu | xargs --no-run-if-empty gopass show -o | xdotool type --clearmodifiers --file - - -# change focus -bindsym $modFocus+h focus left -bindsym $modFocus+j focus down -bindsym $modFocus+k focus up -bindsym $modFocus+l focus right -bindsym $modFocus+Left focus left -bindsym $modFocus+Down focus down -bindsym $modFocus+Up focus up -bindsym $modFocus+Right focus right -# move focused window -bindsym $modMove+h move left -bindsym $modMove+j move down -bindsym $modMove+k move up -bindsym $modMove+l move right -bindsym $modMove+Left move left -bindsym $modMove+Down move down -bindsym $modMove+Up move up -bindsym $modMove+Right move right - -# move workspaces across monitors -bindsym $modMove+greater move workspace to output right -bindsym $modMove+less move workspace to output left - -# workspace back and forth (with/without active container) +default_orientation auto +workspace_layout default workspace_auto_back_and_forth yes -# split orientation -bindsym $mod+q split toggle - -# toggle fullscreen mode for the focused container -bindsym $mod+f fullscreen toggle - -# change container layout (stacked, tabbed, toggle split) -bindsym $mod+s layout toggle - -# toggle tiling / floating -bindsym $mod+Shift+d floating toggle -# change focus between tiling / floating windows -bindsym $mod+d focus mode_toggle - -# toggle sticky -bindsym $mod+Shift+s sticky toggle - -# focus the parent container -bindsym $mod+a focus parent - -# move the currently focused window to the scratchpad -bindsym $mod+Shift+Tab 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+Tab scratchpad show - -bindsym $mod+m [class="discord"] scratchpad show +# font for window titles. also used by the bar unless a font is set in bar {} +font pango:Berkeley Mono, Symbols Nerd Font Mono 16 +title_align center # Workspace names -# to display names or symbols instead of plain workspace numbers you can use -# something like: set $ws1 1:mail -# set $ws2 2: set $ws1 1:Ⅰ set $ws2 2:Ⅱ set $ws3 3:Ⅲ @@ -120,62 +45,6 @@ set $ws8 8:Ⅷ set $ws9 9:Ⅸ set $ws10 10:Ⅹ -# switch to workspace -bindsym $modFocus+1 workspace $ws1 -bindsym $modFocus+2 workspace $ws2 -bindsym $modFocus+3 workspace $ws3 -bindsym $modFocus+4 workspace $ws4 -bindsym $modFocus+5 workspace $ws5 -bindsym $modFocus+6 workspace $ws6 -bindsym $modFocus+7 workspace $ws7 -bindsym $modFocus+8 workspace $ws8 -bindsym $modFocus+9 workspace $ws9 -bindsym $modFocus+0 workspace $ws10 - -# Move to workspace with focused container -bindsym $modMove+1 move container to workspace $ws1; workspace $ws1 -bindsym $modMove+2 move container to workspace $ws2; workspace $ws2 -bindsym $modMove+3 move container to workspace $ws3; workspace $ws3 -bindsym $modMove+4 move container to workspace $ws4; workspace $ws4 -bindsym $modMove+5 move container to workspace $ws5; workspace $ws5 -bindsym $modMove+6 move container to workspace $ws6; workspace $ws6 -bindsym $modMove+7 move container to workspace $ws7; workspace $ws7 -bindsym $modMove+8 move container to workspace $ws8; workspace $ws8 -bindsym $modMove+9 move container to workspace $ws9; workspace $ws9 -bindsym $modMove+0 move container to workspace $ws10; workspace $ws10 - -# Set shut down, restart and locking features -bindsym $mod+Escape mode "$mode_system" -set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown -mode "$mode_system" { - bindsym l exec --no-startup-id i3exit lock, mode "default" - bindsym s exec --no-startup-id i3exit suspend, mode "default" - bindsym u exec --no-startup-id i3exit switch_user, mode "default" - bindsym e exec --no-startup-id i3exit logout, mode "default" - bindsym h exec --no-startup-id i3exit hibernate, mode "default" - bindsym r exec --no-startup-id i3exit reboot, mode "default" - bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default" - - # exit system mode: "Enter" or "Escape" - bindsym Return mode "default" - bindsym Escape mode "default" -} - -# Resize window (you can also use the mouse for that) -bindsym $mod+r mode "resize" -mode "resize" { - bindsym h resize shrink width 5 px or 5 ppt - bindsym j resize grow height 5 px or 5 ppt - bindsym k resize shrink height 5 px or 5 ppt - bindsym l resize grow width 5 px or 5 ppt - bindsym Left resize shrink width 10 px or 10 ppt - bindsym Down resize grow height 10 px or 10 ppt - bindsym Up resize shrink height 10 px or 10 ppt - bindsym Right resize grow width 10 px or 10 ppt - bindsym Return mode "default" - bindsym Escape mode "default" -} - # Autostart applications exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec --no-startup-id /usr/bin/gnome-keyring-daemon -c secrets @@ -187,70 +56,6 @@ exec --no-startup-id setxkbmap -option caps:ctrl_modifier exec --no-startup-id sleep 1; picom -b exec --no-startup-id ~/.screenlayout/main.sh -# Set inner/outer gaps -gaps inner 1 -gaps outer 1 - -# Smart gaps (gaps used if only more than one container on the workspace) -smart_gaps on - -# Smart borders (draw borders around container only if it is not the only container on this workspace) -# on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0) -smart_borders no_gaps - -# Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces. -set $mode_gaps Gaps: (o) outer, (i) inner -set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) -set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) -bindsym $mod+Shift+g mode "$mode_gaps" - -mode "$mode_gaps" { - bindsym o mode "$mode_gaps_outer" - bindsym i mode "$mode_gaps_inner" - bindsym Return mode "default" - bindsym Escape mode "default" -} - -mode "$mode_gaps_inner" { - bindsym plus gaps inner current plus 5 - bindsym minus gaps inner current minus 5 - bindsym 0 gaps inner current set 0 - - bindsym Shift+plus gaps inner all plus 5 - bindsym Shift+minus gaps inner all minus 5 - bindsym Shift+0 gaps inner all set 0 - - bindsym Return mode "default" - bindsym Escape mode "default" -} - -mode "$mode_gaps_outer" { - bindsym plus gaps outer current plus 5 - bindsym minus gaps outer current minus 5 - bindsym 0 gaps outer current set 0 - - bindsym Shift+plus gaps outer all plus 5 - bindsym Shift+minus gaps outer all minus 5 - bindsym Shift+0 gaps outer all set 0 - - bindsym Return mode "default" - bindsym Escape mode "default" -} - - -# rofi instead of drun -bindsym $mod+space exec --no-startup-id rofi -show drun -dpi $dpi - -# 1password -bindsym $mod+Shift+space exec --no-startup-id $pwman - -bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% -bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% -bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle -bindsym XF86AudioNext exec --no-startup-id playerctl next -bindsym XF86AudioPrev exec --no-startup-id playerctl previous -bindsym XF86AudioPause exec --no-startup-id playerctl play-pause - # Theme colors # class title bg text indic. border client.focused #F5C2E7 #000000 #CDD6F4 #F5E0DC #F5C2E7 @@ -260,31 +65,5 @@ client.urgent #F38BA8 #000000 #F38BA8 #313244 #F38BA8 client.placeholder #313244 #000000 #CDD6F4 #313244 #313244 client.background #000000 -bar { - status_command i3status-rs - - tray_output primary - tray_padding 2 - - position top - workspace_min_width 20 - - mode hide - hidden_state hide - modifier $mod - - strip_workspace_numbers yes - strip_workspace_name no - - colors { - separator #A6ADC8 - background #000000 - statusline #1E1E2E - focused_workspace #F5C2E7 #F5C2E7 #11111B - active_workspace #CBA6F7 #CBA6F7 #11111B - inactive_workspace #11111B #11111B #CDD6F4 - urgent_workspace #F38BA8 #F38BA8 #11111B - } -} - -include ~/.config/i3/config.d/* +include bar +include config.d/* diff --git a/dot_config/i3/config.d/gaps b/dot_config/i3/config.d/gaps new file mode 100644 index 0000000..44c57ce --- /dev/null +++ b/dot_config/i3/config.d/gaps @@ -0,0 +1,51 @@ +# vim:ft=i3config:fdm=marker + +# Set inner/outer gaps +gaps inner 1 +gaps outer 1 + +# Smart gaps (gaps used if only more than one container on the workspace) +smart_gaps on + +# Smart borders (draw borders around container only if it is not the only container on this workspace) +# on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0) +smart_borders no_gaps + +# Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces. +set $mode_gaps Gaps: (o) outer, (i) inner +set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) +set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) +bindsym $mod+Shift+g mode "$mode_gaps" + +mode "$mode_gaps" { + bindsym o mode "$mode_gaps_outer" + bindsym i mode "$mode_gaps_inner" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +mode "$mode_gaps_inner" { + bindsym plus gaps inner current plus 5 + bindsym minus gaps inner current minus 5 + bindsym 0 gaps inner current set 0 + + bindsym Shift+plus gaps inner all plus 5 + bindsym Shift+minus gaps inner all minus 5 + bindsym Shift+0 gaps inner all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} + +mode "$mode_gaps_outer" { + bindsym plus gaps outer current plus 5 + bindsym minus gaps outer current minus 5 + bindsym 0 gaps outer current set 0 + + bindsym Shift+plus gaps outer all plus 5 + bindsym Shift+minus gaps outer all minus 5 + bindsym Shift+0 gaps outer all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} diff --git a/dot_config/i3/config.d/shortcuts b/dot_config/i3/config.d/shortcuts new file mode 100644 index 0000000..9e0e654 --- /dev/null +++ b/dot_config/i3/config.d/shortcuts @@ -0,0 +1,141 @@ +# vim:ft=i3config:fdm=marker + +# change borders +bindsym $mod+Shift+b border none +bindsym $mod+b border pixel 2 +bindsym $mod+n border normal + +# 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 +# kill focused window +bindsym $mod+Shift+q kill + +# Start Applications +bindsym $mod+Shift+Return exec $terminal +bindsym $mod+e exec --no-startup-id $fileman +bindsym $mod+t exec --no-startup-id pkill picom +bindsym $mod+Ctrl+t exec --no-startup-id picom -b +bindsym $mod+Ctrl+x exec --no-startup-id xkill +bindsym $hyper+p --release exec --no-startup-id flameshot gui +bindsym $hyper+space exec --no-startup-id gopass ls --flat | rofi -dmenu -dpi $dpi | xargs --no-run-if-empty gopass show -o | xdotool type --clearmodifiers --file - + +# change focus +bindsym $modFocus+h focus left +bindsym $modFocus+j focus down +bindsym $modFocus+k focus up +bindsym $modFocus+l focus right +bindsym $modFocus+Left focus left +bindsym $modFocus+Down focus down +bindsym $modFocus+Up focus up +bindsym $modFocus+Right focus right +# move focused window +bindsym $modMove+h move left +bindsym $modMove+j move down +bindsym $modMove+k move up +bindsym $modMove+l move right +bindsym $modMove+Left move left +bindsym $modMove+Down move down +bindsym $modMove+Up move up +bindsym $modMove+Right move right + +# move workspaces across monitors +bindsym $modMove+greater move workspace to output right +bindsym $modMove+less move workspace to output left + +# split orientation +bindsym $mod+q split toggle + +# toggle fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout toggle + +# toggle tiling / floating +bindsym $mod+Shift+d floating toggle +# change focus between tiling / floating windows +bindsym $mod+d focus mode_toggle + +# toggle sticky +bindsym $mod+Shift+s sticky toggle + +# focus the parent container +bindsym $mod+a focus parent + +# move the currently focused window to the scratchpad +bindsym $mod+Shift+Tab 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+Tab scratchpad show + +bindsym $mod+m [class="discord"] scratchpad show + +# switch to workspace +bindsym $modFocus+1 workspace $ws1 +bindsym $modFocus+2 workspace $ws2 +bindsym $modFocus+3 workspace $ws3 +bindsym $modFocus+4 workspace $ws4 +bindsym $modFocus+5 workspace $ws5 +bindsym $modFocus+6 workspace $ws6 +bindsym $modFocus+7 workspace $ws7 +bindsym $modFocus+8 workspace $ws8 +bindsym $modFocus+9 workspace $ws9 +bindsym $modFocus+0 workspace $ws10 +# Move to workspace with focused container +bindsym $modMove+1 move container to workspace $ws1; workspace $ws1 +bindsym $modMove+2 move container to workspace $ws2; workspace $ws2 +bindsym $modMove+3 move container to workspace $ws3; workspace $ws3 +bindsym $modMove+4 move container to workspace $ws4; workspace $ws4 +bindsym $modMove+5 move container to workspace $ws5; workspace $ws5 +bindsym $modMove+6 move container to workspace $ws6; workspace $ws6 +bindsym $modMove+7 move container to workspace $ws7; workspace $ws7 +bindsym $modMove+8 move container to workspace $ws8; workspace $ws8 +bindsym $modMove+9 move container to workspace $ws9; workspace $ws9 +bindsym $modMove+0 move container to workspace $ws10; workspace $ws10 + +# Set shut down, restart and locking features +bindsym $mod+p mode "$mode_system" +set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown +mode "$mode_system" { + bindsym l exec --no-startup-id i3exit lock, mode "default" + bindsym s exec --no-startup-id i3exit suspend, mode "default" + bindsym u exec --no-startup-id i3exit switch_user, mode "default" + bindsym e exec --no-startup-id i3exit logout, mode "default" + bindsym h exec --no-startup-id i3exit hibernate, mode "default" + bindsym r exec --no-startup-id i3exit reboot, mode "default" + bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default" + + # exit system mode: "Enter" or "Escape" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Resize window (you can also use the mouse for that) +bindsym $mod+r mode "resize" +mode "resize" { + bindsym h resize shrink width 5 px or 5 ppt + bindsym j resize grow height 5 px or 5 ppt + bindsym k resize shrink height 5 px or 5 ppt + bindsym l resize grow width 5 px or 5 ppt + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + bindsym R resize set 50 ppt 50 ppt + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# volume & media +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle +bindsym XF86AudioNext exec --no-startup-id playerctl next +bindsym XF86AudioPrev exec --no-startup-id playerctl previous +bindsym XF86AudioPause exec --no-startup-id playerctl play-pause +# rofi instead of drun +bindsym $mod+space exec --no-startup-id rofi -show drun -dpi $dpi +# 1password +bindsym $mod+Shift+space exec --no-startup-id $pwman