├── .i3status.conf ├── MAKE-LINKS ├── README.md ├── autostart ├── config ├── dock ├── dunstrc ├── mute.wav ├── speak.wav ├── that_was_easy.wav ├── undock └── volume_blip.wav /.i3status.conf: -------------------------------------------------------------------------------- 1 | general { 2 | colors = true 3 | interval = 4 4 | } 5 | 6 | order += "cpu_usage" 7 | order += "load" 8 | order += "cpu_temperature CPUtemp" 9 | order += "cpu_temperature CPUrpm" 10 | order += "cpu_temperature GPUtemp" 11 | order += "cpu_temperature GPUrpm" 12 | order += "disk /" 13 | order += "disk /home" 14 | order += "run_watch VPN" 15 | #order += "ethernet enp30s0" 16 | order += "volume integ" 17 | order += "volume headset" 18 | order += "time" 19 | 20 | cpu_temperature CPUtemp { 21 | format = "CPU %degrees °C" 22 | path = "/sys/class/hwmon/hwmon1/temp1_input" 23 | } 24 | 25 | # This needs https://github.com/i3/i3status/pull/269 26 | cpu_temperature CPUrpm { 27 | format = "%kernel_int RPM" 28 | path = "/sys/class/hwmon/hwmon2/fan1_input" 29 | } 30 | 31 | cpu_temperature GPUtemp { 32 | format = "GPU %degrees °C" 33 | path = "/sys/class/hwmon/hwmon0/temp1_input" 34 | } 35 | 36 | cpu_temperature GPUrpm { 37 | format = "%kernel_int RPM" 38 | path = "/sys/class/hwmon/hwmon0/fan1_input" 39 | } 40 | 41 | ethernet enp30s0 { 42 | # sudo setcap cap_net_admin=ep $(which i3status) 43 | format_up = "E: %ip (%speed)" 44 | format_down = "E: down" 45 | } 46 | 47 | run_watch VPN { 48 | pidfile = "/home/lzap/openvpn/redhat.pid" 49 | } 50 | 51 | time { 52 | format = "%A %d.%m.%Y %H:%M" 53 | } 54 | 55 | load { 56 | format = "%1min %5min %15min" 57 | } 58 | 59 | cpu_usage { 60 | format = "CPU %usage" 61 | } 62 | 63 | disk "/" { 64 | format = "Used / %percentage_used" 65 | separator = false 66 | } 67 | 68 | disk "/home" { 69 | format = "/home %percentage_used" 70 | } 71 | 72 | volume integ { 73 | format = "♪I: %volume" 74 | format_muted = "♪I: MD" 75 | device = "pulse:alsa_output.pci-0000_24_00.3.analog-stereo" 76 | } 77 | 78 | volume headset { 79 | format = "♪H: %volume" 80 | format_muted = "♪H: MD" 81 | device = "pulse:alsa_output.usb-Logitech_Logitech_USB_Headset-00.analog-stereo" 82 | } 83 | 84 | -------------------------------------------------------------------------------- /MAKE-LINKS: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ln -sf ~/.i3/.i3status.conf ~/.i3status.conf 3 | ln -sf ~/.i3/dunstrc ~/.config/dunst/dunstrc 4 | ln -sf ~/.i3/dock ~/bin/dock 5 | ln -sf ~/.i3/undock ~/bin/undock 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | My personal i3 window manager dot files 2 | --------------------------------------- 3 | 4 | Please note I use Czech layout, if you want to copy & paste, _read_ the article. 5 | 6 | Article: http://lukas.zapletalovi.com/2012/08/new-in-fedora-17-i3-42-tiling-wm.html 7 | 8 | Tools used 9 | ---------- 10 | 11 | * dunst - https://github.com/knopwob/dunst 12 | * gocheckmail - https://github.com/lzap/gocheckmail 13 | * feh - http://feh.finalrewind.org 14 | * systemd, X Window utils, binutils, shell... 15 | * perl-File-MimeInfo - otherwise xdg-open does not work correctly 16 | 17 | Samples 18 | ------- 19 | 20 | Few samples were downloaded from http://dictionary.cambridge.org/dictionary/english 21 | -------------------------------------------------------------------------------- /autostart: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Packages you need to install on Fedora in order to get this setup: 4 | # dnf install i3lock dmenu dunst network-manager-applet workrave stardict numlockx feh \ 5 | # scrot f\*-backgrounds-base f\*-backgrounds-extras-base 6 | 7 | # Also using: 8 | # https://github.com/Tomas-M/xlunch 9 | 10 | # Wait for program coming up 11 | wait_for_program () { 12 | n=0 13 | while true 14 | do 15 | # PID of last background command 16 | if xdotool search --onlyvisible --pid $! 2>/dev/null; then 17 | break 18 | else 19 | if [ $n -eq 200 ]; then 20 | notify-send -u critical "Error during start: last program $! did not started fast enough" 21 | break 22 | else 23 | n=`expr $n + 1` 24 | sleep 0.1 25 | fi 26 | fi 27 | done 28 | } 29 | 30 | ## Merge Xresources 31 | xrdb -merge ~/.Xresources & 32 | 33 | ## Desktop background or picture 34 | #xsetroot -solid '#101010' & 35 | feh --bg-fill $(find /usr/share/backgrounds -type f -name \*jpg -o -name \*.png | shuf -n 1) 36 | 37 | ## Terminal daemon 38 | TERMINAL=xterm 39 | 40 | ## Load samples for volume keys feedback 41 | pactl upload-sample ~/.i3/that_was_easy.wav that_was_easy & 42 | pactl upload-sample ~/.i3/volume_blip.wav volume_blip & 43 | pactl upload-sample ~/.i3/mute.wav mute & 44 | pactl upload-sample ~/.i3/speak.wav speak & 45 | 46 | ## Disable beeps 47 | xset -b & 48 | 49 | ## Keybord layout setting 50 | setxkbmap -layout cz,us -option grp:shift_shift_toggle & 51 | 52 | ## C-A-Backspace to kill X 53 | #setxkbmap -option terminate:ctrl_alt_bksp & 54 | 55 | ## Turns on the numlock key in X11 56 | numlockx on & 57 | 58 | ## DPMS monitor setting (standby -> suspend -> off) (seconds) 59 | xset dpms 600 1200 2000 & 60 | 61 | ## Set LCD brightness 62 | xbacklight -set 100 & 63 | 64 | ## Gamma correction through the X server 65 | #xgamma -gamma 1.1 & 66 | 67 | ## Mouse and trackball setup 68 | ~/bin/configure-input-devices >/dev/null 2>&1 & 69 | 70 | ## Configure panel from left side 71 | PRIM_OUT=DP-1 72 | SEC_OUT=DVI-D-1 73 | xrandr --output $SEC_OUT --mode 1280x1024 --right-of $PRIM_OUT --output $PRIM_OUT --mode 2560x1440 74 | 75 | ## OSD 76 | LC_ALL=C dunst & 77 | 78 | ## Sublime Text 79 | #i3-msg "workspace 1; move workspace to output $PRIM_OUT" 80 | #/opt/sublime_text/sublime_text & 81 | #wait_for_program 82 | 83 | ## Setup workspaces and terminals 84 | for w in 1 2 3 4; do 85 | i3-msg "workspace $w; move workspace to output $PRIM_OUT" 86 | $TERMINAL & 87 | wait_for_program 88 | i3-msg split h 89 | $TERMINAL & 90 | wait_for_program 91 | i3-msg split v 92 | i3-msg "focus left; split v" 93 | #i3-msg "move workspace to output $DP" 94 | done 95 | 96 | i3-msg workspace 5 97 | #i3-msg layout tabbed 98 | ~/bin/chrome & 99 | 100 | for w in 6 7 8 9 10; do 101 | i3-msg "workspace $w; move workspace to output $SEC_OUT" 102 | done 103 | 104 | ## Start apps with defined workspaces 105 | i3-msg "workspace 6" 106 | #$TERMINAL -e weechat-curses & 107 | #flatpak run com.github.quaternion/x86_64/stable &>/dev/null & 108 | hexchat &>/dev/null & 109 | 110 | ## Refresh 111 | xrefresh & 112 | 113 | ## Special keys 114 | sleep 4s && xmodmap /home/lzap/.Xmodmap & 115 | 116 | ## Start taskbar utils 117 | LC_ALL=C parcellite &>/dev/null & 118 | LC_ALL=C nm-applet &>/dev/null & 119 | #LC_ALL=C workrave &>/dev/null & 120 | #LC_ALL=C dropbox start &>/dev/null & 121 | 122 | ## Update launcher cache 123 | bash /home/lzap/work/xlunch/extra/genentries -p /home/lzap/.local/share/icons > /home/lzap/.config/xlunch/entries.dsv 2>/dev/null & 124 | #dmenu_path >/dev/null & 125 | 126 | ## Good work :-) 127 | exit 0 128 | -------------------------------------------------------------------------------- /config: -------------------------------------------------------------------------------- 1 | # Lukas Zapletal (lzap) i3 config file 2 | # 3 | # Please see https://i3wm.org/docs/user-contributed/lzap-config.html or 4 | # https://lukas.zapletalovi.com/2012/08/new-in-fedora-17-i3-42-tiling-wm.html 5 | 6 | # my main modifier key is Win 7 | set $mod Mod4 8 | 9 | # font for window titles. ISO 10646 = Unicode 10 | font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 11 | 12 | # Mouse+$mod to drag floating windows to their wanted position 13 | floating_modifier $mod 14 | 15 | # no mouse cursor "stealing" across workspaces 16 | mouse_warping none 17 | 18 | # workaround for some my "dumb" apps 19 | popup_during_fullscreen leave_fullscreen 20 | 21 | # clicking on links never steals focus 22 | focus_on_window_activation urgent 23 | 24 | # start a terminal 25 | bindsym $mod+Return exec xterm 26 | 27 | # kill focused window 28 | bindsym $mod+Shift+Q kill 29 | 30 | # start program launcher 31 | # ln -s /usr/share/fonts/google-roboto/RobotoCondensed-Regular.ttf ~/.fonts 32 | bindsym $mod+space exec /home/lzap/work/xlunch/xlunch -i /home/lzap/.config/xlunch/entries.dsv -f RobotoCondensed-Regular.ttf/10 -G 33 | #bindsym $mod+space exec /home/lzap/bin/dmenu_run 34 | 35 | # reload/restart/exit (confirmation does not work anymore) 36 | bindsym $mod+Shift+C reload 37 | #bindsym $mod+Shift+R restart 38 | #bindsym $mod+Shift+E exit 39 | 40 | # screen locker (first move to "safe" workspace without any chat app) 41 | bindsym Control+Mod1+l exec i3-msg workspace 1 && i3lock -c 111111 -d 42 | bindsym Control+Mod1+s exec i3-msg workspace 1 && sleep 1 && xset dpms force standby 43 | 44 | # change focus 45 | bindsym $mod+j focus left 46 | bindsym $mod+k focus down 47 | bindsym $mod+l focus up 48 | bindsym $mod+uring focus right 49 | 50 | # alternatively, you can use the cursor keys: 51 | bindsym $mod+Left focus left 52 | bindsym $mod+Down focus down 53 | bindsym $mod+Up focus up 54 | bindsym $mod+Right focus right 55 | 56 | # move focused window 57 | bindsym $mod+Shift+j move left 58 | bindsym $mod+Shift+k move down 59 | bindsym $mod+Shift+l move up 60 | bindsym $mod+Shift+uring move right 61 | 62 | # alternatively, you can use the cursor keys: 63 | bindsym $mod+Shift+Left move left 64 | bindsym $mod+Shift+Down move down 65 | bindsym $mod+Shift+Up move up 66 | bindsym $mod+Shift+Right move right 67 | 68 | # splitting 69 | bindsym $mod+v split vertical 70 | bindsym $mod+h split horizontal 71 | 72 | # enter fullscreen mode for the focused container 73 | bindsym $mod+f fullscreen 74 | 75 | # change container layout 76 | bindsym $mod+s layout toggle split 77 | bindsym $mod+x layout toggle all 78 | bindsym $mod+t layout tabbed 79 | 80 | # toggle tiling / floating 81 | bindsym $mod+y floating toggle 82 | 83 | # focus the parent container 84 | bindsym $mod+a focus parent 85 | 86 | # focus the child container 87 | bindsym $mod+d focus child 88 | 89 | # next/previous workspace 90 | bindsym Mod1+Tab focus left 91 | bindsym Mod1+Shift+Tab focus right 92 | bindsym $mod+Tab focus down 93 | 94 | # change focus between tiling / floating windows 95 | bindsym $mod+Shift+Tab focus mode_toggle 96 | 97 | # switch to workspace 98 | #bindsym $mod+ampersand workspace 1 99 | #bindsym $mod+eacute workspace 2 100 | #bindsym $mod+quotedbl workspace 3 101 | #bindsym $mod+apostrophe workspace 4 102 | #bindsym $mod+parenleft workspace 5 103 | #bindsym $mod+minus workspace 6 104 | #bindsym $mod+egrave workspace 7 105 | #bindsym $mod+underscore workspace 8 106 | #bindsym $mod+ccedilla workspace 9 107 | #bindsym $mod+agrave workspace 10 108 | bindsym $mod+1 workspace 1 109 | bindsym $mod+2 workspace 2 110 | bindsym $mod+3 workspace 3 111 | bindsym $mod+4 workspace 4 112 | bindsym $mod+5 workspace 5 113 | bindsym $mod+6 workspace 6 114 | bindsym $mod+7 workspace 7 115 | bindsym $mod+8 workspace 8 116 | bindsym $mod+9 workspace 9 117 | bindsym $mod+0 workspace 10 118 | 119 | # switch to workspace mapping - this won't work well 120 | #bindsym F1 workspace 1 121 | #bindsym F2 workspace 2 122 | #bindsym F3 workspace 3 123 | #bindsym F4 workspace 4 124 | #bindsym F5 workspace 5 125 | #bindsym Mod1+F1 workspace 6 126 | #bindsym Mod1+F2 workspace 7 127 | #bindsym Mod1+F3 workspace 8 128 | #bindsym Mod1+F4 workspace 9 129 | #bindsym Mod1+F5 workspace 10 130 | 131 | # use rebinding via ~/.Xmodmap and some free key codes instead 132 | # keycode 67 = XF86Launch5 133 | # keycode 68 = XF86Launch6 134 | # keycode 69 = XF86Launch7 135 | # keycode 70 = XF86Launch8 136 | # keycode 71 = XF86Launch9 137 | bindsym XF86Launch5 workspace 1 138 | bindsym XF86Launch6 workspace 2 139 | bindsym XF86Launch7 workspace 3 140 | bindsym XF86Launch8 workspace 4 141 | bindsym XF86Launch9 workspace 5 142 | bindsym Mod1+XF86Launch5 workspace 6 143 | bindsym Mod1+XF86Launch6 workspace 7 144 | bindsym Mod1+XF86Launch7 workspace 8 145 | bindsym Mod1+XF86Launch8 workspace 9 146 | bindsym Mod1+XF86Launch9 workspace 10 147 | 148 | # move focused container to workspace 149 | bindsym $mod+Shift+1 move container to workspace 1 150 | bindsym $mod+Shift+2 move container to workspace 2 151 | bindsym $mod+Shift+3 move container to workspace 3 152 | bindsym $mod+Shift+4 move container to workspace 4 153 | bindsym $mod+Shift+5 move container to workspace 5 154 | bindsym $mod+Shift+6 move container to workspace 6 155 | bindsym $mod+Shift+7 move container to workspace 7 156 | bindsym $mod+Shift+8 move container to workspace 8 157 | bindsym $mod+Shift+9 move container to workspace 9 158 | bindsym $mod+Shift+0 move container to workspace 10 159 | 160 | # border changing 161 | bindsym $mod+b border toggle 162 | 163 | # scratchpad 164 | bindsym $mod+m move scratchpad 165 | bindsym $mod+o scratchpad show 166 | 167 | # resize window (you can also use the mouse for that) 168 | mode "resize" { 169 | # These bindings trigger as soon as you enter the resize mode 170 | 171 | bindsym j resize shrink width 10 px or 10 ppt 172 | bindsym k resize grow height 10 px or 10 ppt 173 | bindsym l resize shrink height 10 px or 10 ppt 174 | #bindsym semicolon resize grow width 10 px or 10 ppt 175 | bindsym uring resize grow width 10 px or 10 ppt 176 | 177 | # same bindings, but for the arrow keys 178 | bindsym 113 resize shrink width 10 px or 10 ppt 179 | bindsym 116 resize grow height 10 px or 10 ppt 180 | bindsym 111 resize shrink height 10 px or 10 ppt 181 | bindsym 114 resize grow width 10 px or 10 ppt 182 | 183 | # back to normal: Enter or Escape 184 | bindsym Return mode "default" 185 | bindsym Escape mode "default" 186 | } 187 | 188 | bindsym $mod+r mode "resize" 189 | 190 | # bindings for MUTE/UNMUTE 191 | bindsym $mod+F11 exec /usr/bin/pactl set-source-mute alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono yes; exec /usr/bin/pactl play-sample mute 192 | bindsym $mod+F12 exec /usr/bin/pactl set-source-mute alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono no; exec /usr/bin/pactl play-sample speak 193 | 194 | # bindings for ThinkPad keyboard 195 | bindsym XF86AudioLowerVolume exec /usr/bin/pactl set-sink-volume 0 -20%; exec /usr/bin/pactl play-sample volume_blip; exec /usr/bin/killall -USR1 i3status 196 | bindsym XF86AudioRaiseVolume exec /usr/bin/pactl set-sink-volume 0 +20%; exec /usr/bin/pactl play-sample volume_blip; exec /usr/bin/killall -USR1 i3status 197 | bindsym XF86AudioMute exec /usr/bin/pactl set-sink-volume 0 0; exec /usr/bin/pactl play-sample volume_blip; exec /usr/bin/killall -USR1 i3status 198 | bindsym XF86Launch1 exec /usr/bin/pactl play-sample that_was_easy 199 | bindsym XF86MonBrightnessUp exec /usr/bin/xbacklight -inc 10 200 | bindsym XF86MonBrightnessDown exec /usr/bin/xbacklight -dec 5 201 | 202 | # bindings for MS Natural Ergonomic Keyboard 4000 203 | bindsym XF86HomePage exec /usr/bin/xdg-open "http://www.github.com"; workspace 5 204 | bindsym XF86Search exec /usr/bin/xdg-open "http://www.google.com"; workspace 5 205 | bindsym XF86Mail exec /usr/bin/xdg-email; workspace 5 206 | #bindsym XF86Launch5 207 | #bindsym XF86Launch6 208 | #bindsym XF86Launch7 209 | #bindsym XF86Launch8 210 | #bindsym XF86Launch9 211 | #bindsym XF86AudioMute 212 | #bindsym XF86AudioLowerVolume 213 | #bindsym XF86AudioRaiseVolume 214 | #bindsym XF86AudioPlay 215 | #bindsym XF86Favourites echo DOESNOTWORK 216 | #bindsym XF86Calculator exec /usr/bin/xcalc 217 | bindsym XF86Calculator exec /usr/bin/xbacklight -set 100 218 | #bindsym Help 219 | #bindsym Undo 220 | #bindsym Redo 221 | #bindsym XF86New 222 | #bindsym SunOpen 223 | #bindsym XF86Close 224 | #bindsym XF86Reply 225 | #bindsym XF86MailForward 226 | #bindsym XF86Send 227 | #bindsym XF86Save 228 | bindsym Print exec scrot -bs '/tmp/_SCREEN_%Y-%m-%d-%T_$wx$h.png' 229 | bindsym $mod+Print exec scrot -b '/tmp/_SCREEN_FULL_%Y-%m-%d-%T_$wx$h.png' 230 | 231 | # $mod+n reserved for close all notifications 232 | # see ~/.config/dunst/dunstrc for more 233 | 234 | # one bar on both screens 235 | bar { 236 | position top 237 | status_command i3status 238 | tray_output DP-1 239 | } 240 | 241 | # workspace screens 242 | workspace 1 output DP-1 243 | workspace 2 output DP-1 244 | workspace 3 output DP-1 245 | workspace 4 output DP-1 246 | workspace 5 output DP-1 247 | workspace 6 output DVI-D-1 248 | workspace 7 output DVI-D-1 249 | workspace 8 output DVI-D-1 250 | workspace 9 output DVI-D-1 251 | workspace 10 output DVI-D-1 252 | 253 | # workspace assignment (use "xprop") 254 | assign [class="^Google-chrome$"] 5 255 | #assign [class="^URxvt$" instance="^mail$"] 4 256 | assign [class="^Xchat$"] 6 257 | assign [title="^weechat"] 6 258 | assign [class="^quaternion"] 6 259 | assign [class="^[Hh]exchat"] 6 260 | assign [class="^Steam$"] 7 261 | assign [class="^Vide$"] 8 262 | #assign [class="^Decibel-audio-player.py$"] 7 263 | assign [class="^telegram$"] 9 264 | assign [title="Lingea Lexicon 5$"] 10 265 | assign [title="^Stardict$"] 10 266 | assign [class="^Sflphone$"] 10 267 | 268 | # custom window settings 269 | for_window [class="^XCalc$"] floating enable 270 | for_window [class="^Zeal$" instance="scratchpad"] move scratchpad 271 | for_window [title="^Authy"] floating enable, border normal 272 | for_window [class="^Google-chrome$"] border 1pixel 273 | for_window [title="Lingea Lexicon 5$"] border none 274 | for_window [class="^GVim$"] split v, layout stacking 275 | for_window [class="^Zeal$"] floating enable 276 | for_window [class="^Xsane$"] floating enable 277 | for_window [class="^SFLphone"] floating enable 278 | for_window [class="^TeamViewer.exe$"] floating enable 279 | for_window [title="^TeamViewer$"] floating enable 280 | for_window [title="^Computers & Contacts$"] floating enable 281 | for_window [title="- TeamViewer -"] floating enable 282 | for_window [title="^Počítače a kontakty$"] floating enable 283 | for_window [class="^Steam$"] floating enable; border none 284 | for_window [class="^feh$"] fullscreen 285 | for_window [class="^Meld$"] fullscreen 286 | for_window [class="^hl_linux$"] border none; fullscreen 287 | for_window [class="^hl2_linux$"] border none; fullscreen 288 | for_window [title="^Renoise"] border none; fullscreen 289 | for_window [class="^Sflphone$"] floating enable 290 | for_window [class="^Workrave$"] floating enable 291 | for_window [class="^History buffer$"] border none; fullscreen 292 | for_window [title="^Google+ Hangouts is sharing your screen"] floating enable 293 | 294 | # create scratchpad shell 295 | #exec -name scratchpad zeal 296 | 297 | # start the session 298 | exec --no-startup-id ~/.i3/autostart 299 | 300 | # eof 301 | -------------------------------------------------------------------------------- /dock: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | DP=$(xrandr | grep -E "DP[12345] connected" | grep -oE "DP[12345]") 3 | xrandr --output $DP --left-of LVDS1 --auto 4 | pacmd set-sink-port 0 analog-output 5 | sleep 3 6 | for W in 1 2 3 4 5; do 7 | i3-msg "workspace $W; move workspace to output $DP" 8 | done 9 | sleep 1 10 | nmcli r all off 11 | xmodmap /home/lzap/.Xmodmap 12 | configure-input-devices 13 | -------------------------------------------------------------------------------- /dunstrc: -------------------------------------------------------------------------------- 1 | [global] 2 | ### Display ### 3 | 4 | # Which monitor should the notifications be displayed on. 5 | monitor = 0 6 | 7 | # Display notification on focused monitor. Possible modes are: 8 | # mouse: follow mouse pointer 9 | # keyboard: follow window with keyboard focus 10 | # none: don't follow anything 11 | # 12 | # "keyboard" needs a window manager that exports the 13 | # _NET_ACTIVE_WINDOW property. 14 | # This should be the case for almost all modern window managers. 15 | # 16 | # If this option is set to mouse or keyboard, the monitor option 17 | # will be ignored. 18 | follow = mouse 19 | 20 | # The geometry of the window: 21 | # [{width}]x{height}[+/-{x}+/-{y}] 22 | # The geometry of the message window. 23 | # The height is measured in number of notifications everything else 24 | # in pixels. If the width is omitted but the height is given 25 | # ("-geometry x2"), the message window expands over the whole screen 26 | # (dmenu-like). If width is 0, the window expands to the longest 27 | # message displayed. A positive x is measured from the left, a 28 | # negative from the right side of the screen. Y is measured from 29 | # the top and down respectively. 30 | # The width can be negative. In this case the actual width is the 31 | # screen width minus the width defined in within the geometry option. 32 | geometry = "300x5-30+20" 33 | 34 | # Show how many messages are currently hidden (because of geometry). 35 | indicate_hidden = yes 36 | 37 | # Shrink window if it's smaller than the width. Will be ignored if 38 | # width is 0. 39 | shrink = no 40 | 41 | # The transparency of the window. Range: [0; 100]. 42 | # This option will only work if a compositing window manager is 43 | # present (e.g. xcompmgr, compiz, etc.). 44 | transparency = 0 45 | 46 | # The height of the entire notification. If the height is smaller 47 | # than the font height and padding combined, it will be raised 48 | # to the font height and padding. 49 | notification_height = 0 50 | 51 | # Draw a line of "separator_height" pixel height between two 52 | # notifications. 53 | # Set to 0 to disable. 54 | separator_height = 2 55 | 56 | # Padding between text and separator. 57 | padding = 8 58 | 59 | # Horizontal padding. 60 | horizontal_padding = 8 61 | 62 | # Defines width in pixels of frame around the notification window. 63 | # Set to 0 to disable. 64 | frame_width = 3 65 | 66 | # Defines color of the frame around the notification window. 67 | frame_color = "#aaaaaa" 68 | 69 | # Define a color for the separator. 70 | # possible values are: 71 | # * auto: dunst tries to find a color fitting to the background; 72 | # * foreground: use the same color as the foreground; 73 | # * frame: use the same color as the frame; 74 | # * anything else will be interpreted as a X color. 75 | separator_color = frame 76 | 77 | # Sort messages by urgency. 78 | sort = yes 79 | 80 | # Don't remove messages, if the user is idle (no mouse or keyboard input) 81 | # for longer than idle_threshold seconds. 82 | # Set to 0 to disable. 83 | idle_threshold = 120 84 | 85 | ### Text ### 86 | 87 | font = Monospace 8 88 | 89 | # The spacing between lines. If the height is smaller than the 90 | # font height, it will get raised to the font height. 91 | line_height = 0 92 | 93 | # Possible values are: 94 | # full: Allow a small subset of html markup in notifications: 95 | # bold 96 | # italic 97 | # strikethrough 98 | # underline 99 | # 100 | # For a complete reference see 101 | # . 102 | # 103 | # strip: This setting is provided for compatibility with some broken 104 | # clients that send markup even though it's not enabled on the 105 | # server. Dunst will try to strip the markup but the parsing is 106 | # simplistic so using this option outside of matching rules for 107 | # specific applications *IS GREATLY DISCOURAGED*. 108 | # 109 | # no: Disable markup parsing, incoming notifications will be treated as 110 | # plain text. Dunst will not advertise that it has the body-markup 111 | # capability if this is set as a global setting. 112 | # 113 | # It's important to note that markup inside the format option will be parsed 114 | # regardless of what this is set to. 115 | markup = full 116 | 117 | # The format of the message. Possible variables are: 118 | # %a appname 119 | # %s summary 120 | # %b body 121 | # %i iconname (including its path) 122 | # %I iconname (without its path) 123 | # %p progress value if set ([ 0%] to [100%]) or nothing 124 | # %n progress value if set without any extra characters 125 | # Markup is allowed 126 | format = "%s\n%b" 127 | 128 | # Alignment of message text. 129 | # Possible values are "left", "center" and "right". 130 | alignment = left 131 | 132 | # Show age of message if message is older than show_age_threshold 133 | # seconds. 134 | # Set to -1 to disable. 135 | show_age_threshold = 60 136 | 137 | # Split notifications into multiple lines if they don't fit into 138 | # geometry. 139 | word_wrap = yes 140 | 141 | # Ignore newlines '\n' in notifications. 142 | ignore_newline = no 143 | 144 | # Merge multiple notifications with the same content 145 | stack_duplicates = true 146 | 147 | # Hide the count of merged notifications with the same content 148 | hide_duplicate_count = false 149 | 150 | # Display indicators for URLs (U) and actions (A). 151 | show_indicators = yes 152 | 153 | ### Icons ### 154 | 155 | # Align icons left/right/off 156 | icon_position = off 157 | 158 | # Scale larger icons down to this size, set to 0 to disable 159 | max_icon_size = 32 160 | 161 | # Paths to default icons. 162 | icon_folders = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ 163 | 164 | ### History ### 165 | 166 | # Should a notification popped up from history be sticky or timeout 167 | # as if it would normally do. 168 | sticky_history = yes 169 | 170 | # Maximum amount of notifications kept in history 171 | history_length = 20 172 | 173 | ### Misc/Advanced ### 174 | 175 | # dmenu path. 176 | dmenu = /usr/bin/dmenu -p dunst: 177 | 178 | # Browser for opening urls in context menu. 179 | browser = /usr/bin/firefox -new-tab 180 | 181 | # Always run rule-defined scripts, even if the notification is suppressed 182 | always_run_script = true 183 | 184 | # Define the title of the windows spawned by dunst 185 | title = Dunst 186 | 187 | # Define the class of the windows spawned by dunst 188 | class = Dunst 189 | 190 | # Print a notification on startup. 191 | # This is mainly for error detection, since dbus (re-)starts dunst 192 | # automatically after a crash. 193 | startup_notification = false 194 | 195 | ### Legacy 196 | 197 | # Use the Xinerama extension instead of RandR for multi-monitor support. 198 | # This setting is provided for compatibility with older nVidia drivers that 199 | # do not support RandR and using it on systems that support RandR is highly 200 | # discouraged. 201 | # 202 | # By enabling this setting dunst will not be able to detect when a monitor 203 | # is connected or disconnected which might break follow mode if the screen 204 | # layout changes. 205 | force_xinerama = false 206 | 207 | # Experimental features that may or may not work correctly. Do not expect them 208 | # to have a consistent behaviour across releases. 209 | [experimental] 210 | # Calculate the dpi to use on a per-monitor basis. 211 | # If this setting is enabled the Xft.dpi value will be ignored and instead 212 | # dunst will attempt to calculate an appropriate dpi value for each monitor 213 | # using the resolution and physical size. This might be useful in setups 214 | # where there are multiple screens with very different dpi values. 215 | per_monitor_dpi = false 216 | 217 | [shortcuts] 218 | 219 | # Shortcuts are specified as [modifier+][modifier+]...key 220 | # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", 221 | # "mod3" and "mod4" (windows-key). 222 | # Xev might be helpful to find names for keys. 223 | 224 | # Close notification. 225 | close = ctrl+space 226 | 227 | # Close all notifications. 228 | close_all = ctrl+shift+space 229 | 230 | # Redisplay last message(s). 231 | # On the US keyboard layout "grave" is normally above TAB and left 232 | # of "1". Make sure this key actually exists on your keyboard layout, 233 | # e.g. check output of 'xmodmap -pke' 234 | #history = ctrl+grave 235 | 236 | # Context menu. 237 | #context = ctrl+shift+period 238 | 239 | [urgency_low] 240 | # IMPORTANT: colors have to be defined in quotation marks. 241 | # Otherwise the "#" and following would be interpreted as a comment. 242 | background = "#222222" 243 | foreground = "#888888" 244 | timeout = 10 245 | # Icon for notifications with low urgency, uncomment to enable 246 | #icon = /path/to/icon 247 | 248 | [urgency_normal] 249 | background = "#285577" 250 | foreground = "#ffffff" 251 | timeout = 10 252 | # Icon for notifications with normal urgency, uncomment to enable 253 | #icon = /path/to/icon 254 | 255 | [urgency_critical] 256 | background = "#900000" 257 | foreground = "#ffffff" 258 | frame_color = "#ff0000" 259 | timeout = 0 260 | # Icon for notifications with critical urgency, uncomment to enable 261 | #icon = /path/to/icon 262 | 263 | # Every section that isn't one of the above is interpreted as a rules to 264 | # override settings for certain messages. 265 | # Messages can be matched by "appname", "summary", "body", "icon", "category", 266 | # "msg_urgency" and you can override the "timeout", "urgency", "foreground", 267 | # "background", "new_icon" and "format". 268 | # Shell-like globbing will get expanded. 269 | # 270 | # SCRIPTING 271 | # You can specify a script that gets run when the rule matches by 272 | # setting the "script" option. 273 | # The script will be called as follows: 274 | # script appname summary body icon urgency 275 | # where urgency can be "LOW", "NORMAL" or "CRITICAL". 276 | # 277 | # NOTE: if you don't want a notification to be displayed, set the format 278 | # to "". 279 | # NOTE: It might be helpful to run dunst -print in a terminal in order 280 | # to find fitting options for rules. 281 | 282 | #[espeak] 283 | # summary = "*" 284 | # script = dunst_espeak.sh 285 | 286 | #[script-test] 287 | # summary = "*script*" 288 | # script = dunst_test.sh 289 | 290 | #[ignore] 291 | # # This notification will not be displayed 292 | # summary = "foobar" 293 | # format = "" 294 | 295 | #[history-ignore] 296 | # # This notification will not be saved in history 297 | # summary = "foobar" 298 | # history_ignore = yes 299 | 300 | #[signed_on] 301 | # appname = Pidgin 302 | # summary = "*signed on*" 303 | # urgency = low 304 | # 305 | #[signed_off] 306 | # appname = Pidgin 307 | # summary = *signed off* 308 | # urgency = low 309 | # 310 | #[says] 311 | # appname = Pidgin 312 | # summary = *says* 313 | # urgency = critical 314 | # 315 | #[twitter] 316 | # appname = Pidgin 317 | # summary = *twitter.com* 318 | # urgency = normal 319 | # 320 | # vim: ft=cfg 321 | -------------------------------------------------------------------------------- /mute.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lzap/doti3/c37dead7d7c3e4540d8b1a656474418bb2f3d196/mute.wav -------------------------------------------------------------------------------- /speak.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lzap/doti3/c37dead7d7c3e4540d8b1a656474418bb2f3d196/speak.wav -------------------------------------------------------------------------------- /that_was_easy.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lzap/doti3/c37dead7d7c3e4540d8b1a656474418bb2f3d196/that_was_easy.wav -------------------------------------------------------------------------------- /undock: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | killall mbsync 2>/dev/null 3 | for DP in DP1 DP2 DP3; do 4 | xrandr --output $DP --off 5 | #xrandr --output VIRTUAL1 --off 6 | done 7 | pacmd set-sink-port 0 analog-output-speaker 8 | sleep 2 9 | nmcli r all on 10 | for W in $(seq 1 10); do 11 | i3-msg "workspace $W; move workspace to output LVDS1" 12 | done 13 | -------------------------------------------------------------------------------- /volume_blip.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lzap/doti3/c37dead7d7c3e4540d8b1a656474418bb2f3d196/volume_blip.wav --------------------------------------------------------------------------------