From d1dd6178ac1d31f0c59b8e6b0d760bf04807cbfc Mon Sep 17 00:00:00 2001 From: "David Todd (c0de)" Date: Mon, 20 Aug 2018 14:58:12 -0500 Subject: [PATCH] Add i3 configuration This should allow i3 to present with my configuration if all the dependencies are installed and the default X Session is set to use i3wm --- README.md | 13 ++ Xresources | 45 +++++++ i3/config | 315 +++++++++++++++++++++++++++++++++++++++++++++++ i3/i3blocks.conf | 158 ++++++++++++++++++++++++ i3/wallpaper.sh | 27 ++++ install.sh | 11 +- 6 files changed, 568 insertions(+), 1 deletion(-) create mode 100644 Xresources create mode 100644 i3/config create mode 100644 i3/i3blocks.conf create mode 100644 i3/wallpaper.sh diff --git a/README.md b/README.md index be25712..5272a36 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,19 @@ For example, you may want to add commands such as `git config --global user.name 4. Push to origin 5. Install your new dotfiles everywhere +## i3 information +My dotfiles now include my personalized i3 configuration if you also run the i3wm. +This config is loosly based off of (i3wm-themer)[https://github.com/unix121/i3wm-themer] and may be required as a dependency. + +* (i3-gaps)[https://github.com/Airblader/i3] WM +* (i3blocks)[https://github.com/vivien/i3blocks] i3bar scheduler +* (i3lock-fancy)[https://github.com/meskarune/i3lock-fancy] locker +* (rofi)[https://github.com/DaveDavenport/rofi] launcher +* (Adobe's Source Code Pro)[https://github.com/adobe-fonts/source-code-pro] font +* (rxvt-unicode)[https://wiki.archlinux.org/index.php/Rxvt-unicode] terminal +* (feh)[https://feh.finalrewind.org/] Image viewer/wallpaper +* (xcompmgr)[https://wiki.archlinux.org/index.php/Xcompmgr] Compisiton Manager (window transparency) + ## Branch Info This is the primary branch. diff --git a/Xresources b/Xresources new file mode 100644 index 0000000..75e3ee1 --- /dev/null +++ b/Xresources @@ -0,0 +1,45 @@ +*background: #1e1e20 +*foreground: #c5c8c6 +*cursorColor: #c5c8c6 + +*color0: #1e1e20 +*color8: #f4d8c6 +*color1: #e6a57a +*color9: #e6a57a +*color2: #e39866 +*color10: #e39866 +*color3: #df8b54 +*color11: #df8b54 +*color4: #dc7f41 +*color12: #dc7f41 +*color5: #85678f +*color13: #c6723a +*color6: #b06534 +*color14: #b06534 +*color7: #f1cbb3 +*color15: #E8E8E8 + +URxvt.font: xft:Source Code Pro:size=10.5 +URxvt.depth: 32 +URxvt*scrollBar: false +URxvt*mouseWheelScrollPage: true +URxvt*cursorBlink: true +URxvt*saveLines: 99999 +URxvt*internalBorder: 5 +URxvt*geometry: 70x19 + +rofi.color-enabled: true +rofi.color-window: #1e1e20, #dc7f41, #dc7f41 +rofi.color-normal: #1e1e20, #c5c8c6, #1e1e20, #1e1e20, #dc7f41 +rofi.color-active: #1e1e20, #c5c8c6, #1e1e20, #1e1e20, #dc7f41 +rofi.color-urgent: #1e1e20, #c5c8c6, #1e1e20, #1e1e20, #dc7f41 + +rofi.separator-style: solid +rofi.sidebar-mode: false +rofi.lines: 5 +rofi.font: Source Code Pro Semibold 10.5 +rofi.bw: 1 +rofi.columns: 2 +rofi.padding: 5 +rofi.fixed-num-lines: true +rofi.hide-scrollbar: true diff --git a/i3/config b/i3/config new file mode 100644 index 0000000..9eaec05 --- /dev/null +++ b/i3/config @@ -0,0 +1,315 @@ +# Use the Super key as $mod, because Alt is used in tmux +set $mod Mod4 +set $i3_path ~/.i3 + +new_window pixel 1 +new_float normal + +hide_edge_borders none + +bindsym $mod+u border none +bindsym $mod+y border pixel 1 +bindsym $mod+n border normal + +font xft:URWGothic-Book 11 + +floating_modifier $mod + +bindsym $mod+Return exec i3-sensible-terminal + +# Window kill command +bindsym $mod+Shift+q kill + +# start program launcher +bindsym $mod+d exec --no-startup-id rofi -show run + +# Setup lockscreen +bindsym $mod+p exec --no-startup-id i3lock-fancy -- scrot -z + +# Random wallpaper +exec --no-startup-id $i3_path/wallpaper.sh& + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +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 + +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# workspace back and forth (with/without active container) +workspace_auto_back_and_forth yes +bindsym $mod+b workspace back_and_forth +bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth + +# split orientation +bindsym $mod+h split h;exec notify-send 'tile horizontally' +bindsym $mod+v split v;exec notify-send 'tile vertically' +bindsym $mod+q split toggle + +# toggle 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 + +# toggle sticky +bindsym $mod+Shift+s sticky toggle + +# focus the parent container +bindsym $mod+a focus parent + +# move the currently focused window to the scratchpad +bindsym $mod+Shift+minus move scratchpad + +# Show the next scratchpad window or hide the focused scratchpad window. +# If there are multiple scratchpad windows, this command cycles through them. +bindsym $mod+minus scratchpad show + +# navigate workspaces next / previous +bindsym $mod+Ctrl+Right workspace next +bindsym $mod+Ctrl+Left workspace prev + +# workspaces +set $ws1 1 +set $ws2 2 +set $ws3 3 +set $ws4 4 +set $ws5 5 +set $ws6 6 +set $ws7 7 +set $ws8 8 + +# 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 + +# Move focused container to workspace +bindsym $mod+Ctrl+1 move container to workspace $ws1 +bindsym $mod+Ctrl+2 move container to workspace $ws2 +bindsym $mod+Ctrl+3 move container to workspace $ws3 +bindsym $mod+Ctrl+4 move container to workspace $ws4 +bindsym $mod+Ctrl+5 move container to workspace $ws5 +bindsym $mod+Ctrl+6 move container to workspace $ws6 +bindsym $mod+Ctrl+7 move container to workspace $ws7 +bindsym $mod+Ctrl+8 move container to workspace $ws8 + +# Move to workspace with focused container +bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 +bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 +bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 +bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 +bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 +bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 +bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 +bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 + +# Open specific applications in floating mode +for_window [title="alsamixer"] floating enable border pixel 1 +for_window [class="Calamares"] floating enable border normal +for_window [class="Clipgrab"] floating enable +for_window [title="File Transfer*"] floating enable +for_window [class="Galculator"] floating enable border pixel 1 +for_window [class="GParted"] floating enable border normal +for_window [title="i3_help"] floating enable sticky enable border normal +for_window [class="Lightdm-gtk-greeter-settings"] floating enable +for_window [class="Lxappearance"] floating enable sticky enable border normal +for_window [class="Manjaro-hello"] floating enable +for_window [class="Manjaro Settings Manager"] floating enable border normal +for_window [title="MuseScore: Play Panel"] floating enable +for_window [class="Nitrogen"] floating enable sticky enable border normal +for_window [class="Oblogout"] fullscreen enable +for_window [class="octopi"] floating enable +for_window [title="About Pale Moon"] floating enable +for_window [class="Pamac-manager"] floating enable +for_window [class="Pavucontrol"] floating enable +for_window [class="qt5ct"] floating enable sticky enable border normal +for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal +for_window [class="Simple-scan"] floating enable border normal +for_window [class="(?i)System-config-printer.py"] floating enable border normal +for_window [class="Skype"] floating enable border normal +for_window [class="Thus"] floating enable border normal +for_window [class="Timeset-gui"] floating enable border normal +for_window [class="(?i)virtualbox"] floating enable border normal +for_window [class="Xfburn"] floating enable +for_window [class="feh"] floating enable +for_window [class="steamwebhelper"] floating enable + +# switch to workspace with urgent window automatically +for_window [urgent=latest] focus + +# 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'" + +# Set shut down, restart and locking features +bindsym $mod+0 mode "$mode_system" +set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown +mode "$mode_system" { + #bindsym l exec --no-startup-id i3exit lock, mode "default" + bindsym s exec --no-startup-id i3exit suspend, mode "default" + bindsym u exec --no-startup-id i3exit switch_user, mode "default" + bindsym e exec --no-startup-id i3exit logout, mode "default" + #bindsym h exec --no-startup-id i3exit hibernate, mode "default" + bindsym r exec --no-startup-id i3exit reboot, mode "default" + bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default" + + # exit system mode: "Enter" or "Escape" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Resize window (you can also use the mouse for that) +bindsym $mod+r mode "resize" +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 5 px or 5 ppt + bindsym k resize grow height 5 px or 5 ppt + bindsym l resize shrink height 5 px or 5 ppt + bindsym semicolon resize grow width 5 px or 5 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 + + # exit resize mode: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Autostart applications +#exec --no-startup-id xfce4-panel --disable-wm-check +exec --no-startup-id nm-applet +exec --no-startup-id xfce4-power-manager +exec --no-startup-id pamac-tray +exec --no-startup-id clipit +exec_always --no-startup-id ff-theme-util +exec_always --no-startup-id fix_xcursor +exec --no-startup-id xcompmgr -c -f -n +exec --no-startup-id synergy + +# Screenshots +bindsym --release Print exec shoot # "maim -p 0 -c 0.96,0.5,0.09 $HOME/Pictures/screenshot-$(date +%Y-%m-%d_%H-%M-%S).png" +#bindsym --release Shift+Print exec --no-startup-id "maim -s -p 0 -c 0.96,0.5,0.09 $HOME/Pictures/screenshot-$(date +%Y-%m-%d_%H-%M-%S).png" + +#bar { +# status_command i3status +#} + +bar { +# status_command i3status -c ~/.config/i3/i3status.conf + status_command i3blocks -c $i3_path/i3blocks.conf + + position top +# mode hide + workspace_buttons yes + tray_output primary + tray_padding 0 + separator_symbol "|" + + colors { + background #285477 + statusline #dedede + separator #2d2d2d + focused_workspace #636e88 #285de7 #dedfdg + active_workspace #556677 #234567 #56ef67 + inactive_workspace #636d72 #2d2d2d #dedede + urgent_workspace #ffffff #900000 #d23d32 + } + +#height 30 +} + +# tray icons(DVI-I-1 is the display device's name,use the command "xrandr" to see.) +exec --no-startup-id xrandr --output DVI-I-1 --primary + +# Theme colors +client.focused #e39866 #1e1e20 #e39866 #e39866 #e39866 +client.focused_inactive #e39866 #1e1e20 #e39866 #dc7f41 #dc7f41 +client.unfocused #e39866 #1e1e20 #e39866 #dc7f41 #dc7f41 +client.urgent #e39866 #1e1e20 #e39866 #dc7f41 #dc7f41 +client.placeholder #e39866 #1e1e20 #e39866 #dc7f41 #dc7f41 + +client.background #1e1e20 + +# Gaps +gaps inner 10 +gaps outer -4 + +smart_gaps on + +# Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces. +set $mode_gaps Gaps: (o) outer, (i) inner +set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) +set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) +bindsym $mod+Shift+g mode "$mode_gaps" + +mode "$mode_gaps" { + bindsym o mode "$mode_gaps_outer" + bindsym i mode "$mode_gaps_inner" + bindsym Return mode "default" + bindsym Escape mode "default" +} +mode "$mode_gaps_inner" { + bindsym plus gaps inner current plus 5 + bindsym minus gaps inner current minus 5 + bindsym 0 gaps inner current set 0 + + bindsym Shift+plus gaps inner all plus 5 + bindsym Shift+minus gaps inner all minus 5 + bindsym Shift+0 gaps inner all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} +mode "$mode_gaps_outer" { + bindsym plus gaps outer current plus 5 + bindsym minus gaps outer current minus 5 + bindsym 0 gaps outer current set 0 + + bindsym Shift+plus gaps outer all plus 5 + bindsym Shift+minus gaps outer all minus 5 + bindsym Shift+0 gaps outer all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} diff --git a/i3/i3blocks.conf b/i3/i3blocks.conf new file mode 100644 index 0000000..901a4b9 --- /dev/null +++ b/i3/i3blocks.conf @@ -0,0 +1,158 @@ +# 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/lib/i3blocks/$BLOCK_NAME +separator_block_width=15 +markup=pango + +# 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=VOL +#label=♪ +#instance=Master +#instance=PCM +#interval=10 +#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=HOME +#instance=/mnt/data +#interval=30 + + +# Memory usage +# +# The type defaults to "mem" if the instance is not specified. +[memory] +label=MEM +separator=false +interval=30 + +#[memory] +#label=SWAP +#instance=swap +#separator=false +#interval=30 + +# CPU usage +# +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. +[cpu_usage] +label=CPU +interval=10 +min_width=CPU: 100.00% +separator=false + +# 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=30 + +[load_average] +label=Load +interval=30 + +# Network interface monitoring +# +# If the instance is not specified, use the interface used for default route. +# The address can be forced to IPv4 or IPv6 with -4 or -6 switches. +[iface] +#instance=wlan0 +color=#00FF00 +interval=10 +separator=false + +[wifi] +#instance=wlp3s0 +interval=50 +separator=false + +#[bandwidth] +#instance=eth0 +#interval=5 + + +# Battery indicator +# +# The battery instance defaults to 0. +#[battery] +#label=BAT +#label=⚡ +#label=🔋 +#instance=1 +#interval=30 + +# Date Time +# +[time] +command=date '+%Y-%m-%d %H:%M' +#command=date '+%Y-%m-%d %H:%M:%S' +interval=55 + +# 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=33 +signal=10 + +# OpenVPN support +# +# Support multiple VPN, with colors. +#[openvpn] +#interval=20 + +# 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/i3/wallpaper.sh b/i3/wallpaper.sh new file mode 100644 index 0000000..09eed2f --- /dev/null +++ b/i3/wallpaper.sh @@ -0,0 +1,27 @@ +#!/bin/bash +shopt -s nullglob + +#===change these config start=== + +#wallpapers directory path +path=~/Pictures/Wallpapers + +#time interval +interval=5m + +#===change these config end=== + +cd $path + +while true; do + files=() + + for i in *.jpg *.png; do + [[ -f $i ]] && files+=("$i") + done + range=${#files[@]} + + ((range)) && feh --bg-scale "${files[RANDOM % range]}" + + sleep $interval +done diff --git a/install.sh b/install.sh index 6b35e91..d6fa75d 100755 --- a/install.sh +++ b/install.sh @@ -69,6 +69,7 @@ symlink $basedir/shell/bashrc $HOME/.bashrc symlink $basedir/tmux.conf $HOME/.tmux.conf symlink $basedir/vimrc $HOME/.vimrc symlink $basedir/gitconfig $HOME/.gitconfig +symlink $basedir/Xresources $HOME/.Xresources echo "Installing VIM Pathogen..." mkdir -p $HOME/.vim/autoload $HOME/.vim/bundle @@ -87,11 +88,19 @@ done echo "Changing default shell to ZSH..." chsh -s /usr/bin/zsh +# Install i3 config +echo "Installing i3 configuration" +mkdir -p $HOME/.config/i3 +mkdir -p $HOME/.i3 +symlink $basedir/i3/config $HOME/.config/i3/config +symlink $basedir/i3/i3blocks.conf $HOME/.i3/i3blocks.conf +symlink $basedir/i3/wallpaper.sh $Home/.i3/wallpaper.sh + if [ -e "$postinst" ]; then echo "Running post install..." source "$postinst" else - echo "No post install script found. Optionally create one at $postinst" + echo "No post install script found. Optionally create one at $postinst and reinstall your dotfies" fi echo "Install done."