diff --git a/.config/i3/config b/.config/i3/config index 8423036..1d738f7 100644 --- a/.config/i3/config +++ b/.config/i3/config @@ -1,18 +1,25 @@ set $mod Mod4 font pango:monospace 10 -# + # Use Mouse+$mod to drag floating windows to their wanted position floating_modifier $mod +# Move cursor between monitors mouse_warping output # Apply XFCE Settings -# exec "bash /home/pavel/.screenlayout/layout.sh" exec xfsettingsd exec xiccd -# start a terminal -bindsym $mod+Return exec "i3-msg 'workspace 1 🚀; exec st'" +# Most needed keybindigs +# 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'" # kill focused window bindsym $mod+Shift+q kill @@ -70,8 +77,6 @@ bindsym $mod+a focus parent # focus the child container bindsym $mod+Shift+A focus child -# switch to workspace - set $w1 "1 🚀" set $w2 "2 🌍" set $w3 "3 💬" @@ -108,9 +113,6 @@ bindsym $mod+Shift+0 move container to workspace $w10 bindsym $mod+comma workspace prev bindsym $mod+period workspace next -# Layout -bindsym $mod+slash exec toggle_layout - assign [class="Emacs"] $w1 assign [class="qutebrowser"] $w2 assign [class="firefox"] $w2 @@ -139,12 +141,6 @@ for_window [title="newsboat.*"] move to workspace $w9 for_window [title=".*run_wego"] move to workspace $w9 for_window [class="cinnamon-settings*"] floating enable for_window [title="Picture-in-Picture"] sticky enable -# 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'" # Scratchpad for_window [instance="dropdown_*"] floating enable @@ -227,14 +223,13 @@ mode "resize" { bindsym Shift+Up resize shrink height 100 px or 100 ppt bindsym Shift+Right resize grow width 100 px or 100 ppt + # back to normal: Enter or Escape bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+r mode "resize" -bindsym $mod+m mode "move" focus floating - mode "move" { bindsym $mod+Tab focus right @@ -253,39 +248,28 @@ mode "move" { bindsym Escape mode "default" } -# # dmenu -# bindsym $mod+d exec i3-dmenu-desktop --dmenu="dmenu -l 10" -# bindsym $mod+apostrophe mode "dmenu" +bindsym $mod+m mode "move" focus floating -# mode "dmenu" { -# bindsym d exec i3-dmenu-desktop --dmenu="dmenu -l 10"; mode default -# bindsym p exec dmenu_run -l 10; mode default -# bindsym m exec dmenu-man; mode default -# bindsym b exec dmenu-buku; mode default -# bindsym f exec dmenu-explore; mode default -# bindsym t exec dmenu-tmuxp; mode default -# bindsym Escape mode "default" -# } - -# bindsym $mod+b exec --no-startup-id dmenu-buku - -# rofi bindsym $mod+d exec "rofi -modi 'drun,run' -show drun" +bindsym $mod+b exec --no-startup-id rofi-buku-mine + bindsym $mod+apostrophe mode "rofi" mode "rofi" { bindsym d exec "rofi -modi 'drun,run' -show drun" bindsym m exec rofi-man; mode default bindsym b exec rofi-buku-mine; mode default -# bindsym f exec dmenu-explore; mode default bindsym k exec rofi-keepassxc -d ~/MEGAsync/Passwords.kdbx; mode default bindsym Escape mode "default" } -bindsym $mod+b exec --no-startup-id rofi-buku-mine - - # Launch apps +# start a terminal at workspace 1 +bindsym $mod+Return exec "i3-msg 'workspace 1 🚀; exec st'" + +bindsym $mod+p exec "copyq menu" +bindsym $mod+Shift+x exec "i3lock -f -i /home/pavel/Pictures/lock-wallpaper-2-1.png" + bindsym $mod+semicolon mode "apps" mode "apps" { @@ -304,8 +288,24 @@ mode "apps" { # bindsym Shift+a exec emacs; mode default } -bindsym $mod+p exec "copyq menu" -bindsym $mod+Shift+x exec "i3lock -f -i /home/pavel/Pictures/lock-wallpaper-2-1.png" +# Pulse Audio controls +bindsym XF86AudioRaiseVolume exec --no-startup-id "pactl set-sink-volume @DEFAULT_SINK@ +5%" +bindsym XF86AudioLowerVolume exec --no-startup-id "pactl set-sink-volume @DEFAULT_SINK@ -5%" +bindsym XF86AudioMute exec --no-startup-id "pactl set-sink-mute @DEFAULT_SINK@ toggle" + +# Media player controls +bindsym XF86AudioPlay exec mpc toggle +bindsym XF86AudioPause exec mpc pause +bindsym XF86AudioNext exec mpc next +bindsym XF86AudioPrev exec mpc prev + +# Screen brightness +bindsym XF86MonBrightnessUp exec xbacklight -inc 5 +bindsym XF86MonBrightnessDown exec xbacklight -dec 5 + +# Screenshots +bindsym --release Print exec "flameshot gui" +bindsym --release Shift+Print exec "xfce4-screenshooter" # Colors set $bg-color #292d3e @@ -323,74 +323,27 @@ client.unfocused $bg-color $inactive-bg-color $inactive-text-co client.focused_inactive $active-color $inactive-bg-color $inactive-text-color $bg-color $bg-color client.urgent $urgent-bg-color $urgent-bg-color $urgent-text-color $bg-color $urgent-bg-color -# bar +# Layout +exec_always --no-startup-id set_layout +bindsym $mod+slash exec toggle_layout + +# Polybar exec_always --no-startup-id "bash /home/pavel/bin/polybar.sh" -# bar { -# status_command i3blocks -c ~/.config/i3/i3blocks.conf -# i3bar_command i3bar -# font pango:monospace 12 -# output HDMI-A-0 -# tray_output none -# colors { -# background $bg-color -# separator #757575 -# # border background text -# focused_workspace $bg-color $bg-color $text-color -# inactive_workspace $inactive-bg-color $inactive-bg-color $inactive-text-color -# urgent_workspace $urgent-bg-color $urgent-bg-color $urgent-text-color -# } -# } - -# bar { -# status_command i3blocks -c ~/.config/i3/i3blocks.conf -# i3bar_command i3bar -# font pango:monospace 10 -# output DVI-D-0 -# colors { -# background $bg-color -# separator #757575 -# # border background text -# focused_workspace $bg-color $bg-color $text-color -# inactive_workspace $inactive-bg-color $inactive-bg-color $inactive-text-color -# urgent_workspace $urgent-bg-color $urgent-bg-color $urgent-text-color -# } -# } - -# Pulse Audio controls -bindsym XF86AudioRaiseVolume exec --no-startup-id "pactl set-sink-volume @DEFAULT_SINK@ +5%" -bindsym XF86AudioLowerVolume exec --no-startup-id "pactl set-sink-volume @DEFAULT_SINK@ -5%" -bindsym XF86AudioMute exec --no-startup-id "pactl set-sink-mute @DEFAULT_SINK@ toggle" - -# Media player controls -bindsym XF86AudioPlay exec mpc toggle -bindsym XF86AudioPause exec mpc pause -bindsym XF86AudioNext exec mpc next -bindsym XF86AudioPrev exec mpc prev - -# Screen brightness -bindsym XF86MonBrightnessUp exec xbacklight -inc 5 -bindsym XF86MonBrightnessDown exec xbacklight -dec 5 +# PulseEffects exec --no-startup-id pulseeffects --gapplication-service -# Screenshots -bindsym --release Print exec "flameshot gui" -bindsym --release Shift+Print exec "xfce4-screenshooter" - # Sudo exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 # Wallpaper -# fallback exec_always "feh --bg-fill ~/Pictures/wallpaper-2.jpg" -# exec_always "/home/pavel/bin/scripts/wallgif /home/pavel/Videos/OMSBG7.mov" # Picom exec picom -exec keynav -# Some scripts -exec_always --no-startup-id set_layout +# Keynav +exec keynav # Applets exec --no-startup-id /usr/bin/nm-applet @@ -407,4 +360,3 @@ exec kde-connect-indicator exec copyq exec "xmodmap ~/.Xmodmap" exec "bash ~/bin/autostart.sh" -# exec emacs --daemon \ No newline at end of file diff --git a/Desktop.org b/Desktop.org new file mode 100644 index 0000000..4488933 --- /dev/null +++ b/Desktop.org @@ -0,0 +1,538 @@ +#+TITLE: Desktop +#+TODO: TODO(t) CHECK(s) | OFF(o) +#+PROPERTY: header-args :mkdirp yes +#+PROPERTY: header-args:sh :tangle-mode (identity #o755) +#+PROPERTY: header-args:bash :tangle-mode (identity #o755) + +My general desktop environment configuration. + +Parts prefexed with [OFF] are not used, but kept for historic purposes. For some reason GitHub's org renderer ignores TODO status, hence such a prefix. + +Most of the colors are from the Palenight theme. Colorcodes are taken from [[https://github.com/JonathanSpeek/palenight-iterm2][this repo]]: + +| Color | Default | Lighter | +|---------+---------+---------| +| Black | #292d3e | #434758 | +| Red | #f07178 | #ff8b92 | +| Green | #c3e88d | #ddffa7 | +| Yellow | #ffcb6b | #ffe585 | +| Blue | #82aaff | #9cc4ff | +| Magenta | #c792ea | #e1acff | +| Cyan | #89ddff | #a3f7ff | +| White | #d0d0d0 | #ffffff | + +* i3wm +:PROPERTIES: +:header-args+: :tangle ./.config/i3/config +:END: + +[[https://i3wm.org/][i3wm]] is a manual tiling window manager, which is currently my window manager of choice. I've tried several alternatives, including [[https://xmonad.org/][xmonad]] & [[https://github.com/ch11ng/exwm][EXWM]], but i3 seems to fit my workflow best. + +[[https://github.com/Airblader/i3][i3-gaps]] is a i3 fork with a few features like window gaps. I like to enable inner gaps when there is at least one container in a workspace. + +References: +- [[https://i3wm.org/docs/][i3wm docs]] +- [[https://github.com/Airblader/i3/wiki][i3-gaps wiki]] + +** General settings +#+begin_src conf-space +set $mod Mod4 +font pango:monospace 10 + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# Move cursor between monitors +mouse_warping output + +# Apply XFCE Settings +exec xfsettingsd +exec xiccd + +# Most needed keybindigs +# 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'" +#+end_src +** Managing windows +#+begin_src conf-space +# kill focused window +bindsym $mod+Shift+q kill + +# change focus +bindsym $mod+h focus left +bindsym $mod+j focus down +bindsym $mod+k focus up +bindsym $mod+l focus right + +# 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 + +# 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 + +# split in horizontal orientation +bindsym $mod+s split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+w layout stacking +bindsym $mod+t layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+f floating toggle + +bindsym $mod+Tab move workspace to output right +bindsym $mod+q focus output right + +# change focus between tiling / floating windows +# bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# focus the child container +bindsym $mod+Shift+A focus child +#+end_src + +** Workspaces +#+begin_src conf-space +set $w1 "1 🚀" +set $w2 "2 🌍" +set $w3 "3 💬" +set $w4 "4 🛠️️" +set $w7 "7 🛰️" +set $w8 "8 📝" +set $w9 "9 🎵" +set $w10 "10 📦" + +bindsym $mod+1 workspace $w1 +bindsym $mod+2 workspace $w2 +bindsym $mod+3 workspace $w3 +bindsym $mod+4 workspace $w4 +bindsym $mod+5 workspace 5 +bindsym $mod+6 workspace 6 +bindsym $mod+7 workspace $w7 +bindsym $mod+8 workspace $w8 +bindsym $mod+9 workspace $w9 +bindsym $mod+0 workspace $w10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace $w1 +bindsym $mod+Shift+2 move container to workspace $w2 +bindsym $mod+Shift+3 move container to workspace $w3 +bindsym $mod+Shift+4 move container to workspace $w4 +bindsym $mod+Shift+5 move container to workspace 5 +bindsym $mod+Shift+6 move container to workspace 6 +bindsym $mod+Shift+7 move container to workspace $w7 +bindsym $mod+Shift+8 move container to workspace $w8 +bindsym $mod+Shift+9 move container to workspace $w9 +bindsym $mod+Shift+0 move container to workspace $w10 + +# Cycle workspaces +bindsym $mod+comma workspace prev +bindsym $mod+period workspace next +#+end_src + +** Rules +Rules to automatically assign applications to workspaces and do other stuff, like enable floating. + +Most apps can be distinguished by a WM class (you can get one with [[https://www.x.org/releases/X11R7.5/doc/man/man1/xprop.1.html][xprop]]), but in some cases it doesn't work, e.g. for terminal applications. In that case rules can be based on a window title, for instance. + +However, watch out for the following: rule such as ~for_window [title="ncmpcpp.*"] move to workspace $w9~ will move *any* windows with a title, starting with =ncmpcpp= to workspace =$w9=, which, for instance, may move your browser there if you google "ncmpcpp". + +#+begin_src conf-space +assign [class="Emacs"] $w1 +assign [class="qutebrowser"] $w2 +assign [class="firefox"] $w2 +assign [class="VK"] $w3 +assign [class="Slack"] $w3 +assign [class="discord"] $w3 +assign [class="TelegramDesktop"] $w3 +assign [class="Postman"] $w4 +assign [class="Chromium-browse"] $w4 +assign [class="chromium"] $w4 +assign [class="google-chrome"] $w4 +assign [title="Vue Developer Tools"] $w4 +assign [class="Google Play Music Desktop Player"] $w9 +assign [class="jetbrains-datagrip"] $w4 +assign [class="zoom"] $w7 +assign [class="skype"] $w7 +assign [class="Mailspring"] $w8 +assign [class="Thunderbird"] $w8 +assign [class="Joplin"] $w8 +assign [class="keepassxc"] $w10 + +for_window [title="VirtScreen"] floating enable + +for_window [title="ncmpcpp.*"] move to workspace $w9 +for_window [title="newsboat.*"] move to workspace $w9 +for_window [title=".*run_wego"] move to workspace $w9 +for_window [class="cinnamon-settings*"] floating enable +for_window [title="Picture-in-Picture"] sticky enable +#+end_src +** Scratchpad +Scratch terminal, inspired by [[https://www.youtube.com/watch?v=q-l7DnDbiiU][this Luke Smith's video]]. +*** Launch script +First of all, we have to distinguish scratchpad terminal from a normal one. To do that, one can create st with a required classname. + +Then, it would be cool not to duplicate scratchpads, so the following script first looks for a window with a created classname. If it exists, the script just toggles the scratchpad visibilty. Otherwise, a new instance of a window is created. +#+begin_src bash :tangle ./bin/scripts/dropdown +#!/bin/bash +CLASSNAME="dropdown_tmux" +COMMAND="st -n $CLASSNAME -e tmux new-session -s $CLASSNAME" +pid=$(xdotool search --classname "dropdown_tmux") +if [[ ! -z $pid ]]; then + i3-msg scratchpad show +else + setsid -f ${COMMAND} +fi +#+end_src +*** i3 config +#+begin_src conf-space +# Scratchpad +for_window [instance="dropdown_*"] floating enable +for_window [instance="dropdown_*"] move scratchpad +for_window [instance="dropdown_*"] sticky enable +for_window [instance="dropdown_*"] scratchpad show +for_window [instance="dropdown_*"] move position center + +bindsym $mod+u exec ~/bin/scripts/dropdown +#+end_src +** Gaps & borders +The main reason to use i3-gaps +#+begin_src conf-space +# Borders +# for_window [class=".*"] border pixel 0 +default_border pixel 3 +hide_edge_borders both + +# Gaps +set $default_inner 10 +set $default_outer 0 + +gaps inner $default_inner +gaps outer $default_outer + +smart_gaps on +#+end_src +*** Keybindings +#+begin_src conf-space +mode "inner gaps" { + bindsym plus gaps inner current plus 5 + bindsym minus gaps inner current minus 5 + bindsym Shift+plus gaps inner all plus 5 + bindsym Shift+minus gaps inner all minus 5 + bindsym 0 gaps inner current set 0 + bindsym Shift+0 gaps inner all set 0 + + bindsym r gaps inner current set $default_inner + bindsym Shift+r gaps inner all set $default_inner + + bindsym Return mode "default" + bindsym Escape mode "default" +} + +mode "outer gaps" { + bindsym plus gaps outer current plus 5 + bindsym minus gaps outer current minus 5 + bindsym Shift+plus gaps outer all plus 5 + bindsym Shift+minus gaps outer all minus 5 + bindsym 0 gaps outer current set 0 + bindsym Shift+0 gaps outer all set 0 + + bindsym r gaps outer current set $default_outer + bindsym Shift+r gaps outer all set $default_outer + + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+g mode "inner gaps" +bindsym $mod+Shift+g mode "outer gaps" +#+end_src +** Move & resize windows +More or less standard set of keybindings to move & resize floating windows. + +Just be careful to always make a way to return from these new modes, otherwise you'd end up in a rather precarious position. +#+begin_src conf-space +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + bindsym h resize shrink width 10 px or 10 ppt + bindsym j resize grow height 10 px or 10 ppt + bindsym k resize shrink height 10 px or 10 ppt + bindsym l resize grow width 10 px or 10 ppt + + bindsym Shift+h resize shrink width 100 px or 100 ppt + bindsym Shift+j resize grow height 100 px or 100 ppt + bindsym Shift+k resize shrink height 100 px or 100 ppt + bindsym Shift+l resize grow width 100 px or 100 ppt + + # 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 + + bindsym Shift+Left resize shrink width 100 px or 100 ppt + bindsym Shift+Down resize grow height 100 px or 100 ppt + bindsym Shift+Up resize shrink height 100 px or 100 ppt + bindsym Shift+Right resize grow width 100 px or 100 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+r mode "resize" + +mode "move" { + bindsym $mod+Tab focus right + + bindsym Left move left + bindsym Down move down + bindsym Up move up + bindsym Right move right + + bindsym h move left + bindsym j move down + bindsym k move up + bindsym l move right + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+m mode "move" focus floating +#+end_src +** OFF [OFF] Intergration with dmenu +[[https://tools.suckless.org/dmenu/][dmenu]] is a dynamic menu program for X. I've opted out of using in favour of rofi, but here is a relevant bit of config. + +Scripts are located in the =bin/scripts= folder. +#+begin_src conf-space :tangle no +# dmenu +bindsym $mod+d exec i3-dmenu-desktop --dmenu="dmenu -l 10" +bindsym $mod+apostrophe mode "dmenu" + +mode "dmenu" { + bindsym d exec i3-dmenu-desktop --dmenu="dmenu -l 10"; mode default + bindsym p exec dmenu_run -l 10; mode default + bindsym m exec dmenu-man; mode default + bindsym b exec dmenu-buku; mode default + bindsym f exec dmenu-explore; mode default + bindsym t exec dmenu-tmuxp; mode default + bindsym Escape mode "default" +} + +bindsym $mod+b exec --no-startup-id dmenu-buku +#+end_src +** Integration with rofi +Keybindings to launch [[https://github.com/davatorium/rofi][rofi]]. For more detail, look the [[*Rofi]] section. +#+begin_src conf-space +bindsym $mod+d exec "rofi -modi 'drun,run' -show drun" +bindsym $mod+b exec --no-startup-id rofi-buku-mine + +bindsym $mod+apostrophe mode "rofi" + +mode "rofi" { + bindsym d exec "rofi -modi 'drun,run' -show drun" + bindsym m exec rofi-man; mode default + bindsym b exec rofi-buku-mine; mode default + bindsym k exec rofi-keepassxc -d ~/MEGAsync/Passwords.kdbx; mode default + bindsym Escape mode "default" +} +#+end_src +** Launching apps & misc keybindings +I prefer to use a separate mode to launch most of my apps, with some exceptions. +*** Apps +#+begin_src conf-space +# Launch apps +# start a terminal at workspace 1 +bindsym $mod+Return exec "i3-msg 'workspace 1 🚀; exec st'" + +bindsym $mod+p exec "copyq menu" +bindsym $mod+Shift+x exec "i3lock -f -i /home/pavel/Pictures/lock-wallpaper-2-1.png" + +bindsym $mod+semicolon mode "apps" + +mode "apps" { + bindsym Escape mode "default" + bindsym b exec firefox; mode default + bindsym v exec vk-messenger; mode default + bindsym s exec slack; mode default; + bindsym m exec "st -e ncmpcpp"; mode default + bindsym c exec "copyq toggle"; mode default + bindsym k exec "keepassxc"; mode default + # bindsym e exec mailspring; mode default + bindsym a exec "bash /home/pavel/bin/emacs.sh"; mode default + bindsym n exec "st -e newsboat"; mode default + bindsym w exec "st /home/pavel/bin/scripts/run_wego"; mode default + # bindsym a exec emacsclient -c; mode default + # bindsym Shift+a exec emacs; mode default +} +#+end_src +*** Media controls & brightness +#+begin_src conf-space +# Pulse Audio controls +bindsym XF86AudioRaiseVolume exec --no-startup-id "pactl set-sink-volume @DEFAULT_SINK@ +5%" +bindsym XF86AudioLowerVolume exec --no-startup-id "pactl set-sink-volume @DEFAULT_SINK@ -5%" +bindsym XF86AudioMute exec --no-startup-id "pactl set-sink-mute @DEFAULT_SINK@ toggle" + +# Media player controls +bindsym XF86AudioPlay exec mpc toggle +bindsym XF86AudioPause exec mpc pause +bindsym XF86AudioNext exec mpc next +bindsym XF86AudioPrev exec mpc prev + +# Screen brightness +bindsym XF86MonBrightnessUp exec xbacklight -inc 5 +bindsym XF86MonBrightnessDown exec xbacklight -dec 5 + +#+end_src +*** Screenshots +#+begin_src conf-space +# Screenshots +bindsym --release Print exec "flameshot gui" +bindsym --release Shift+Print exec "xfce4-screenshooter" +#+end_src +** Colors +Application of the palenight theme to the WM. +#+begin_src conf-space +# Colors +set $bg-color #292d3e +set $active-color #82aaff +set $inactive-bg-color #434758 +set $text-color #f3f4f5 +set $inactive-text-color #aaaaaa +set $urgent-bg-color #f07178 +set $urgent-text-color #000000 + +# window colors +# border background text indicator child border +client.focused $active-color $bg-color $text-color $bg-color $active-color +client.unfocused $bg-color $inactive-bg-color $inactive-text-color $bg-color $bg-color +client.focused_inactive $active-color $inactive-bg-color $inactive-text-color $bg-color $bg-color +client.urgent $urgent-bg-color $urgent-bg-color $urgent-text-color $bg-color $urgent-bg-color +#+end_src +** OFF [OFF] i3blocks +I've opted out of i3bar & [[https://github.com/vivien/i3blocks][i3blocks]] for [[https://github.com/polybar/polybar][polybar]] +#+begin_src conf-space :tangle no +bar { + status_command i3blocks -c ~/.config/i3/i3blocks.conf + i3bar_command i3bar + font pango:monospace 12 + output HDMI-A-0 + tray_output none + colors { + background $bg-color + separator #757575 + # border background text + focused_workspace $bg-color $bg-color $text-color + inactive_workspace $inactive-bg-color $inactive-bg-color $inactive-text-color + urgent_workspace $urgent-bg-color $urgent-bg-color $urgent-text-color + } +} + +bar { + status_command i3blocks -c ~/.config/i3/i3blocks.conf + i3bar_command i3bar + font pango:monospace 10 + output DVI-D-0 + colors { + background $bg-color + separator #757575 + # border background text + focused_workspace $bg-color $bg-color $text-color + inactive_workspace $inactive-bg-color $inactive-bg-color $inactive-text-color + urgent_workspace $urgent-bg-color $urgent-bg-color $urgent-text-color + } +} +#+end_src +** Keyboard Layout +A script to set Russian-English keyboard layout: +#+begin_src bash :tangle ./bin/scripts/set_layout +#!/bin/bash +setxkbmap -layout us,ru +setxkbmap -model pc105 -option 'grp:win_space_toggle' -option 'grp:alt_shift_toggle' +#+end_src + +A script to toggle the layout +#+begin_src bash :tangle ./bin/scripts/toggle_layout +#!/bin/bash +if setxkbmap -query | grep -q us,ru; then + setxkbmap -layout us + setxkbmap -option +else + setxkbmap -layout us,ru + setxkbmap -model pc105 -option 'grp:win_space_toggle' -option 'grp:alt_shift_toggle' +fi +#+end_src + +And the relevant i3 settings: +#+begin_src conf-space +# Layout +exec_always --no-startup-id set_layout +bindsym $mod+slash exec toggle_layout +#+end_src +** Autostart +#+begin_src conf-space +# Polybar +exec_always --no-startup-id "bash /home/pavel/bin/polybar.sh" + +# PulseEffects +exec --no-startup-id pulseeffects --gapplication-service + +# Sudo +exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 + +# Wallpaper +exec_always "feh --bg-fill ~/Pictures/wallpaper-2.jpg" + +# Picom +exec picom + +# Keynav +exec keynav + +# Applets +exec --no-startup-id /usr/bin/nm-applet +exec --no-startup-id /usr/bin/blueman-applet + +# MPD +exec --no-startup-id mpd + +# Stuff +exec aw-qt +exec "vnstatd -d" +exec dunst +exec kde-connect-indicator +exec copyq +exec "xmodmap ~/.Xmodmap" +exec "bash ~/bin/autostart.sh" +#+end_src diff --git a/README.org b/README.org index 90abaa9..0a3438e 100644 --- a/README.org +++ b/README.org @@ -21,7 +21,7 @@ Deployed with [[https://yadm.io/][yadm]] | documents | [[https://mg.readthedocs.io/latexmk.html][latexmk]] | LaTeX build tool | *active* | - | | | documents | [[https://pwmt.org/projects/zathura/][zathura]] | pdf viewer | *active* | - | | | desktop | [[https://github.com/dunst-project/dunst][dunst]] | notification manager | *active* | - | | -| desktop | [[https://i3wm.org/][i3wm]] | tiling WM | *active* | - | | +| desktop | [[https://i3wm.org/][i3wm]] | tiling WM | *active* | [[file:Desktop.org][Desktop.org]] | | | desktop | [[https://github.com/jordansissel/keynav][keynav]] | control mouse with keyboard | *active* | - | | | desktop | [[https://github.com/polybar/polybar][polybar]] | status bar | *active* | - | | | desktop | [[https://github.com/yshui/picom][picom]] | X11 compositor | *active* | - | |