From 5093129c47b06f6ddc22fd4b9324e878ed924753 Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Sun, 29 Dec 2019 15:13:00 +0100 Subject: [PATCH] Add BSPWM conf. SXHKD works with both i3 and bspwm --- dotfiles/bspwm.org | 44 +++ dotfiles/i3.org | 691 ++++++++++++++------------------------------- dotfiles/sxhkd.org | 417 ++++++++++++++++++++------- 3 files changed, 566 insertions(+), 586 deletions(-) create mode 100644 dotfiles/bspwm.org diff --git a/dotfiles/bspwm.org b/dotfiles/bspwm.org new file mode 100644 index 0000000..1379913 --- /dev/null +++ b/dotfiles/bspwm.org @@ -0,0 +1,44 @@ +#+TITLE: BSPWM +:DRAWER: +#+PROPERTY: header-args:bash :comments both +#+PROPERTY: header-args:bash+ :mkdirp yes +#+PROPERTY: header-args:bash+ :shebang "#!/bin/sh" +#+PROPERTY: header-args:bash+ :tangle ~/.config/bspwm/bspwmrc +:END: + +#+begin_src bash + # If refreshing bspwm, remove all previous rules to prevent doubling up. + bspc rule -r "*" + + bspc monitor -d code web mail misc figs +#+end_src + +#+begin_src bash + bspc config border_width 1 + bspc config window_gap 8 + bspc config top_padding 27 # top_padding I set equal to polybar's height + + bspc config split_ratio 0.52 + bspc config borderless_monocle true + bspc config gapless_monocle true + + bspc config focus_follows_pointer true +#+end_src + +#+begin_src bash + bspc config normal_border_color \#32302f + bspc config focused_border_color \#bdae93 +#+end_src + +#+begin_src bash + bspc rule --add qutebrowser desktop='web' follow=on state=tiled + bspc rule --add Emacs desktop='code' follow=on state=tiled +#+end_src + +#+begin_src bash + $HOME/.config/polybar/scripts/launch.sh +#+end_src + +#+begin_src bash + sxhkd -m 1 -c ~/.config/sxhkd/sxhkdrc.bspwm & +#+end_src diff --git a/dotfiles/i3.org b/dotfiles/i3.org index 14934d5..8070a7c 100644 --- a/dotfiles/i3.org +++ b/dotfiles/i3.org @@ -1,11 +1,12 @@ #+TITLE: I3 Configuration :DRAWER: -#+PROPERTY: header-args:conf+ :comments both +#+PROPERTY: header-args:conf :comments none #+PROPERTY: header-args:conf+ :mkdirp yes #+PROPERTY: header-args:conf+ :tangle ~/.config/i3/config :END: -* Colors +* Basic configuration +** Colors #+begin_src conf set $bg #32302f set $bg1 #3c3836 @@ -29,13 +30,13 @@ set $orange #d65d0e #+end_src -* Mod Key +** Mod Key Set mod key (Mod1=, Mod4=) #+BEGIN_SRC conf set $mod Mod4 #+end_src -* Border Style +** Border Style #+begin_src conf # Configure border style new_window pixel 1 @@ -45,481 +46,12 @@ Set mod key (Mod1=, Mod4=) hide_edge_borders smart #+end_src -* Font for window titles +** Font for window titles #+begin_src conf font Hack Nerd Font 11 #+end_src -* Multimedia keys -:PROPERTIES: -:header-args:conf+: :tangle no -:END: - -** Sound -#+begin_src conf - # Sound - bindsym XF86AudioMute exec --no-startup-id amixer -D pulse sset Master toggle - bindsym XF86AudioRaiseVolume exec --no-startup-id amixer -D pulse sset Master 2%+ - bindsym XF86AudioLowerVolume exec --no-startup-id amixer -D pulse sset Master 2%- -#+end_src - -#+begin_src conf - # Backlight - # bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 10 - # bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 10 -#+end_src - -** Change Tracks -#+begin_src conf - bindsym $mod+period exec --no-startup-id mpc toggle - bindsym $mod+Shift+period exec --no-startup-id mpc next - bindsym $mod+Shift+comma exec --no-startup-id mpc prev -#+end_src - -#+begin_src conf - bindsym XF86AudioPlay exec --no-startup-id mpc toggle - bindsym XF86AudioNext exec --no-startup-id mpc next - bindsym XF86AudioPrev exec --no-startup-id mpc prev -#+end_src - -** Print Screen -#+begin_src conf - bindsym Print exec --no-startup-id ~/bin/screenshot - bindsym XF86Display exec --no-startup-id rofi -show window -#+end_src - -** Other -#+begin_src conf - bindsym XF86Search exec --no-startup-id rofi -show run - bindsym XF86PowerOff exec --no-startup-id $HOME/scripts/quit.sh -#+end_src - -* Start Applications -:PROPERTIES: -:header-args:conf+: :tangle no -:END: - -#+begin_src conf - # Start program launcher - bindsym $mod+d exec --no-startup-id rofi -show run - # Start Sound Manager - bindsym $mod+s exec --no-startup-id pavucontrol - # Start Bluetooth Manager - bindsym $mod+shift+b exec --no-startup-id blueman-manager - # Windows Switch - bindsym $mod+w exec --no-startup-id rofi -show window - # Launch categorized menu - bindsym $mod+z exec --no-startup-id rofi -show drun - # Bookmarks - bindsym $mod+Shift+F exec --no-startup-id $HOME/bin/bukurun - # Passwords - bindsym $mod+Shift+P exec --no-startup-id rofi-pass - # Start Terminal - bindsym $mod+Return exec termite - # Tmux Terminal - bindsym $mod+Shift+Return exec termite -e 'tmux' - # Start Command line Calendar - bindsym $mod+c exec termite -e "khal interactive" - # File Manager - bindsym $mod+o exec alacritty -e "ranger" - # Browser - bindsym $mod+i exec qutebrowser -#+end_src - -* Set shut down, restart and locking features -:PROPERTIES: -:header-args:conf+: :tangle no -:END: - -#+begin_src conf - bindsym $mod+0 exec --no-startup-id $HOME/scripts/quit.sh -#+end_src - -* Command Mode -:PROPERTIES: -:header-args:conf+: :tangle no -:END: - -#+begin_src conf - bindsym $mod+space mode "command" - - mode "command" { - # Command line Calendar Client (khal) - bindsym c exec termite -e "khal interactive"; mode "default" - # GUI Calendar (Google Calendar) - bindsym Shift+c exec qutebrowser https://calendar.google.com/; mode "default" - - # Ranger - bindsym r exec alacritty -e "ranger"; mode "default" - # pcmanfm: GUI file manager - bindsym Shift+r exec pcmanfm; mode "default" - - # Mails with neomutt - bindsym m exec termite -e "tmux -L neomutt attach"; mode "default" - bindsym shift+m exec termite -e "neomutt -R"; mode "default" - # Weechat - bindsym w exec termite -e "tmux -L weechat attach"; mode "default" - # News with newsboat - bindsym n exec termite -e "tmux -L newsboat attach"; mode "default" - # Music with ncmpcpp - bindsym p exec termite -e "tmux -L ncmpcpp attach"; mode "default" - # Print Screen - bindsym Shift+p exec --no-startup-id ~/bin/screenshot - - # Browser with qutebrowser - bindsym i exec qutebrowser; mode "default" - # Browser with firefox - bindsym Shift+i exec firefox; mode "default" - - # Emacs Client - bindsym e exec emacsclient -create-frame --alternate-editor=""; mode "default" - # Full Emacs - Usefull when installing packages - bindsym Shift+e exec emacs; mode "default" - - # exit command mode: Enter or Escape - bindsym Escape mode "default" - } -#+end_src - -* Autostart Background Applications -#+begin_src conf - # Set custom wallpaper script - exec --no-startup-id $HOME/scripts/wallpapers.sh - - # Run Compton - exec --no-startup-id compton -b - - # Start Network Management Framework - exec --no-startup-id nm-applet - - # Hide mouse cursor after x seconds - exec --no-startup-id unclutter --timeout 5 - - # Start Power Manager - exec --no-startup-id xfce4-power-manager - - # Bluetooth Manager - exec --no-startup-id blueman-applet - - # Autolock screen after x minutes - exec --no-startup-id xautolock -locker "~/scripts/lockscreen.sh" -detectsleep -time 30 -notify 60 -notifier "dunstify --replace=31846 -u critical -t 10000 -- 'Locking Screen' '60 seconds'" - - # Screen options - exec --no-startup-id xrandr --output eDP1 --mode 1920x1080 --dpi 192 - - # Redshift - exec --no-startup-id redshift - - # Start mopidy - exec --no-startup-id mopidy - - # Emacs Daemon - # exec --no-startup-id /usr/bin/emacs --fg-daemon - - # Start polybar - exec_always --no-startup-id $HOME/.config/polybar/scripts/launch.sh - - # Synology Cloud Station Drive - exec --no-startup-id synology-drive - - # KDEconnect - exec --no-startup-id udiskie /usr/lib/kdeconnectd - - # Udiskie to automount usb keys - exec --no-startup-id udiskie --automount --notify --tray --use-udisks2 - - # Start sxhkd - exec --no-startup-id sxhkd -m 1 & -#+end_src - -* Kill one application -:PROPERTIES: -:header-args:conf+: :tangle no -:END: - -#+begin_src conf - bindsym $mod+Ctrl+x --release exec --no-startup-id xkill -#+end_src - -* Change Keyboard Layout -:PROPERTIES: -:header-args:conf+: :tangle no -:END: - -#+begin_src conf - bindsym $mod+Ctrl+d exec --no-startup-id setxkbmap -layout us -variant intl -option caps:escape - bindsym $mod+Shift+d exec --no-startup-id setxkbmap -layout us -option caps:escape -#+end_src - -* TODO [#B] Vim Anywhere -#+begin_src conf - # bindsym $mod+t exec vim-anywhere nvim termite -#+end_src - -* TODO Windows Manager -** Change focus -#+begin_src conf - bindsym $mod+h focus left - bindsym $mod+j focus down - bindsym $mod+k focus up - bindsym $mod+l focus right - - bindsym $mod+Left focus left - bindsym $mod+Down focus down - bindsym $mod+Up focus up - bindsym $mod+Right focus right -#+end_src - -** Move focused window -#+begin_src conf - bindsym $mod+Shift+h move left - bindsym $mod+Shift+j move down - bindsym $mod+Shift+k move up - bindsym $mod+Shift+l move right - - bindsym $mod+Shift+Left move left - bindsym $mod+Shift+Down move down - bindsym $mod+Shift+Up move up - bindsym $mod+Shift+Right move right -#+end_src - -** TODO [#A] Split orientation - Use just one key bindings that alternates? -#+begin_src conf - bindsym $mod+q split h - bindsym $mod+v split v -#+end_src - -** Kill focused window -#+begin_src conf - bindsym $mod+Shift+q kill -#+end_src - -** Use Mouse+$mod to drag floating windows -#+begin_src conf - floating_modifier $mod -#+end_src - -** Toggle fullscreen mode for the focused container -#+begin_src conf - bindsym $mod+f fullscreen toggle -#+end_src - -** TODO [#A] Change container layout (stacked, tabbed, toggle split) -#+begin_src conf - # bindsym $mod+s layout stacking - # bindsym $mod+l layout toggle split - # bindsym $mod+w layout tabbed - - # Toggle between stacking/tabbed/split: - bindsym $mod+x layout toggle tabbed split - - # bindsym $mod+Shift+s layout stacking - # bindsym $mod+t layout tabbed - # bindsym $mod+e layout toggle split -#+end_src - -** TODO Toggle tiling / floating -#+begin_src conf - bindsym $mod+Shift+space floating toggle -#+end_src - -** TODO Change focus between tiling / floating windows -#+begin_src conf - bindsym $mod+a focus mode_toggle -#+end_src - -** TODO Toggle sticky -If you want a window to stick to the glass, i.e., have it stay on screen even if you switch to another workspace, you can use the sticky command. - -#+begin_src conf - # bindsym $mod+Shift+s sticky toggle -#+end_src - -** Resize Floating Window -#+begin_src conf - bindsym $mod+Shift+y resize shrink width 10 px or 10 ppt - bindsym $mod+Shift+u resize grow height 10 px or 10 ppt - bindsym $mod+Shift+i resize shrink height 10 px or 10 ppt - bindsym $mod+Shift+o resize grow width 10 px or 10 ppt -#+end_src - -* TODO [#B] Scratchpad -** Move to Scratchpad -#+begin_src conf - # move the currently focused window to the scratchpad - bindsym $mod+Shift+BackSpace 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+BackSpace scratchpad show -#+end_src - -** TODO Custom Cratchpad for Quick Access - :PROPERTIES: - :header-args:conf+: :tangle no - :END: -*** Music with ncmpcpp -#+begin_src conf - for_window [instance="scratch-ncmpcpp"] scratchpad show; - exec termite --name="scratch-ncmpcpp" --exec="tmux -L ncmpcpp attach" - for_window [instance="scratch-ncmpcpp"] floating enable; - for_window [instance="scratch-ncmpcpp"] move position 440 px 225 px; - for_window [instance="scratch-ncmpcpp"] resize set 800 px 600 px; - for_window [instance="scratch-ncmpcpp"] move scratchpad; -#+end_src - -*** Calculator with insect -#+begin_src conf - for_window [instance="scratch-insect"] scratchpad show; - exec termite --name="scratch-insect" --exec="insect" - for_window [instance="scratch-insect"] floating enable; - for_window [instance="scratch-insect"] move position 440 px 225 px; - for_window [instance="scratch-insect"] resize set 800 px 600 px; - for_window [instance="scratch-insect"] move scratchpad; -#+end_src - -*** Ranger -#+begin_src conf - for_window [instance="scratch-ranger"] scratchpad show; - exec alacritty -name scratch-ranger -e ranger - for_window [instance="scratch-ranger"] floating enable; - for_window [instance="scratch-ranger"] move position 240 px 125 px; - for_window [instance="scratch-ranger"] resize set 1200 px 800 px; - for_window [instance="scratch-ranger"] move scratchpad; -#+end_src - -*** Terminal -#+begin_src conf - for_window [instance="scratch-termite"] scratchpad show; - exec termite --name="scratch-termite" - for_window [instance="scratch-termite"] floating enable; - for_window [instance="scratch-termite"] move position 440 px 225 px; - for_window [instance="scratch-termite"] resize set 800 px 600 px; - for_window [instance="scratch-termite"] move scratchpad; -#+end_src - -** TODO Stratchpad Mode - Add scripts that is there is no windows with that name runs the windows and then displays it - :PROPERTIES: - :header-args:conf+: :tangle no - :END: -#+begin_src conf -bindsym $mod+s mode "$mode_stratchpad" -set $mode_stratchpad (c)alc (s)hell (n)ews (r)anger -mode "$mode_stratchpad" { - bindsym p [instance="scratch-ncmpcpp"] scratchpad show; mode "default" - bindsym s [instance="scratch-termite"] scratchpad show; mode "default" - bindsym c [instance="scratch-insect"] scratchpad show; mode "default" - bindsym r [instance="scratch-ranger"] scratchpad show; mode "default" - - # exit system mode: "Enter" or "Escape" - bindsym Return mode "default" - bindsym Escape mode "default" -} -#+end_src - -* Workspaces -** Workspace names -To display names or symbols instead of plain workspace numbers you can use something like: =set $ws1 1:mail= and =set $ws2 2:=. - -#+begin_src conf - set $ws1 1 - set $ws2 2 - set $ws3 3 - set $ws4 4 - set $ws5 5 - set $ws6 6 - set $ws7 7 - set $ws8 8 -#+end_src - -** Switch to workspace -#+begin_src conf - 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 -#+end_src - -** Navigate Workspace -** Workspace back and forth (with/without active container) -#+begin_src conf - workspace_auto_back_and_forth yes - bindsym $mod+b workspace back_and_forth - # bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth -#+end_src - -** Move to prev/next workspace -#+begin_src conf - bindsym $mod+n workspace next - bindsym $mod+p workspace prev -#+end_src - -** Move focused container to workspace -#+begin_src conf - bindsym $mod+Ctrl+1 move container to workspace $ws1 - bindsym $mod+Ctrl+2 move container to workspace $ws2 - bindsym $mod+Ctrl+3 move container to workspace $ws3 - bindsym $mod+Ctrl+4 move container to workspace $ws4 - bindsym $mod+Ctrl+5 move container to workspace $ws5 - bindsym $mod+Ctrl+6 move container to workspace $ws6 - bindsym $mod+Ctrl+7 move container to workspace $ws7 - bindsym $mod+Ctrl+8 move container to workspace $ws8 -#+end_src - -** Move to workspace with focused container -#+begin_src conf - bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 - bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 - bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 - bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 - bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 - bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 - bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 - bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 -#+end_src - -** Open applications on specific workspaces -#+begin_src conf - # Matlab Figures - assign[title="^Fig"] $ws6 - for_window [title="^Fig"] layout tabbed - assign[title="^HG_Peer"] $ws6 # Name of window when export figure with matlab -#+end_src - -* Open specific applications in floating mode -#+begin_src conf - for_window [title="File Transfer*"] floating enable - for_window [class="GParted"] floating enable border normal - for_window [title="i3_help"] floating enable sticky enable border normal - for_window [class="Lightdm-settings"] floating enable - for_window [class="Lxappearance"] floating enable sticky enable border normal - for_window [class="Manjaro Settings Manager"] floating enable border normal - for_window [class="Pamac-manager"] floating enable - for_window [class="Pavucontrol"] floating enable - for_window [class="qt5ct"] floating enable sticky enable border normal - for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal - for_window [class="Simple-scan"] floating enable border normal - for_window [class="(?i)System-config-printer.py"] floating enable border normal - for_window [class="Timeset-gui"] floating enable border normal - for_window [class="(?i)virtualbox"] floating enable border normal - for_window [class="Xfburn"] floating enable - for_window [title="^Documentation -"] floating enable border normal - for_window [class="Yad"] floating enable - for_window [title="Bluetooth Devices"] floating enable - for_window [title="Simulink Library Browser"] floating enable -#+end_src - -* Restart i3 inplace (preserves your layout/session, can be used to upgrade i3) -#+begin_src conf - bindsym $mod+Shift+r restart - bindsym $mod+r exec $HOME/.config/polybar/scripts/launch.sh -#+end_src - -* Color palette used for the terminal ( ~/.Xresources file ) +** Color palette used for the terminal ( ~/.Xresources file ) Colors are gathered based on the documentation https://i3wm.org/docs/userguide.html#xresources. #+begin_src conf @@ -563,7 +95,7 @@ Colors are gathered based on the documentation https://i3wm.org/docs/userguide.h # set_from_resource $term_color15 color15 #+end_src -* TODO Theme colors +** TODO Theme colors #+begin_src conf # class border backgr. text indic. child_border client.focused $blue $blue $fg $blue @@ -575,7 +107,7 @@ Colors are gathered based on the documentation https://i3wm.org/docs/userguide.h client.background #32302F #+end_src -* Settings for i3-gaps +** Settings for i3-gaps #+begin_src conf # Set inner/outer gaps gaps inner 10 @@ -632,12 +164,201 @@ Colors are gathered based on the documentation https://i3wm.org/docs/userguide.h } #+end_src -* Keyboard Configuration +** TODO Workspace names +To display names or symbols instead of plain workspace numbers you can use something like: =set $ws1 1:mail= and =set $ws2 2:=. + #+begin_src conf - # Set repetition keyboard rate - exec --no-startup-id xset r rate 200 40 - # Set International US keyboard layout - # exec --no-startup-id setxkbmap -layout us -variant intl -option caps:escape - # Default numpad on - # exec --no-startup-id numlockx & -#+END_SRC + set $ws1 1 + set $ws2 2 + set $ws3 3 + set $ws4 4 + set $ws5 5 + set $ws6 6 + set $ws7 7 + set $ws8 8 +#+end_src + +** TODO Use Mouse+$mod to drag floating windows +#+begin_src conf + floating_modifier $mod +#+end_src + +** Application Specific +*** Open applications on specific workspaces +#+begin_src conf + # Matlab Figures + assign[title="^Fig"] $ws6 + for_window [title="^Fig"] layout tabbed + assign[title="^HG_Peer"] $ws6 # Name of window when export figure with matlab +#+end_src + +*** Open specific applications in floating mode +#+begin_src conf + for_window [title="File Transfer*"] floating enable + for_window [class="GParted"] floating enable border normal + for_window [title="i3_help"] floating enable sticky enable border normal + for_window [class="Lightdm-settings"] floating enable + for_window [class="Lxappearance"] floating enable sticky enable border normal + for_window [class="Manjaro Settings Manager"] floating enable border normal + for_window [class="Pamac-manager"] floating enable + for_window [class="Pavucontrol"] floating enable + for_window [class="qt5ct"] floating enable sticky enable border normal + for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal + for_window [class="Simple-scan"] floating enable border normal + for_window [class="(?i)System-config-printer.py"] floating enable border normal + for_window [class="Timeset-gui"] floating enable border normal + for_window [class="(?i)virtualbox"] floating enable border normal + for_window [class="Xfburn"] floating enable + for_window [title="^Documentation -"] floating enable border normal + for_window [class="Yad"] floating enable + for_window [title="Bluetooth Devices"] floating enable + for_window [title="Simulink Library Browser"] floating enable +#+end_src + +* Windows Manager +** DONE Change focus +#+begin_src conf + bindsym $mod+h focus left + bindsym $mod+j focus down + bindsym $mod+k focus up + bindsym $mod+l focus right + + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right +#+end_src + +** DONE Move focused window +#+begin_src conf + bindsym $mod+Shift+h move left + bindsym $mod+Shift+j move down + bindsym $mod+Shift+k move up + bindsym $mod+Shift+l move right + + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right +#+end_src + +** DONE Split orientation +#+begin_src conf + bindsym $mod+q split h + bindsym $mod+v split v +#+end_src + +** DONE Kill focused window +#+begin_src conf + bindsym $mod+Shift+q kill +#+end_src + +** DONE Toggle fullscreen mode for the focused container +#+begin_src conf + bindsym $mod+f fullscreen toggle +#+end_src + +** DONE Change container layout (stacked, tabbed, toggle split) +#+begin_src conf + # Toggle between stacking/tabbed/split: + bindsym $mod+x layout toggle tabbed split +#+end_src + +** DONE Toggle tiling / floating +#+begin_src conf + bindsym $mod+Shift+space floating toggle +#+end_src + +** DONE Change focus between tiling / floating windows +#+begin_src conf + bindsym $mod+a focus mode_toggle +#+end_src + +** DONE Resize Window +#+begin_src conf + bindsym $mod+Shift+y resize shrink width 10 px or 10 ppt + bindsym $mod+Shift+u resize grow height 10 px or 10 ppt + bindsym $mod+Shift+i resize shrink height 10 px or 10 ppt + bindsym $mod+Shift+o resize grow width 10 px or 10 ppt +#+end_src + +** TODO Scratchpad +#+begin_src conf + # move the currently focused window to the scratchpad + bindsym $mod+Shift+BackSpace 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+BackSpace scratchpad show +#+end_src + +* DONE Workspaces +:PROPERTIES: +:header-args:conf+: :tangle no +:END: +** DONE Switch to workspace +#+begin_src conf + 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 +#+end_src + +** DONE Workspace back and forth (with/without active container) +#+begin_src conf + workspace_auto_back_and_forth yes + bindsym $mod+b workspace back_and_forth +#+end_src + +** DONE Move to prev/next workspace +#+begin_src conf + bindsym $mod+n workspace next + bindsym $mod+p workspace prev +#+end_src + +** DONE Move focused container to workspace +#+begin_src conf + bindsym $mod+Ctrl+1 move container to workspace $ws1 + bindsym $mod+Ctrl+2 move container to workspace $ws2 + bindsym $mod+Ctrl+3 move container to workspace $ws3 + bindsym $mod+Ctrl+4 move container to workspace $ws4 + bindsym $mod+Ctrl+5 move container to workspace $ws5 + bindsym $mod+Ctrl+6 move container to workspace $ws6 + bindsym $mod+Ctrl+7 move container to workspace $ws7 + bindsym $mod+Ctrl+8 move container to workspace $ws8 +#+end_src + +** DONE Move to workspace with focused container +#+begin_src conf + bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 + bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 + bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 + bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 + bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 + bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 + bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 + bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 +#+end_src + +* DONE I3 Bindings +:PROPERTIES: +:header-args:conf+: :tangle no +:END: +Restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +#+begin_src conf + bindsym $mod+Shift+r restart +#+end_src + +* Run Polybar +#+begin_src conf + exec_always --no-startup-id $HOME/.config/polybar/scripts/launch.sh +#+end_src + +* Key Bindings +#+begin_src conf + exec_always --no-startup-id sxhkd -m 1 -c ~/.config/sxhkd/sxhkdrc.i3 +#+end_src diff --git a/dotfiles/sxhkd.org b/dotfiles/sxhkd.org index 52713c6..3cdfb43 100644 --- a/dotfiles/sxhkd.org +++ b/dotfiles/sxhkd.org @@ -1,83 +1,99 @@ #+TITLE: Simple X Hotkey Daemon - -* sxhkd -:PROPERTIES: -:header-args:conf: :tangle ~/.config/sxhkd/sxhkdrc -:header-args:conf+: :comments both :mkdirp yes +:DRAWER: +#+PROPERTY: header-args :comments no +#+PROPERTY: header-args+ :mkdirp yes +#+PROPERTY: header-args+ :tangle ~/.config/sxhkd/sxhkdrc :END: -** Start Applications +* Basic #+begin_src conf -# Start program launcher -super + d + super + ctrl + x + xkill +#+end_src + +#+begin_src conf + # make sxhkd reload its configuration files: + super + Escape + pkill -USR1 -x sxhkd + + # Update Polybar + super + r + $HOME/.config/polybar/scripts/launch.sh +#+end_src + +* Start Applications +#+begin_src conf + # Start program launcher + super + d rofi -show run -# Start Sound Manager -super + s - pavucontrol - -# Start Bluetooth Manager -super + shift + b - blueman-manager - -# Windows Switch -super + w - rofi -show window - -# Launch categorized menu -super + z + # Launch categorized menu + super + shift + d rofi -show drun -# Bookmarks -super + shift + f + # Start Sound Manager + super + shift + s + pavucontrol + + # Start Bluetooth Manager + super + shift + b + blueman-manager + + # Windows Switch + super + shift + w + rofi -show window + + # Bookmarks + super + shift + f $HOME/bin/bukurun -# Passwords -super + shift + p + # Passwords + super + shift + p rofi-pass +#+end_src -# Start Terminal -super + Return +#+begin_src conf + # Start Terminal + super + Return termite -# Tmux Terminal -super + shift + Return + # Tmux Terminal + super + shift + Return termite -e 'tmux' -# Start Command line Calendar -super + c + # Start Command line Calendar + super + shift + c termite -e "khal interactive" -# File Manager -super + o + # File Manager + super + o alacritty -e "ranger" -# Browser -super + i + # Browser + super + i qutebrowser #+end_src -** Multimedia keys -*** Sound +* Multimedia keys +** Sound #+begin_src conf -# Sound -XF86AudioMute + XF86AudioMute amixer -D pulse sset Master toggle -XF86AudioRaiseVolume + XF86AudioRaiseVolume amixer -D pulse sset Master 2%+ -XF86AudioLowerVolume + XF86AudioLowerVolume amixer -D pulse sset Master 2%- #+end_src +** Backlight #+begin_src conf -# Backlight -# XF86MonBrightnessUp -# xbacklight -inc 10 -# XF86MonBrightnessDown -# xbacklight -dec 10 + XF86MonBrightnessUp + xbacklight -inc 10 + XF86MonBrightnessDown + xbacklight -dec 10 #+end_src -*** Change Tracks +** Change Tracks #+begin_src conf super + period mpc toggle @@ -94,7 +110,7 @@ XF86AudioPrev mpc prev #+end_src -*** Print Screen +** Print Screen #+begin_src conf Print ~/bin/screenshot @@ -102,87 +118,286 @@ XF86Display rofi -show window #+end_src -*** Other +** Other #+begin_src conf -XF86Search + XF86Search rofi -show run -XF86PowerOff +#+end_src + +* Set shut down, restart and locking features +#+begin_src conf + XF86PowerOff + $HOME/scripts/quit.sh + super + 0 $HOME/scripts/quit.sh #+end_src -** Set shut down, restart and locking features +* Command Mode #+begin_src conf -super + 0 - $HOME/scripts/quit.sh -#+end_src + # Command line Calendar Client (khal) + super + space ; c + termite -e "khal interactive" -** Command Mode -#+begin_src conf -# Command line Calendar Client (khal) -super + space ; c - termite -e "khal interactive"; + # GUI Calendar (Google Calendar) + super + space ; shift + c + qutebrowser https://calendar.google.com/ -# GUI Calendar (Google Calendar) -super + space ; shift + c - qutebrowser https://calendar.google.com/; + # Ranger + super + space ; r + alacritty -e "ranger" -# Ranger -super + space ; r - alacritty -e "ranger"; - -# pcmanfm: GUI file manager -super + space ; shift + r + # pcmanfm: GUI file manager + super + space ; shift + r pcmanfm; -# Mails with neomutt -super + space ; m - termite -e "tmux -L neomutt attach"; + # Mails with neomutt + super + space ; m + termite -e "tmux -L neomutt attach" -super + space ; shift + m - termite -e "neomutt -R"; + super + space ; shift + m + termite -e "neomutt -R" -# Weechat -super + space ; w - termite -e "tmux -L weechat attach"; + # Weechat + super + space ; w + termite -e "tmux -L weechat attach" -# News with newsboat -super + space ; n - termite -e "tmux -L newsboat attach"; + # News with newsboat + super + space ; n + termite -e "tmux -L newsboat attach" -# Music with ncmpcpp -super + space ; p - termite -e "tmux -L ncmpcpp attach"; + # Music with ncmpcpp + super + space ; p + termite -e "tmux -L ncmpcpp attach" -# Print Screen -super + space ; shift + p + # Print Screen + super + space ; shift + p ~/bin/screenshot -# Browser with qutebrowser -super + space ; i + # Browser with qutebrowser + super + space ; i qutebrowser; -# Browser with firefox -super + space ; shift + i + # Browser with firefox + super + space ; shift + i firefox; -# Emacs Client -super + space ; e - emacsclient -create-frame --alternate-editor=""; + # Emacs Client + super + space ; e + emacsclient -create-frame --alternate-editor="" -# Full Emacs - Usefull when installing packages -super + space ; shift + e + # Full Emacs - Usefull when installing packages + super + space ; shift + e emacs; #+end_src -#+begin_src conf -super + ctrl + x - xkill -#+end_src - -** Change Keyboard Layout +* Change Keyboard Layout #+begin_src conf super + ctrl + d setxkbmap -layout us -variant intl -option caps:escape super + shift + d setxkbmap -layout us -option caps:escape #+end_src + +* BSPWM related +:PROPERTIES: +:header-args:conf+: :tangle ~/.config/sxhkd/sxhkdrc.bspwm +:END: + +** BSPWM hotkeys +#+begin_src conf + # quit/restart bspwm + super + alt + {q,r} + bspc {quit,wm -r} + + # close and kill + super + {_,shift + }q + bspc node -{c,k} +#+end_src + +** Monocle Layout +#+begin_src conf + # alternate between the tiled and monocle layout + super + f + bspc desktop -l next + + # focus the next/previous node in the current desktop + super + c + bspc node -f next.local +#+end_src + +** Set the window State +#+begin_src conf + # set the window state + super + {t,s, shift + f} + bspc node -t {tiled,floating,fullscreen} +#+end_src + +** Sticky Window +#+begin_src conf + # set the node flags + super + ctrl + y + bspc node -g sticky +#+end_src + +** focus/swap +#+begin_src conf + # Focus/swap the node in the given direction + super + {_,shift + }{h,j,k,l} + bspc node -{f,s} {west,south,north,east} + + # focus the last Node + super + Tab + bspc node -f last + + # Swap to the last Desktop + super + shift + b + bspc node -s last +#+end_src + +#+begin_src conf + # Focus the next/previous desktop in the current monitor + super + {p,n} + bspc desktop -f {prev,next}.local + + # focus the last Desktop + super + b + bspc desktop -f last + + # focus or send to the given desktop + super + {_,ctrl + }{1-9} + bspc {desktop -f,node -d} '^{1-9}' + + # Send and Focus to the given desktop + super + shift + {1-9} + bspc node -d '^{1-9}' --follow +#+end_src + +** Preselect +#+begin_src conf +# preselect the direction +super + ctrl + {h,j,k,l} + bspc node -p {west,south,north,east} + +# preselect the ratio +# super + ctrl + {1-9} +# bspc node -o 0.{1-9} + +# cancel the preselection for the focused node +super + ctrl + space + bspc node -p cancel +#+end_src + +** Resize +#+begin_src conf + # expand a window by moving one of its side outward + super + alt + {h,j,k,l} + bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0} + + # contract a window by moving one of its side inward + super + alt + shift + {h,j,k,l} + bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0} +#+end_src + +#+begin_src conf + # move a floating window + super + {Left,Down,Up,Right} + bspc node -v {-20 0,0 20,0 -20,20 0} +#+end_src +* I3 related +:PROPERTIES: +:header-args:conf+: :tangle ~/.config/sxhkd/sxhkdrc.i3 +:END: + +** BSPWM hotkeys +#+begin_src conf + # quit/restart bspwm + super + alt + {q,r} + i3-msg {quit,restart} + + # close and kill + super + {_,shift + }q + i3-msg {kill,kill} +#+end_src + +** Monocle Layout +#+begin_src conf + # alternate between the tiled and monocle layout + super + f + i3-msg layout toggle tabbed split + + # focus the next/previous node in the current desktop + # super + c + # bspc node -f next.local +#+end_src + +** Set the window State +#+begin_src conf + # set the window state + super + {t,s, shift + f} + i3-msg {fullscreen disavle,floating toggle,fullscreen toggle} +#+end_src + +** Sticky Window +#+begin_src conf + super + ctrl + y + i3-msg sticky toggle +#+end_src + +** focus/swap +#+begin_src conf + # Focus/swap the node in the given direction + super + {_,shift + }{h,j,k,l} + i3-msg {focus,move} {left,down,up,right} + + # focus the last Node + # super + Tab + # bspc node -f last + + # Swap to the last Desktop + # super + shift + b + # bspc node -s last +#+end_src + +#+begin_src conf + # Focus the next/previous desktop in the current monitor + super + {p,n} + i3-msg workspace {prev,next} + + # focus the last Desktop + super + b + i3-msg workspace back_and_forth + + # focus or send to the given desktop + super + {1-9} + i3-msg workspace '{1-9}' + super + ctrl + {1-9} + i3-msg move container to workspace '{1-9}' + super + shift + {1-9} + WP={1-9} && i3-msg move container to workspace $WP && i3-msg workspace $WP +#+end_src + +** Change focus between tiling / floating windows +#+begin_src conf + super + a + i3-msg focus mode_toggle +#+end_src + +** Preselect +Preselect the direction +#+begin_src conf + super + ctrl + {h,j,k,l} + i3-msg split {h,v,v,h} +#+end_src + +** Resize +Expand/Shrink a window +#+begin_src conf + super + alt + h + i3-msg resize shrink width 10 px or 10 ppt + super + alt + j + i3-msg resize grow height 10 px or 10 ppt + super + alt + k + i3-msg resize shrink height 10 px or 10 ppt + super + alt + l + i3-msg resize grow width 10 px or 10 ppt +#+end_src