1. File manager integration¶
Have you ever thought about how we start a new work in i3
?
This is our typical workflow:
- We launch an application with Alt+D or Alt+Shift+D [1], or
- we open a file manager with Alt+T, choose a file and then launch the associated application.
1.1. File manager usage in scratchpad¶
In every day work we usually work with applications and file managers on the same project but never at the same time! This is why it is very handy to keep file manager windows in the background not mixing them with application windows.
This i3
configuration separates usual application windows from file
manager windows. File manager windows are kept in the scratchpad of
i3
allowing to make them appear and disappear without disturbing
application windows.
Alt+T | Opens a file manager instance, |
Alt+- | hides it, [2] |
Alt+- | unhides it one by one by pressing the same key again, [3] |
Alt+< | hides all file manager windows, |
Alt+< | unhides all filemanger windows at the same time by pressing the same key again. [4] |
Alt+Shift+Q | closes the file manager. |
Table: File manager usage in i3
For “drag and drop” copy operations you need to see more then one file
manager window at the same time. Use Alt+< to toggle view
all file managers
. As all file manager windows have the same default
size and position you will see only the top window. Move the top window
manually, then the underlaying window become visible. Press the Alt+<
key again to make them disappear.
Another handy way to hide and show the file manager is the gtrayicon
as shown in red below. It has the same function as Alt+<.
1.2. Source code of file manager integration¶
The following source code lines launch the Thunar
file manager.
To change replace the keyword
“thunar” with your preferred file manager.
Install the gtrayicon
package (Debian, Ubuntu)
sudo apt-get install gtrayicon
Append the following to /etc/i3/config
:
/etc/i3/conf
excerpt
bindsym Alt+t exec thunar
bindsym Alt+minus scratchpad show
for_window [class="Thunar"] move scratchpad; [class="Thunar"] scratchpad show;
bindsym Alt+less [class="Thunar"] scratchpad show
exec gtrayicon --tooltip="Hide/show file manager." --activate='i3-msg [class="Thunar"] scratchpad show;' --deactivate='i3-msg [class="Thunar"] scratchpad show;'
2. Exit mode¶
The standard configuration defines Alt+Shift+e to exit i3
. It will
send you back to the login screen.
2.1. Exit mode usage¶
The new exit mode defines the following shortcuts:
Alt+Shift+X, L | Lock the screen. |
Alt+Shift+X, E | Exit i3 (same as Alt+Shift+E). |
Alt+Shift+X, S | Suspend. |
Alt+Shift+X, H | Hibernate. |
Alt+Shift+X, R | Reboot. |
Alt+Shift+X, D | Shutdown. |
Table: Exit mode usage
2.2. Source code¶
Append the following to /etc/i3/config
:
Debian 8/Debian 9 extract of /etc/i3/config
# New exit mode.
set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (d) shutdown
mode "$mode_system" {
bindsym l exec --no-startup-id i3lock, mode "default"
bindsym e exec --no-startup-id "i3-nagbar -t warning -m 'You pressed the exit shortcut. All unsaved data will be lost.' -b 'Yes, exit i3' 'i3-msg exit'", mode "default"
bindsym s exec --no-startup-id i3lock, mode default; exec --no-startup-id /bin/systemctl suspend, mode "default"
bindsym h exec --no-startup-id i3lock, mode default; exec --no-startup-id /bin/systemctl hibernate, mode "default"
bindsym r exec --no-startup-id "i3-nagbar -t warning -m 'You pressed the reboot shortcut. All unsaved data will be lost.' -b 'Yes, reboot' '/bin/systemctl reboot'", mode "default"
bindsym d exec --no-startup-id "i3-nagbar -t warning -m 'You pressed the shutdown shortcut. All unsaved data will be lost.' -b 'Yes, shutdown' '/bin/systemctl poweroff'", mode "default"
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+Shift+x mode "$mode_system"
Important
Your system policy might not allow users to suspend, power off,
hibernate and restart. The rights to do so are defined in:
/usr/share/polkit-1/actions/org.freedesktop.login1.policy
. A
step by step howto can be found
here.
Create the following file:
Sample file:
/etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla
### Make shure that all users are part of the group `users`.
# gpasswd -a thomas users
# See https://wiki.debianforum.de/Xfce
[Local restart]
Identity=unix-group:users
Action=org.freedesktop.consolekit.system.restart
ResultAny=yes
ResultInactive=no
ResultActive=yes
[Local shutdown]
Identity=unix-group:users
Action=org.freedesktop.consolekit.system.stop
ResultAny=yes
ResultInactive=no
ResultActive=yes
[Local restart - multiple]
Identity=unix-group:users
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultAny=yes
ResultInactive=no
ResultActive=yes
[Local shutdown - multiple]
Identity=unix-group:users
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultAny=yes
ResultInactive=no
ResultActive=yes
# See also
# https://wiki.archlinux.org/index.php/NetworkManager
# See also group definitions here
# https://wiki.debian.org/SystemGroups
[Local shutdown - multiple]
Identity=unix-group:netdev
Action=org.freedesktop.ModemManager1.Device.Control
ResultAny=yes
ResultInactive=no
ResultActive=yes
3. Pass-through mode¶
What makes i3
so convenient is that most of the actions can be
controlled with a simple keystroke. All i3
functions are bound to
the a user defined modifier key which is usually the Alt or the Win key.
Combinations with this modifier key like Alt+Return are interpreted by
i3
and are not farwarded to the active window. But in some cases
it is necessary to pass such an i3
key sequence to the active
window.
Alt+Shift+Backspace | disables temporarily all i3 key bindings
forwarding all key strokes to the active window. |
Alt+Shift+Backspace | re-enables all i3 key bindings. |
Table: Pass-through-mode usage in i3
Append the following to /etc/i3/config
:
Source code of pass-through mode.
set $passthrough_keys Suspend all window manager keys exit: Mod+Shift+Backspace
mode "$passthrough_keys" {
bindcode Alt+Shift+22 mode "default"
}
bindcode Alt+Shift+22 mode "$passthrough_keys"
4. Date stamper¶
The YYYYMMDD-
prefix in filenames like for example in
20150225-minutes.doc
is very useful to archive files
chronologically. The Alt+Shift+N time stamper shortcut copies the
current date into the clipboard from where it can be pasted with Ctrl+V
or the middle mouse button.
Alt+Shift+N, Ctrl+V | Copies and pastes the current date at the cursor position. |
Alt+Shift+N, middle mouse button | Copies and pastes the current date at the mouse pointer position. |
Table: Date stamper usage
Append the following to /etc/i3/config
:
Source code of date stamper
bindsym $mod+Shift+n exec "echo $(date +%Y%m%d)- |tr -d '\n'| xclip -selection c"; exec "echo $(date +%Y%m%d)- |tr -d '\n'| xclip"
[1] | bindsym $mod+Shift+d exec xfce4-appfinder |
[2] | When another window is selected press the key twice to hide. |
[3] | It actually cycles through all windows in the scratchpad. |
[4] | The windows might by stacked and you see only the top one. Move them manually. |