352 lines
14 KiB
Plaintext
352 lines
14 KiB
Plaintext
# Packages expected:
|
||
# Debian: i3 suckless-tools rxvt-unicode-256color j4-dmenu-desktop
|
||
# gnome-screenshot i3lock sudo hibernate playerctl pulseaudio-utils
|
||
# galculator network-manager-gnome redshift-gtk x11-xserver-utils
|
||
# pasystray feh rofi pulsemixer libnotify-bin xcompmgr xfce4-terminal
|
||
# fonts-dejavu dbus-x11 arandr numlockx fcitx-bin fcitx-mozc conky-all
|
||
# flatpak apparmor-notify caffeine keybase dino kdocker pavucontrol mumble
|
||
# audacious jami-gnome telegram-desktop steam
|
||
#
|
||
# Keybase: https://keybase.io/docs/the_app/install_linux
|
||
# Dino: https://software.opensuse.org/download.html?project=network:messaging:xmpp:dino&package=dino
|
||
# jami-gnome: https://jami.net/download-jami-linux/
|
||
#
|
||
# Flatpaks expected: org.gajim.Gajim org.gajim.Gajim.Plugin.omemo
|
||
# de.haeckerfelix.gradio com.wire.WireDesktop org.signal.Signal
|
||
# io.github.NhekoReborn.Nheko com.github.wwmm.pulseeffects
|
||
# im.riot.Riot
|
||
#
|
||
# i3status command below expects locale fi_FI.utf8
|
||
#
|
||
# Debian theming: lxappearance gtk-chtheme qt4-qtconfig qt5ct
|
||
# https://askubuntu.com/a/600946
|
||
# + ~/.xprofile specifies GTK_THEME which hopefully gets detected/understood
|
||
# by browsers etc.
|
||
#
|
||
# YES! This file is a monster and there really are that many weird
|
||
# packages and three electrons autostarting, SEND HELP!
|
||
# UPDATE: WHATEVER YOU DO, DON'T AUTOSTART ELECTRONS! LET THE LOAD AVERAGE
|
||
# OF ~35 BEFORE FREEZING BE A LESSON!
|
||
#
|
||
# HIDPI text scaling:
|
||
# % gsettings set org.gnome.desktop.interface scaling-factor 2
|
||
# https://wiki.archlinux.org/index.php/HiDPI#GNOME
|
||
#
|
||
# Search also for CHANGEME near the bottom
|
||
|
||
#Super
|
||
set $mod Mod4
|
||
|
||
# Stop repeating the same thing everywhere!
|
||
set $TERMINAL xfce4-terminal
|
||
# For use without display managers. All display managers seem to be
|
||
# horrible, LightDM user switching is insecure, GDM depends on GNOME, SDDM
|
||
# doesn't support `passwd -de`
|
||
# i3lock options: black colour, cursor (that does nothing)
|
||
# show failed attempts.
|
||
set $ScreenLockCmd i3lock -c 000000 -p win -f
|
||
#set $ScreenLockCmd i3lock-fancy
|
||
|
||
# Font for window titles. Will also be used by the bar unless a different
|
||
# font is used in the bar {} block below.
|
||
#font pango:monospace 8
|
||
|
||
# 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 Book 10
|
||
|
||
# Before i3 v4.8, we used to recommend this one as the default:
|
||
# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||
# The font above is very space-efficient, that is, it looks good, sharp and
|
||
# clear in small sizes. However, its unicode glyph coverage is limited, the old
|
||
# X core fonts rendering does not support right-to-left and this being a bitmap
|
||
# font, it doesn’t scale on retina/hidpi displays.
|
||
|
||
# Use Mouse+$mod to drag floating windows to their wanted position
|
||
floating_modifier $mod
|
||
|
||
# start a terminal
|
||
#bindsym $mod+Return exec i3-sensible-terminal
|
||
bindsym $mod+Return exec $TERMINAL
|
||
# kill focused window
|
||
bindsym $mod+Shift+q kill
|
||
|
||
# start dmenu (a program launcher)
|
||
#bindsym $mod+d exec dmenu_run
|
||
# wrapper around dmenu supporting .desktop (flatpak)
|
||
#bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
|
||
# j4-dmenu-desktop is supposedly more than 25 times faster
|
||
bindsym $mod +d exec --no-startup-id j4-dmenu-desktop --display-binary --no-generic --dmenu="rofi -dmenu -i" --term=$TERMINAL
|
||
|
||
# for j4-dmenu-desktop daemon mode (unreleased version)
|
||
# https://github.com/enkore/j4-dmenu-desktop/pull/80/commits/87f6b8b03dabbd83ad0f5d889a75da1b99cdff03
|
||
#exec --no-startup-id j4-dmenu-desktop --display-binary --no-generic --dmenu="rofi -dmenu -i" --term=$TERMINAL --wait-on=~/.config/j4ddfifo
|
||
#bindsym $mod+d exec --no-startup-id echo > ~/.config/j4ddfifo
|
||
|
||
# change focus
|
||
bindsym $mod+j focus left
|
||
bindsym $mod+k focus down
|
||
bindsym $mod+l focus up
|
||
bindsym $mod+odiaeresis 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+j move left
|
||
bindsym $mod+Shift+k move down
|
||
bindsym $mod+Shift+l move up
|
||
bindsym $mod+Shift+odiaeresis 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+h 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+s layout stacking
|
||
bindsym $mod+w layout tabbed
|
||
bindsym $mod+e layout toggle split
|
||
|
||
# toggle tiling / floating
|
||
bindsym $mod+Shift+space floating toggle
|
||
|
||
# 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+d focus child
|
||
|
||
# Default to stacking layout as it should be easy to make a grid and I
|
||
# probably have too small monitor to benefit from "default",
|
||
workspace_layout stacking
|
||
|
||
# Centerize window titles
|
||
title_align center
|
||
|
||
# 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"
|
||
|
||
# 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+Prior workspace previous
|
||
bindsym $mod+Next workspace next
|
||
|
||
# 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+Prior move container to workspace previous
|
||
bindsym $mod+Shift+Next move container to workspace next
|
||
|
||
# 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 (and should throw you to TTY login prompt or something is WRONG!).' -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 window’s width.
|
||
# Pressing right will grow the window’s width.
|
||
# Pressing up will shrink the window’s height.
|
||
# Pressing down will grow the window’s 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 odiaeresis resize grow width 10 px or 10 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
|
||
|
||
# back to normal: Enter or Escape or $mod+r
|
||
bindsym Return mode "default"
|
||
bindsym Escape mode "default"
|
||
bindsym $mod+r mode "default"
|
||
}
|
||
|
||
bindsym $mod+r mode "resize"
|
||
|
||
# Start i3bar to display a workspace bar (plus the system information i3status
|
||
# finds out, if available) CHANGEME
|
||
bar {
|
||
status_command LC_ALL=fi_FI.utf8 i3status
|
||
# Solarized Dark copied from https://github.com/tobiaszwaszak/i3wm/blob/master/config
|
||
colors {
|
||
background #002b36
|
||
statusline #839496
|
||
separator #586e75
|
||
focused_workspace #b58900 #b58900 #002b36
|
||
active_workspace #586e75 #586e75 #002b36
|
||
inactive_workspace #073642 #002b36 #839496
|
||
urgent_workspace #dc322f #dc322f #fdf6e3
|
||
}
|
||
}
|
||
|
||
# Solarized Dark copied from https://github.com/tobiaszwaszak/i3wm
|
||
client.focused #002b36 #586e75 #fdf6e3 #268bd2
|
||
client.focused_inactive #002b36 #073642 #839496 #073642
|
||
client.unfocused #002b36 #073642 #839496 #073642
|
||
client.urgent #002b36 #dc322f #fdf6e3 #002b36
|
||
|
||
# Screenshotting
|
||
bindsym Shift+Print exec gnome-screenshot -i
|
||
bindsym Print exec gnome-screenshot -i
|
||
|
||
# lock screen by hand using Mod + Ctrl + L
|
||
bindsym Control+$mod+l exec $ScreenLockCmd
|
||
|
||
# suspend and hibernate, inspiration took from the nagbar for exiting i3.
|
||
# Passwordless sudo for both commands is specified in
|
||
# /etc/sudoers.d/hibernate
|
||
bindsym $mod+Escape exec "i3-nagbar -t warning -m 'You pressed the SUSPEND shortcut. Do you really want to SUSPEND?' -B 'Yes, SUSPEND' '$ScreenLockCmd; sudo /usr/sbin/s2ram'"
|
||
bindsym $mod+Shift+Escape exec "i3-nagbar -t warning -m 'You pressed the HIBERNATE shortcut. Do you really want to HIBERNATE?' -B 'Yes, HIBERNATE' '$ScreenLockCmd; sudo /usr/sbin/hibernate'"
|
||
|
||
# Jumping to window with alert (the red colour)
|
||
bindsym $mod+x [urgent=latest] focus
|
||
|
||
# alt-tab
|
||
bindsym Mod1+Tab exec --no-startup-id rofi -show window
|
||
bindsym $mod+g exec --no-startup-id rofi -show window
|
||
|
||
# For some reason my keyboard has a dedicated button for calculator
|
||
bindsym XF86Calculator exec --no-startup-id galculator
|
||
|
||
# Media keys
|
||
bindsym XF86AudioPlay exec --no-startup-id playerctl play-pause && notify-send -t 500 "Play-Pause pressed"
|
||
# Volume keys NOTE: won't work if nothing is playing (which I consider an improvement
|
||
# over randomly stopping working as I enable and disable audio devices).
|
||
#set $sink $(pactl list short sinks | grep RUNNING | cut -f1)
|
||
#bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume $sink -5% # && notify-send -t 500 "$(pulsemixer --get-volume)"
|
||
#bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume $sink +5% # && notify-send -t 500 "$(pulsemixer --get-volume)"
|
||
#bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute $sink toggle # mute sound
|
||
# Apparently pasystray alerts me of the status changes, so I don't have to
|
||
# echo them by myself.
|
||
bindsym XF86AudioLowerVolume exec --no-startup-id pulsemixer --change-volume -5 # && notify-send -t 500 "$(pulsemixer --get-volume)"
|
||
bindsym XF86AudioRaiseVolume exec --no-startup-id pulsemixer --change-volume +5 # && notify-send -t 500 "$(pulsemixer --get-volume)"
|
||
bindsym XF86AudioMute exec --no-startup-id pulsemixer --toggle-mute # && notify-send -t 500 "🔇 pressed"
|
||
|
||
bindsym $mod+p exec arandr
|
||
bindsym $mod+Shift+a exec pavucontrol -t 5
|
||
# m for mumble
|
||
bindsym $mod+m exec mumble
|
||
# shift + m for music/media, which I need more seldom, but keep forgetting
|
||
# the good app, while I do remember mpv/Syncplay/VLC whenever I need them.
|
||
bindsym $mod+Shift+m exec audacious
|
||
|
||
# Float these apps by default
|
||
# I use privacy.resistfingerprinting which is incompatible with not floating
|
||
# I think I am more productive with floating Firefox.
|
||
#for_window [title="^Mozilla Firefox$"] floating enable
|
||
for_window [title="^Tor Browser$"] floating enable
|
||
for_window [title="galculator"] floating enable
|
||
# insert new rules above this line
|
||
# https://github.com/keybase/client/issues/8232
|
||
for_window [title="tracker - .*"] floating enable
|
||
|
||
# Autostarts
|
||
# I generally have flatpaks separately near the bottom, but other things are
|
||
# going to depend on PulseEffects
|
||
#exec --no-startup-id flatpak run com.github.wwmm.pulseeffects --gapplication-service
|
||
exec --no-startup-id nm-applet
|
||
exec --no-startup-id pasystray --notify=all
|
||
# Wallpaper, solid black
|
||
#exec --no-startup-id xsetroot -solid \#000000
|
||
# ~/.wallpaper as wallpaper
|
||
exec --no-startup-id feh --bg-scale ~/.wallpaper
|
||
exec --no-startup-id xcompmgr -c -n
|
||
# Make everything a bit transparent, you don't want this.
|
||
#exec --no-startup-id compton --active-opacity 0.95 --inactive-opacity 0.95 -m 0.95 -e 0.95
|
||
exec --no-startup-id numlockx on
|
||
# see also pam_environment https://wiki.archlinux.org/index.php/Fcitx#Non_desktop_environment
|
||
exec --no-startup-id fcitx
|
||
exec --no-startup-id kdocker -m -d 300 $TERMINAL
|
||
exec --no-startup-id conky
|
||
exec --no-startup-id aa-notify -p -s 1 -w 60
|
||
exec --no-startup-id caffeine-indicator
|
||
exec --no-startup-id kdocker -d 300 dino
|
||
exec --no-startup-id jami-gnome -r
|
||
exec --no-startup-id telegram-desktop -startintray
|
||
# https://github.com/Nheko-Reborn/nheko/issues/79 - 100 % background CPU
|
||
#exec --no-startup-id flatpak run io.github.NhekoReborn.Nheko
|
||
# ELECTRON!
|
||
exec --no-startup-id KEYBASE_AUTOSTART=1 run_keybase -a
|
||
exec --no-startup-id STEAM_FRAME_FORCE_CLOSE=1 steam -silent
|
||
|
||
# Flatpaks
|
||
# ELECTRON!
|
||
exec --no-startup-id flatpak run com.wire.WireDesktop --startup
|
||
exec --no-startup-id flatpak run de.haeckerfelix.gradio
|
||
exec --no-startup-id flatpak run org.gajim.Gajim --quiet
|
||
# ELECTRON! I have to autostart it as Signal won't use tray icon without
|
||
# that flag and this seems to be the least painful way to have it.
|
||
exec --no-startup-id flatpak run org.signal.Signal --start-in-tray
|
||
# ELECTRON!
|
||
#exec --no-startup-id flatpak run com.slack.Slack --startup
|
||
# ELECTRON!
|
||
exec --no-startup-id flatpak run im.riot.Riot --hidden
|
||
|
||
# CHANGEME - weird autostart options that may not be suitable even for my other devices
|
||
# Centre of Lauttasaari
|
||
exec --no-startup-id redshift-gtk -l 60.15937:24.87530
|
||
# Centre of Kotka
|
||
#exec --no-startup-id redshift-gtk -l 60.46742:26.94508
|
||
# Sedric - mirror displays
|
||
#exec --no-startup-id xrandr --output HDMI-1 --same-as eDP-1
|
||
# Sedric - double monitor via arandr
|
||
#exec --no-startup-id xrandr --output VGA-1 --off --output HDMI-1 --primary --mode 1920x1080 --pos 1920x0 --rotate normal --output eDP-1 --mode 1920x1080 --pos 0x0 --rotate normal
|
||
workspace 1 output HDMI-1
|
||
# Sedric - HDMI-only. Disable via TTY if appropiate.
|
||
exec --no-startup-id xrandr --output VGA-1 --off --output HDMI-1 --mode 1920x1080 --pos 0x0 --rotate normal --output eDP-1 --off
|
||
# Special keyboard options that WILL CONFUSE YOU.
|
||
exec --no-startup-id setxkbmap -option compose:menu -option terminate:ctrl_alt_bksp -option nbsp:none -option caps:backspace -option shift:both_capslock
|
||
#-option grp:ctrls_toggle -layout fi,cz,epo -variant ,qwerty,
|