commit f3583b3579ec3e9d13c4313c3e21631380d33a4f Author: Dustin C. Hatch Date: Thu Apr 6 11:24:46 2017 -0500 Initial commit diff --git a/config b/config new file mode 100644 index 0000000..c210b70 --- /dev/null +++ b/config @@ -0,0 +1,223 @@ +# i3 config file (v4) +# +# Please see http://i3wm.org/docs/userguide.html for a complete reference! + +# default modifier key is Alt +set $mod Mod1 +# alternate modifier key is Win +set $modb Mod4 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. ISO 10646 = Unicode +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, if you need a lot of unicode glyphs or +# right-to-left text rendering, you should instead use pango for rendering and +# chose a FreeType font, such as: +# font pango:DejaVu Sans Mono 10 +font pango:DejaVu Sans 10 + +# Disable focus-follows-mouse +focus_follows_mouse no + +mouse_warping none + +# 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 + +# start dmenu (a program launcher) +#bindsym $mod+d exec dmenu_run +bindsym $modb+space exec exec dmenu_run -fn 'Monospace-10' & +# 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 +# start a dmenu for i3-msg commands +bindsym $modb+$mod+space exec i3-input + +# 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 $modb+Left focus left +bindsym $modb+Down focus down +bindsym $modb+Up focus up +bindsym $modb+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 $modb+Shift+Left move left +bindsym $modb+Shift+Down move down +bindsym $modb+Shift+Up move up +bindsym $modb+Shift+Right move right + +# move workspace to another output +bindsym $mod+Shift+Ctrl+h move workspace to output left +bindsym $mod+Shift+Ctrl+j move workspace to output down +bindsym $mod+Shift+Ctrl+k move workspace to output up +bindsym $mod+Shift+Ctrl+l move workspace to output right + +# split in horizontal orientation +bindsym $mod+b split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+F11 fullscreen + +# change container layout (tabbed, toggle split) +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 + +# switch to workspace +bindsym $mod+1 workspace 1 +bindsym $mod+2 workspace 2 +bindsym $mod+3 workspace 3 +bindsym $mod+4 workspace 4 +bindsym $mod+5 workspace 5 +bindsym $mod+6 workspace 6 +bindsym $mod+7 workspace 7 +bindsym $mod+8 workspace 8 +bindsym $mod+9 workspace 9 +bindsym $mod+0 workspace 10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace 1 +bindsym $mod+Shift+2 move container to workspace 2 +bindsym $mod+Shift+3 move container to workspace 3 +bindsym $mod+Shift+4 move container to workspace 4 +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 7 +bindsym $mod+Shift+8 move container to workspace 8 +bindsym $mod+Shift+9 move container to workspace 9 +bindsym $mod+Shift+0 move container to workspace 10 + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $modb+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'" +#bindsym $modb+Shift+Escape exit + +# Send the current window to the scratchpad +bindsym $mod+Shift+minus move scratchpad + +# show the window in the scratchpad +bindsym $mod+minus scratchpad show + +# 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 h resize shrink width 10 px or 5 ppt + bindsym j resize grow height 10 px or 5 ppt + bindsym k resize shrink height 10 px or 5 ppt + bindsym l resize grow width 10 px or 5 ppt + bindsym Shift+h resize shrink width 5 px or 2 ppt + bindsym Shift+j resize grow height 5 px or 2 ppt + bindsym Shift+k resize shrink height 5 px or 2 ppt + bindsym Shift+l resize grow width 5 px or 2 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 5 ppt + bindsym Down resize grow height 10 px or 5 ppt + bindsym Up resize shrink height 10 px or 5 ppt + bindsym Right resize grow width 10 px or 5 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +mode "wow" { + bindsym $mod+Escape mode "default" +} + +bindsym $mod+p mode "wow" +bindsym $mod+r mode "resize" + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + i3bar_command exec i3bar + tray_output primary + status_command exec py3status -c ~/.i3/i3status -i ~/.i3/py3status -b +} + +# Colors +# class border backgr text +client.focused #000000 #000000 #FFFFFF + +# per-window settings +for_window [class="Synapse"] border none +for_window [window_role="Preferences"] floating enable +for_window [window_role="addressbook"] floating enable +for_window [window_role="page-info"] floating enable +for_window [class="Gnome-keyring-prompt"] floating enable +for_window [class="Virt-manager" title=".*Connection Details"] floating enable +for_window [title="Open Database File"] floating enable +for_window [title="Select key file manually"] floating enable +for_window [window_role="buddy_list"] floating enable +for_window [title="VPN Connection"] floating enable +for_window [class="Pavucontrol"] floating enable +for_window [title="Microsoft Silverlight"] floating enable +for_window [title="^vimpc$"] move scratchpad +for_window [title="myNoise.net Minified Player"] floating enable +for_window [class="Galculator"] floating enable +for_window [class="Audacious"] floating enable +for_window [class="Pinentry"] floating enable +assign [window_role="conversation"] 3 + +# multimedia keys +bindsym XF86AudioMute exec pactl info | awk -F: '/Default Sink/{print $2}' | xargs -I{} pactl set-sink-mute {} toggle +#bindsym XF86AudioMute exec amixer -D hw sset Master toggle +#bindsym XF86AudioLowerVolume exec mpc volume -1 +#bindsym XF86AudioRaiseVolume exec mpc volume +1 +#bindsym XF86AudioStop exec mpc stop +#bindsym XF86AudioPrev exec mpc prev +#bindsym XF86AudioPlay exec mpc toggle +#bindsym XF86AudioNext exec mpc next +#bindsym Control+XF86AudioStop exec mpc stop-after-current +#bindsym Control+XF86AudioNext exec mpd-random-pl-album.py + +# launcher shortcuts +bindsym $modb+a exec i3-sensible-terminal & +bindsym $modb+e exec pcmanfm & +bindsym $mod+Shift+F12 exec xrandr --output Virtual1 --mode 1280x768 +bindsym Print exec screenshot +bindsym $modb+t exec exec passmenu +bindsym $modb+g exec exec dmenu_snips +bindsym $modb+XF86AudioPlay exec exec audacious diff --git a/i3status b/i3status new file mode 100644 index 0000000..f83d39e --- /dev/null +++ b/i3status @@ -0,0 +1,50 @@ +general { + output_format = "i3bar" + colors = true + interval = 5 +} + +order += "color uname" +order += "color uptime" +order += "cpu_temperature 1" +order += "cpu_temperature 0" +order += "load" +order += "tztime local" + +color uname { + color = "#444444" + uname { + format = "{release}" + cache_timeout = 86400 + } +} + +color uptime { + color = "#4682B4" + uptime {} +} + +battery 0 { + format = "%status %percentage" + integer_battery_capacity = true + low_threshold = 20 + threshold_type = percentage +} + +cpu_temperature 0 { + format = "C: %degrees °C" + path = "/sys/class/hwmon/hwmon3/temp1_input" +} + +cpu_temperature 1 { + format = "G: %degrees °C" + path = "/sys/class/hwmon/hwmon0/temp1_input" +} + +load { + format = "%1min" +} + +tztime local { + format = "%a %d %b %Y %H:%M:%S" +} diff --git a/py3status/.gitignore b/py3status/.gitignore new file mode 100644 index 0000000..78ec7b1 --- /dev/null +++ b/py3status/.gitignore @@ -0,0 +1,2 @@ +__pycache__/ +*.py[co] diff --git a/py3status/color.py b/py3status/color.py new file mode 100644 index 0000000..a502f81 --- /dev/null +++ b/py3status/color.py @@ -0,0 +1,22 @@ +class Py3status: + + force = False + + class Meta: + container = True + + def __init__(self): + self.items = [] + + def colorize(self): + output = [] + for item in self.items: + out = self.py3.get_output(item) + if out and 'separator' not in out[-1]: + out[-1]['separator'] = True + for o in out: + if self.force or not o.get('color'): + o['color'] = self.color + output += out + + return {'composite': output} diff --git a/py3status/uptime.py b/py3status/uptime.py new file mode 100644 index 0000000..a5e8ddf --- /dev/null +++ b/py3status/uptime.py @@ -0,0 +1,14 @@ +import datetime +import math + +class Py3status: + + def uptime(self): + with open('/proc/uptime') as f: + secs = float(f.read().split()[0]) + t = datetime.timedelta(seconds=math.floor(secs)) + if t.days >= 1: + r = str(t).split(',')[0] + else: + r = str(t).rsplit(':', 1)[0] + return {'full_text': r, 'cached_until': self.py3.time_in(60)}