diff options
author | Jakob Odersky <jakob@odersky.com> | 2016-12-11 00:20:03 -0800 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2016-12-11 00:20:03 -0800 |
commit | 041568e6919ea45613bd4ceb6d423d9416b28d9a (patch) | |
tree | 35e98f9e92d635e9ebae4df7be69e789e1c94078 | |
parent | 234361053f5cb1c6f058c181f460ce7f254729ca (diff) | |
download | dotfiles-041568e6919ea45613bd4ceb6d423d9416b28d9a.tar.gz dotfiles-041568e6919ea45613bd4ceb6d423d9416b28d9a.tar.bz2 dotfiles-041568e6919ea45613bd4ceb6d423d9416b28d9a.zip |
Add i3 configuration
-rw-r--r-- | home/.config/i3/config | 217 | ||||
-rw-r--r-- | home/.config/i3/i3blocks.conf | 120 | ||||
-rwxr-xr-x | home/.config/i3/status/load | 40 |
3 files changed, 377 insertions, 0 deletions
diff --git a/home/.config/i3/config b/home/.config/i3/config new file mode 100644 index 0000000..ce99a05 --- /dev/null +++ b/home/.config/i3/config @@ -0,0 +1,217 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# +# Should you change your keyboard layout some time, delete +# this file and re-run i3-config-wizard(1). +# + +# i3 config file (v4) +# +# Please see http://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod4 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font pango:Ubuntu 18 + +# 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 8 + +# 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 + +# kill focused window +bindsym $mod+Shift+q kill + +# There also is the (new) i3-dmenu-desktop which only displays applications +# shipping a .desktop file. It is a wrapper around dmenu, so you need that +# installed. +bindsym $mod+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon 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+semicolon 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 + +set $workspace1 "1: Org" +set $workspace2 "2: Browser" +set $workspace3 "3: Spark" +set $workspace4 "4" +set $workspace5 "5" +set $workspace6 "6" +set $workspace7 "7" +set $workspace8 "8" +set $workspace9 "9" +set $workspace10 "10: Music" + +# switch to workspace +bindsym $mod+1 workspace $workspace1 +bindsym $mod+2 workspace $workspace2 +bindsym $mod+3 workspace $workspace3 +bindsym $mod+4 workspace $workspace4 +bindsym $mod+5 workspace $workspace5 +bindsym $mod+6 workspace $workspace6 +bindsym $mod+7 workspace $workspace7 +bindsym $mod+8 workspace $workspace8 +bindsym $mod+9 workspace $workspace9 +bindsym $mod+0 workspace $workspace10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace $workspace1 +bindsym $mod+Shift+2 move container to workspace $workspace2 +bindsym $mod+Shift+3 move container to workspace $workspace3 +bindsym $mod+Shift+4 move container to workspace $workspace4 +bindsym $mod+Shift+5 move container to workspace $workspace5 +bindsym $mod+Shift+6 move container to workspace $workspace6 +bindsym $mod+Shift+7 move container to workspace $workspace7 +bindsym $mod+Shift+8 move container to workspace $workspace8 +bindsym $mod+Shift+9 move container to workspace $workspace9 +bindsym $mod+Shift+0 move container to workspace $workspace10 + +# 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'" + +# 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 semicolon 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 + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+r mode "resize" + +set $bg-color #2f343f +set $inactive-bg-color #2f343f +set $text-color #f3f4f5 +set $inactive-text-color #676e7d +set $urgent-bg-color #e53935 + +# window colors +# border background text indicator +client.focused $bg-color $bg-color $text-color #00ff00 +client.unfocused $inactive-bg-color $inactive-bg-color $inactive-text-color #00ff00 +client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color #00ff00 +client.urgent $urgent-bg-color $urgent-bg-color $text-color #00ff00 + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + position top + #status_command i3status + status_command i3blocks -c ~/.config/i3/i3blocks.conf + 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 $text-color + } +} + +# media keys +# https://feeding.cloud.geek.nz/posts/creating-a-modern-tiling-desktop-environment-using-i3/ +bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ '-5%' +bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ '+5%' +bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle + +bindsym XF86MonBrightnessDown exec xbacklight -steps 1 -time 0 -dec 5 +bindsym XF86MonBrightnessUp exec xbacklight -steps 1 -time 0 -inc 5 + +# screenlock +bindsym $mod+Control+l exec i3lock -c 000000 + +# desktop background +exec_always feh --bg-scale ~/.background.jpg + +# GNOME desktop settings such as font sizes and touchpad settings +exec --no-startup-id gnome-shell +exec --no-startup-id gnome-settings-daemon + +# utility applications +exec --no-startup-id nm-applet +exec --no-startup-id redshift + +for_window [class="Spotify"] move to workspace $workspace10 +exec spotify + +for_window [class="Firefox"] border pixel 2 +exec_always --no-statup-id i3-msg 'workspace 2: Browser ; exec firefox' diff --git a/home/.config/i3/i3blocks.conf b/home/.config/i3/i3blocks.conf new file mode 100644 index 0000000..e2ce42b --- /dev/null +++ b/home/.config/i3/i3blocks.conf @@ -0,0 +1,120 @@ +# i3blocks config file +# +# Please see man i3blocks for a complete reference! +# The man page is also hosted at http://vivien.github.io/i3blocks +# +# List of valid properties: +# +# align +# color +# command +# full_text +# instance +# interval +# label +# min_width +# name +# separator +# separator_block_width +# short_text +# signal +# urgent + +# Global properties +# +# The top properties below are applied to every block, but can be overridden. +# Each block command defaults to the script name to avoid boilerplate. +command=/usr/share/i3blocks/$BLOCK_NAME +separator_block_width=15 +markup=none + +# Volume indicator +# +# The first parameter sets the step (and units to display) +# The second parameter overrides the mixer selection +# See the script for details. +[volume] +label=♪ +instance=Master +#instance=PCM +interval=2 +signal=10 + +# Disk usage +# +# The directory defaults to $HOME if the instance is not specified. +# The script may be called with a optional argument to set the alert +# (defaults to 10 for 10%). +[disk] +label= +#instance=/mnt/data +separator=false +interval=30 + +# Memory usage +# +# The type defaults to "mem" if the instance is not specified. +[memory] +label= +separator=false +interval=10 + +[load] +command=/home/jodersky/.config/i3/status/load +label= +interval=10 + +# Battery indicator +# +# The battery instance defaults to 0. +[battery] +#label=BAT +label=⚡ +#instance=1 +interval=30 + +# Date Time +# +[time] +command=date '+%a, %e %B %H:%M' +interval=5 + +# Generic media player support +# +# This displays "ARTIST - SONG" if a music is playing. +# Supported players are: spotify, vlc, audacious, xmms2, mplayer, and others. +#[mediaplayer] +#instance=spotify +#interval=5 +#signal=10 + +# OpenVPN support +# +# Support multiple VPN, with colors. +#[openvpn] +#interval=20 + +# Temperature +# +# Support multiple chips, though lm-sensors. +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. +#[temperature] +#label=TEMP +#interval=10 + +# Key indicators +# +# Add the following bindings to i3 config file: +# +# bindsym --release Caps_Lock exec pkill -SIGRTMIN+11 i3blocks +# bindsym --release Num_Lock exec pkill -SIGRTMIN+11 i3blocks +#[keyindicator] +#instance=CAPS +#interval=once +#signal=11 + +#[keyindicator] +#instance=NUM +#interval=once +#signal=11 diff --git a/home/.config/i3/status/load b/home/.config/i3/status/load new file mode 100755 index 0000000..5518e2f --- /dev/null +++ b/home/.config/i3/status/load @@ -0,0 +1,40 @@ +#!/bin/sh +# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info> +# Copyright (C) 2016 Jakob Odersky <jakob@odersky.com> + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +load="$(cut -d ' ' -f1 /proc/loadavg)" +cpus="$(nproc)" + +# color if load is too high +awk -v cpus=$cpus -v cpuload=$load ' + BEGIN { + load_percent=(cpuload*100)/cpus + print cpuload + print cpuload + if (load_percent < 10) { + exit 0; + } else if (load_percent < 50) { + print "#00ff00"; + exit 0; + } else if (load_percent < 80) { + print "#ffff00"; + exit 0; + } else { + print "#ff0000"; + exit 0; + } + } +' |