This commit is contained in:
2023-05-24 14:14:36 +02:00
parent 5d399c7700
commit 10f6634765
596 changed files with 114803 additions and 375 deletions
+272 -280
View File
@@ -1,334 +1,326 @@
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
#bar {
#status_command i3status
#}
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## i3wm configuration for Archcraft
##
## i3 config file (v4)
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#
##-- Include Config Files ----------------------
# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
#
## Tilde expands to the users home directory:
#include ~/.config/i3/01_theme.conf
set $mod Mod4
## Environment variables are expanded:
#include $HOME/.config/i3/01_theme.conf
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:DejaVu Sans Mono 10
## Wildcards are expanded:
#include ~/.config/i3/config.d/*.conf
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8
## Command substitution:
#include ~/.config/i3/`hostname`.conf
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.
## i3 changes the working directory while parsing a config file
## so that relative paths are interpreted relative to the directory
## of the config file that contains the path:
#include 01_theme.conf
# xss-lock zen grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend.
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
## To list all loaded configuration files, run `i3 --moreversion`
# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet
#------
exec --no-startup-id telegram-desktop
# exec --no-startup-id syncthing-gtk
exec --no-startup-id keepass
exec --no-startup-id onboard
exec --no-startup-id touchegg
exec --no-startup-id xscreensaver
# exec --no-startup-id mailspring
# exec --no-startup-id minetime
## Load i3 config files
include ~/.config/i3/config.d/*.conf
# No border :)
default_border pixel 1
default_floating_border none
# Default colors
# class border backgr. text indicator child_border
client.focused #ffffff #888888 #000000 #ffffff #888888
client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a
client.unfocused #a000ff #040404 #888888 #444444 #444444
client.urgent #2f343a #600099 #ffffff #600099 #600099
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
## Enable/Disable i3 bar
#include ~/.config/i3/i3status/statusbar.conf
client.background #000000
##-- Mod Keys ----------------------------------
set $MOD Mod4
set $ALT Mod1
# Use pactl to adjust volume in PulseAudio.
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +8%
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -7%
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle
##-- General Settings --------------------------
# Brightness settings
bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 5
bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 5
## Floating Modifier
##
## To move floating windows with your mouse, you can either grab their titlebar
## or configure the so-called floating modifier which you can then press and click
## anywhere in the window itself to move it.
##
## When holding the floating modifier, you can resize a floating window by pressing
## the right mouse button on it and moving around while holding it.
## If you hold the shift button as well, the resize will be proportional
## (the aspect ratio will be preserved).
floating_modifier $MOD
# Transparent lock
bindsym $mod+i exec xtrlock
#------
# Multiple display settings
bindsym XF86Display exec --no-startup-id arandr
## Orientation for new workspaces
##
## New workspaces get a reasonable default orientation: Wide-screen monitors
## (anything wider than high) get horizontal orientation, rotated monitors
## (anything higher than wide) get vertical orientation.
##
## Syntax: default_orientation horizontal|vertical|auto
default_orientation auto
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
#------
# start a terminal
bindsym $mod+Return exec i3-sensible-terminal
## Layout mode for new containers
##
## This option determines in which mode new containers on workspace level will start.
##
## Syntax: workspace_layout default|stacking|tabbed
workspace_layout default
# kill focused window
bindsym $mod+w kill
#------
# start dmenu (a program launcher)
#bindsym $mod+r exec dmenu_run
bindsym $mod+r exec --no-startup-id ~/.config/rofi/bin/menu_powermenu
#bindsym $mod+r exec --no-startup-id ~/rofi/files/powermenu/type-2/powermenu.sh
# start rofi
bindsym $mod+p exec "rofi -modes combi -show combi run,window"
# switch rofi
bindsym $mod+q exec rofi -show window
# rofi fb
bindsym $mod+g exec rofi -show file-browser-extended
# ssh rofi
#bindsym $mod+c exec rofi -show ssh
bindsym $mod+c exec --no-startup-id ~/.config/rofi/bin/menu_time
# lock screen
bindsym $mod+o exec ~/lock.sh
#bindsym $mod+o exec slimlock
# ristretto
bindsym $mod+e exec nemo
## Window title alignment
##
## This option determines the window titles text alignment. Default is left
##
## Syntax: title_align left|center|right
title_align center
# There also is the (new) i3-dmenu-desktop which only displays applications
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
# installed.
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
## Print all window titles in format of 'class | title'
for_window [class=".*"] title_format "%class | %title"
# change focus
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
## Enable window icons for all windows
for_window [all] title_window_icon off
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
## Enable window icons for all windows with extra horizontal padding
#for_window [all] title_window_icon padding 5px
# move focused window
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
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+Up move up
bindsym $mod+Shift+Right move right
## Default border style for new windows
##
## This option determines which border style new windows will have. The default is `normal`.
## Note that `default_floating_border` applies only to windows which are starting out
## as floating windows, e.g., dialog windows, but not windows that are floated later on.
##
## Setting border style to `pixel` eliminates title bars. The border style `normal`
## allows you to adjust edge border width while keeping your title bar.
##
## Syntax:
#default_border normal|none|pixel
#default_border normal|pixel <px>
#default_floating_border normal|none|pixel
#default_floating_border normal|pixel <px>
#default_border pixel 2
#default_floating_border pixel 2
# Resizing windows
bindsym $mod+Ctrl+Shift+Up resize shrink height 10 px or 10 ppt
bindsym $mod+Ctrl+Shift+Down resize grow height 10 px or 10 ppt
bindsym $mod+Ctrl+Shift+Right resize shrink width 10 px or 10 ppt
bindsym $mod+Ctrl+Shift+Left resize grow width 10 px or 10 ppt
#------
bindsym $mod+Ctrl+Shift+k resize shrink height 10 px or 10 ppt
bindsym $mod+Ctrl+Shift+j resize grow height 10 px or 10 ppt
bindsym $mod+Ctrl+Shift+l resize shrink width 10 px or 10 ppt
bindsym $mod+Ctrl+Shift+h resize grow width 10 px or 10 ppt
## Hiding borders adjacent to the screen edges
##
## You can hide container borders adjacent to the screen edges using `hide_edge_borders`
## (the default is none). Hiding borders is useful if you are using scrollbars,
## or do not want to waste even two pixels in displayspace.
##
## The `smart` setting hides borders on workspaces with only one window visible,
## but keeps them on workspaces with multiple windows visible.
##
## The `smart_no_gaps` setting hides edge-specific borders of a container if the
## container is the only container on its workspace and the gaps to the screen edge are 0.
##
## Syntax: hide_edge_borders none|vertical|horizontal|both|smart|smart_no_gaps
hide_edge_borders none
# split in horizontal orientation
bindsym $mod+b split h
#------
# split in vertical orientation
bindsym $mod+v split v
## Smart borders
##
## Smart borders will draw borders on windows only if there is more than one window
## in a workspace. This feature can also be enabled only if the gap size between
## window and screen edge is 0.
##
## Syntax: smart_borders on|off|no_gaps
#smart_borders on
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
#------
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+t layout tabbed
bindsym $mod+a layout toggle split
## Dont focus window upon opening
##
## When a new window appears, it will be focused. The `no_focus` directive allows
## preventing this from happening and must be used in combination with [command_criteria].
##
## Syntax: no_focus <criteria>
#no_focus [window_role="pop-up"]
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
#------
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
## Automatically putting workspaces on specific screens
##
## If you assign clients to workspaces, it might be handy to put the workspaces on
## specific screens. Also, the assignment of workspaces to screens will determine
## which workspace i3 uses for a new screen when adding screens or when starting
## (e.g., by default it will use 1 for the first screen, 2 for the second screen and so on).
##
## Syntax: workspace <workspace> output <output1> [output2]…
##
## The `output` is the name of the RandR output you attach your screen to.
## On a laptop, you might have VGA1 and LVDS1 as output names.
## You can see the available outputs by running `xrandr --current`
#workspace 1 output LVDS1
#workspace 2 output primary
#workspace 5 output VGA1 LVDS1
#workspace "2: vim" output VGA1
# focus the parent container
# bindsym $mod+a focus parent
#------
# focus the child container
#bindsym $mod+d focus child
## Interprocess communication
##
## i3 uses Unix sockets to provide an IPC interface. This allows third-party programs
## to get information from i3, such as the current workspaces (to display a workspace bar), and to control i3.
##
## You can override the default path through the environment-variable `I3SOCK`
## or by specifying the `ipc-socket` directive.This is discouraged, though,
## since i3 does the right thing by default. If you decide to change it,
## it is strongly recommended to set this to a location in your home directory
## so that no other user can create that directory.
#ipc-socket ~/.i3/i3-ipc.sock
# 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 $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
set $ws11 "A"
set $ws12 "B"
set $ws13 "C"
set $ws14 "D"
set $ws15 "E"
set $ws16 "F"
set $ws17 "G"
set $ws18 "H"
set $ws19 "I"
set $ws20 "J"
#------
# 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 $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $ws9
bindsym $mod+0 workspace $ws10
bindsym $mod+F1 workspace $ws11
bindsym $mod+F2 workspace $ws12
bindsym $mod+F3 workspace $ws13
bindsym $mod+F4 workspace $ws14
bindsym $mod+F5 workspace $ws15
bindsym $mod+F6 workspace $ws16
bindsym $mod+F7 workspace $ws17
bindsym $mod+F8 workspace $ws18
bindsym $mod+F9 workspace $ws19
bindsym $mod+F10 workspace $ws20
## Focus follows mouse
##
## By default, window focus follows your mouse movements as the mouse crosses window borders.
## However, if you have a setup where your mouse usually is in your way
## (like a touchpad on your laptop which you do not want to disable completely),
## you might want to disable `focus follows mouse` and control focus only by using your keyboard.
## The mouse will still be useful inside the currently active window (for example to click on links in your browser window).
##
## Syntax: focus_follows_mouse yes|no
focus_follows_mouse yes
# Scratchpad
# Make the currently focused window a scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the first scratchpad window
bindsym $mod+minus scratchpad show
#------
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace $ws1
bindsym $mod+Shift+2 move container to workspace $ws2
bindsym $mod+Shift+3 move container to workspace $ws3
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 $ws6
bindsym $mod+Shift+7 move container to workspace $ws7
bindsym $mod+Shift+8 move container to workspace $ws8
bindsym $mod+Shift+9 move container to workspace $ws9
bindsym $mod+Shift+0 move container to workspace $ws10
bindsym $mod+Shift+F1 move container to workspace $ws11
bindsym $mod+Shift+F2 move container to workspace $ws12
bindsym $mod+Shift+F3 move container to workspace $ws13
bindsym $mod+Shift+F4 move container to workspace $ws14
bindsym $mod+Shift+F5 move container to workspace $ws15
bindsym $mod+Shift+F6 move container to workspace $ws16
bindsym $mod+Shift+F7 move container to workspace $ws17
bindsym $mod+Shift+F8 move container to workspace $ws18
bindsym $mod+Shift+F9 move container to workspace $ws19
bindsym $mod+Shift+F10 move container to workspace $ws20
## Mouse warping
##
## By default, when switching focus to a window on a different output
## (e.g. focusing a window on workspace 3 on output VGA-1, coming from workspace 2 on LVDS-1),
## the mouse cursor is warped to the center of that window.
##
## With the `mouse_warping` option, you can control when the mouse cursor should be warped.
## `none` disables warping entirely, whereas `output` is the default behavior described above.
##
## Syntax: mouse_warping output|none
mouse_warping none
# 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)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
#------
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym semicolon resize grow width 10 px or 10 ppt
## Popups during fullscreen mode
##
## When you are in fullscreen mode, some applications still open popup windows (take Xpdf for example).
## This is because these applications might not be aware that they are in fullscreen mode
## (they do not check the corresponding hint).
## There are three things which are possible to do in this situation.
##
## Syntax: popup_during_fullscreen smart|ignore|leave_fullscreen
popup_during_fullscreen smart
# same bindings, but for the arrow keys
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
#------
# back to normal: Enter or Escape or $mod+r
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
#
# Supposed to kill with center button
bindsym --release button2 killa
## Focus wrapping
##
## By default, when in a container with several windows or child containers,
## the opposite window will be focused when trying to move the focus over the edge of
## a container (and there are no other containers in that direction) — the focus wraps.
##
## Syntax: focus_wrapping yes|no|force|workspace
# Disable focus wrapping
#focus_wrapping no
# Force focus wrapping
#focus_wrapping force
# Custom config window
for_window [class="vlc"] floating enable
for_window [class="feh"] floating enable
#------
# Assign to desktop
assign [class="Firefox"] 1
assign [class="KeePass"] 3
assign [class="Clementine"] 8
assign [class="Telegram"] 9
assign [class="Mailspring"] 7
assign [class="MineTime"] 7
## Forcing Xinerama
##
## As explained in-depth in https://i3wm.org/docs/multi-monitor.html, some X11 video
## drivers (especially the nVidia binary driver) only provide support for Xinerama
## instead of RandR. In such a situation, i3 must be told to use the inferior Xinerama
## API explicitly and therefore dont provide support for reconfiguring your screens
## on the fly (they are read only once on startup and thats it).
##
## Syntax: force_xinerama yes|no
#force_xinerama yes
#bindsym $mod+Return mode "resize"
#------
# Workspace config
#workspace 1 output DisplayPort-2
## Automatic back-and-forth when switching to the current workspace
##
## This configuration directive enables automatic `workspace back_and_forth`
## when switching to the workspace that is currently focused.
##
## Syntax: workspace_auto_back_and_forth yes|no
workspace_auto_back_and_forth yes
# i3 bar configuration
# ----------------------------------------------------------------------------
#------
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
# status_command i3status --
status_command py3status
## Delaying urgency hint reset on workspace change
##
## If an application on another workspace sets an urgency hint, switching to this
## workspace might lead to immediate focus of the application, which also means the
## window decoration color would be immediately reset to `client.focused`.
## This might make it unnecessarily hard to tell which window originally raised the event.
##
## In order to prevent this, you can tell i3 to delay resetting the urgency state by
## a certain time using the `force_display_urgency_hint` directive.
## Setting the value to 0 disables this feature. The default is 500ms.
##
## Syntax: force_display_urgency_hint <timeout> ms
force_display_urgency_hint 500 ms
position top
tray_output DisplayPort-2
#------
colors {
background #000000
statusline #a000ff
separator #aaaaaa
## Focus on window activation
##
## If a window is activated, e.g., via `google-chrome www.google.com`, it may request to take focus.
## Since this might not be preferable, different reactions can be configured.
##
## Note that this might not affect windows that are being opened.
## To prevent new windows from being focused.
##
## Syntax: focus_on_window_activation smart|urgent|focus|none
focus_on_window_activation smart
# Default conf
# focused_workspace #4c7899 #285577 #ffffff
focused_workspace #ffffff #888888 #000000
active_workspace #888888 #444444 #ffffff
inactive_workspace #888888 #000000 #a000ff
urgent_workspace #2f343a #600099 #ffffff
binding_mode #2f343a #600099 #ffffff
}
#------
separator_symbol "ʃ"
#separator_symbol "❰"
#separator_symbol "❱"
#separator_symbol " ▷ "
#separator_symbol " ∠ "
#separator_symbol "|"
#separator_symbol "ǁ"
## Drawing marks on window decoration
##
## If activated, marks on windows are drawn in their window decoration.
## However, any mark starting with an underscore in its name (_) will not be drawn
## even if this option is activated.
##
## The default for this option is yes.
##
## Syntax: show_marks yes|no
show_marks yes
strip_workspace_name no
strip_workspace_numbers yes
#------
binding_mode_indicator no
}
## Tiling drag
##
## You can configure how to initiate the tiling drag feature.
##
## Syntax:
#tiling_drag off
#tiling_drag modifier|titlebar [modifier|titlebar]
tiling_drag modifier titlebar
##-- Autostart ---------------------------------
## Automatically starting applications on i3 startup
##
## By using the `exec` keyword outside a keybinding, you can configure which commands
## will be performed by i3 on initial startup. `exec` commands will not run when
## restarting i3, if you need a command to run also when restarting i3 you should
## use the `exec_always` keyword. These commands will be run in order.
##
## Syntax:
#exec [--no-startup-id] <command>
#exec_always [--no-startup-id] <command>
exec_always --no-startup-id ~/.config/i3/scripts/i3_autostart
## The --no-startup-id parameter disables startup-notification support for this particular exec command.
## With startup-notification, i3 can make sure that a window appears on the workspace on which you used the exec command.