Create different config files for divergences between desktop and laptop

See README for details. tldr pull and launch ~/.init_config.sh [laptop|desk] to create
symlinks
master
Quentin Duchemin 2019-01-10 10:45:52 +01:00
parent 0f8ac526f5
commit df9ddfd142
7 changed files with 622 additions and 1 deletions

View File

@ -0,0 +1,213 @@
# 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 https://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod1
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:Roboto, Bold 10
# 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+q kill
# start dmenu (a program launcher)
bindsym $mod+d exec rofi -show run -theme sidebar
bindsym $mod+Shift+d exec ~/.config/rofi/emoji-picker.py
# 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
# 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+z 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+Shift+q focus parent
# switch to workspace
bindsym $mod+ampersand workspace number 1
bindsym $mod+eacute workspace number 2
bindsym $mod+quotedbl workspace number 3
bindsym $mod+apostrophe workspace number 4
bindsym $mod+parenleft workspace number 5
bindsym $mod+minus workspace number 6
bindsym $mod+egrave workspace number 7
bindsym $mod+underscore workspace number 8
bindsym $mod+ccedilla workspace number 9
bindsym $mod+agrave workspace number 10
# move focused container to workspace
bindsym $mod+Shift+ampersand move container to workspace 1
bindsym $mod+Shift+eacute move container to workspace 2
bindsym $mod+Shift+quotedbl move container to workspace 3
bindsym $mod+Shift+apostrophe move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+minus move container to workspace 6
bindsym $mod+Shift+egrave move container to workspace 7
bindsym $mod+Shift+underscore move container to workspace 8
bindsym $mod+Shift+ccedilla move container to workspace 9
bindsym $mod+Shift+agrave 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 $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'"
# no border nor title
new_window none
# hide borders when touching edges
hide_edge_borders both
#do not sync mouse position and focus
focus_follows_mouse no
# 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 windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
# 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"
#put workspace 1 on main screen
workspace 1 output DVI-D-0
workspace 2 output HDMI-0
workspace 3 output DVI-D-0
workspace 4 output HDMI-0
#start compositor
exec --no-startup-id compton
#start polybar
exec_always --no-startup-id $HOME/.config/polybar/scripts/launch_polybar.sh
#fr
exec setxkbmap fr
#numlock
exec numlockx on
#popup config Firefox / Terminator / General Purpose
for_window [window_role="Steam"] floating enable
for_window [window_role="About"] floating enable
for_window [window_role="Organizer"] floating enable
for_window [title="^Terminator *"] floating enable
for_window [window_role="pop-up"] floating enable
for_window [window_role="task_dialog"] floating enable
for_window [title="Preferences$"] floating enable
set $Locker ~/.config/i3/lock/lock.sh
#Just lock the screen
bindsym $mod+l exec --no-startup-id $Locker && sleep 1
#Lock and suspend to RAM
bindsym $mod+Shift+l exec --no-startup-id $Locker && systemctl suspend
exec_always --no-startup-id xset dpms 600
exec_always --no-startup-id xautolock -time 9 -locker $Locker
#Notifications
exec --no-startup-id dunst
#i3 gaps
gaps inner 10
gaps outer 0
smart_gaps on
# Set mouse acceleration
exec_always --no-startup-id xinput set-prop 'FocalTechPS/2 FocalTech Touchpad' 'libinput Accel Speed' 0.8
# ALSA key binding (media keys do not even have keycode...)
bindsym XF86AudioRaiseVolume exec --no-startup-id amixer -D hw:PCH -M sset Master 5%+
bindsym XF86AudioLowerVolume exec --no-startup-id amixer -D hw:PCH -M sset Master 5%-
bindsym XF86AudioMute exec --no-startup-id amixer -D hw:PCH -M sset 'Master' toggle
bindsym XF86AudioPlay exec --no-startup-id playerctl play-pause
bindsym XF86AudioPrev exec --no-startup-ip playerctl prev
bindsym XF86AudioNext exec --no-startup-id playerctl next
# Luminosity on laptop (not xorg-xbacklight but the compatible and working acpilight)
bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 10 -steps 200
bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 10 -steps 200
bindsym XF86KbdBrightnessDown exec --no-startup-id xbacklight -ctrl asus::kbd_backlight -dec 30
bindsym XF86KbdBrightnessUp exec --no-startup-id xbacklight -ctrl asus::kbd_backlight -inc 30
#Open explorer without last tabs
bindsym Mod4+e exec spacefm -n
#Open explorer with last tabs (sym to Ctrl+T, Ctrl+Maj+T)
bindsym Mod4+Shift+e exec spacefm
#Gamma, color temp and brightness night adjuster
exec --no-startup-id redshift-gtk
# Set ALSA initial volume
exec-always --no-startup-id amixer -D hw:PCH -M sset Master 50%
for_window [class="^Thunderbird*"] move container to workspace 3
# Cadence will take care of all we need :
# - Config tells Cadence to start LADISH, export MIDI hw and start A2J ;
# - LADISH implies JACK starts, then it will starts needed apps (e.g. Non-Mixer)
exec --no-startup-id cadence-session-start --start
# Automate port mapping for applications
exec --no-startup-id jack-matchmaker -p ~/.config/jack-matchmaker/patterns
# Set DPI along with .Xresources
exec xrandr --dpi 160
exec thunderbird

View File

@ -0,0 +1,331 @@
;=====================================================
;
; To learn more about how to configure Polybar
; go to https://github.com/jaagr/polybar
;
; The README contains alot of information
;
;=====================================================
[colors]
background = #bb2f343f
foreground = #eee
foreground-alt = #555
secondary = #e60053
alert = #bd2c40
accent = #fba922
[global/wm]
margin-top=50
; Common to top and bottom bars
[bar/common]
dpi = 150
width = 100%
enable-ipc = true
height = 54
foreground = ${colors.foreground}
background = ${colors.background}
line-size = 3
line-color = #f00
locale = en_US.UTF-8
monitor = ${env:MONITOR:HDMI-0}
[bar/chostytopbar]
inherit = bar/common
font-0 = NotoSans-Regular:size=10;2
font-1 = MaterialIcons-Regular:size=11;4
font-2 = Symbola:size=11;2
font-3 = Weather Icons:size=10;3
overline-size = 10
underline-size = 10
overline-color = ${self.background}
underline-color = ${self.background}
border-bottom-size = 1
border-bottom-color = #333
padding-left = 2
padding-right = 10
module-margin-left = 4
module-margin-right = 4
modules-left = powermenu system-uptime-pretty battery
modules-center = xwindow
modules-right = system-usb-udev pulseaudio date
tray-position = right
[bar/chostybottombar]
inherit = bar/common
bottom = true
overline-size = 3
overline-color = ${colors.accent}
underline-size = 3
underline-color = ${colors.accent}
spacing = 3
padding-left = 0
padding-right = 5
module-margin-left = 6
module-margin-right = 6
font-0 = Roboto:size=10;2
font-1 = Symbola:size=4;1
font-2 = Symbola:size=5;1
font-3 = MaterialIcons-Regular:size=11;4
font-4 = Font Awesome 5 Free:style=solid:size=10;2
modules-left = i3
;modules-center =
modules-right = wireless-network wired-network updates-arch-combined temperature cpu memory filesystem-custom
[module/pulseaudio]
type = internal/pulseaudio
interval = 5
format-volume = <ramp-volume> <label-volume>
label-muted = 🔇 muted
label-muted-foreground = #666
ramp-volume-0 = 🔈
ramp-volume-1 = 🔉
ramp-volume-2 = 🔊
ramp-headphones-0 = 
ramp-headphones-1 = 
[module/battery]
type = internal/battery
full-at = 100
battery = BAT0
adapter = AC0
poll-interval = 5
format-charging = <label-charging>
format-discharging = <label-discharging>
format-full = <label-full>
label-charging =  %percentage%%
label-discharging =  %percentage%%
label-full = %{F#77dd77}
[module/xwindow]
type = internal/xwindow
label = %{F#ddd}%title%
label-maxlen=100
[module/wireless-network]
type = internal/network
interface = wlp2s0
interval = 1
label-connected = %{F#ddd}%essid%  %local_ip% %{F#77dd77}%{F-}%downspeed% %{F#dd7777}%{F-}%upspeed%
label-disconnected = Ethernet disconnected
label-disconnected-foreground = #66
[module/i3]
type = internal/i3
format = <label-state> <label-mode>
index-sort = true
ws-icon-0 = 2;
ws-icon-1 = 1;
ws-icon-2 = 3;
ws-icon-3 = 4;rm
ws-icon-4 = irssi;
ws-icon-default = 
label-dimmed-underline = ${root.background}
label-focused = %icon% %name%
label-focused-foreground = #f3f3f3
;label-focused-underline = #${colors.accent}
label-focused-underline = #9f78e1
label-focused-font = 0
label-focused-padding = 4
label-unfocused = %icon% %name%
label-unfocused-underline = #555555
label-unfocused-font = 0
label-unfocused-padding = 4
label-urgent = %icon% %name%
label-urgent-foreground = #000000
label-urgent-background = #bd2c40
label-urgent-underline = #9b0a20
label-urgent-font = 0
label-urgent-padding = 4
label-visible = %icon% %name%
label-visible-foreground = #55ffffff
label-visible-font = 0
label-visible-padding = 4
[module/xkeyboard]
type = internal/xkeyboard
blacklist-0 = num lock
format-prefix = " "
format-prefix-foreground = ${colors.foreground-alt}
format-prefix-underline = ${colors.secondary}
label-layout = %layout%
label-layout-underline = ${colors.secondary}
label-indicator-padding = 2
label-indicator-margin = 1
label-indicator-background = ${colors.secondary}
label-indicator-underline = ${colors.secondary}
[module/filesystem]
type = internal/fs
interval = 25
mount-0 = /
mount-1 = /mnt/data
mount-2 = /mnt/backup
label-mounted = %{F#0a81f5}%mountpoint%%{F-} · %percentage_used%% ·%{F#555} %free% free
label-unmounted = %mountpoint% not mounted
label-unmounted-foreground = ${colors.foreground-alt}
spacing = 4
[module/cpu]
type = internal/cpu
interval = 0.5
format = <label> <ramp-coreload>
label = %{F#fba922} 
ramp-coreload-0 = ▁
ramp-coreload-0-font = 3
ramp-coreload-0-foreground = #aaff77
ramp-coreload-1 = ▂
ramp-coreload-1-font = 3
ramp-coreload-1-foreground = #aaff77
ramp-coreload-2 = ▃
ramp-coreload-2-font = 3
ramp-coreload-2-foreground = #aaff77
ramp-coreload-3 = ▄
ramp-coreload-3-font = 3
ramp-coreload-3-foreground = #aaff77
ramp-coreload-4 = ▅
ramp-coreload-4-font = 3
ramp-coreload-4-foreground = #fba922
ramp-coreload-5 = ▆
ramp-coreload-5-font = 3
ramp-coreload-5-foreground = #fba922
ramp-coreload-6 = ▇
ramp-coreload-6-font = 3
ramp-coreload-6-foreground = #ff5555
ramp-coreload-7 = █
ramp-coreload-7-font = 3
ramp-coreload-7-foreground = #ff5555
[module/memory]
type = internal/memory
interval = 0.2
format = <label> <bar-used>
label = %{F#fba922}
bar-used-width = 50
bar-used-gradient = true
bar-used-foreground-0 = #55aa55
bar-used-foreground-1 = #557755
bar-used-foreground-2 = #f5a70a
bar-used-foreground-3 = #ff5555
bar-used-indicator =
bar-used-indicator-font = 2
bar-used-indicator-foreground = #fff
bar-used-fill =▐
bar-used-fill-font = 2
bar-used-empty =▐
bar-used-empty-font = 2
bar-used-empty-foreground = #444444
[module/date]
type = internal/date
interval = 1.0
date = " %A %d %B %Y"
time = %H:%M:%S
label = %{F#ddd} %date%  %time%
[module/temperature]
type = internal/temperature
thermal-zone = 0
warn-temperature = 60
interval = 0.5
format = <ramp> <label>
format-warn = <ramp> <label-warn>
label = %{F#77dd77} %{F-} %temperature-c%
label-warn = %{F#dd7777} %{F-} %temperature-c%
label-warn-foreground = #dd7777
ramp-0 =
ramp-1 =
ramp-2 =
ramp-foreground = ${colors.foreground-alt}
[module/powermenu]
type = custom/menu
format-padding = 3
label-open = %{F#dd7777}%{F#ddd}
label-close = %{F#dd7777}%{F#ddd}
label-separator = " · "
menu-0-0 = Terminate WM
menu-0-0-foreground = ${colors.accent}
menu-0-0-exec = bspc quit -1
menu-0-1 = Reboot
menu-0-1-foreground = ${colors.accent}
menu-0-1-exec = menu-open-1
menu-0-2 = Power off
menu-0-2-foreground = ${colors.accent}
menu-0-2-exec = menu-open-2
menu-1-0 = Cancel
menu-1-0-foreground = ${colors.accent}
menu-1-0-exec = menu-open-0
menu-1-1 = Reboot
menu-1-1-foreground = ${colors.accent}
menu-1-1-exec = systemctl reboot -i
menu-2-0 = Cancel
menu-2-0-foreground = ${colors.accent}
menu-2-0-exec = menu-open-0
menu-2-1 = Power off
menu-2-1-foreground = ${colors.accent}
menu-2-1-exec = systemctl poweroff
[module/system-usb-udev]
type = custom/script
exec = ~/.config/polybar/scripts/system-usb-udev.sh
tail = true
click-left = ~/.config/polybar/scripts/system-usb-udev.sh --mount
click-right = ~/.config/polybar/scripts/system-usb-udev.sh --unmount
[module/updates-arch-combined]
type = custom/script
exec = ~/.config/polybar/scripts/updates-arch-combined.sh
interval = 600
[module/filesystem-custom]
type = custom/script
exec = ~/.config/polybar/scripts/filesystem.sh
interval = 60
[module/system-uptime-pretty]
type = custom/script
exec = ~/.config/polybar/scripts/system-uptime-pretty.sh
interval = 30

View File

@ -0,0 +1,25 @@
#/bin/sh
icons=()
parts=(/)
output=""
for i in "${!parts[@]}"; do
avail=$(df -h ${parts[$i]} | tail -1 | tr -s ' ' | cut -d' ' -f4)
used=$(df -h ${parts[$i]} | tail -1 | tr -s ' ' | cut -d' ' -f5)
num=$(echo ${used} | cut -d'%' -f1)
if [ "$num" -gt 80 ] ; then
color="#dd7777"
elif [ "$num" -gt 50 ] ; then
color="#fba922"
else
color="#77dd77"
fi
output=$output"%{F${color}}${icons[$i]} $used%{F#555} · $avail%{F-}"
if [ $(($i + 1)) -ne "${#parts[@]}" ] ; then
output=$output" "
fi
done
echo "$output"

View File

@ -0,0 +1,14 @@
#!/usr/bin/env bash
names=("chostybottombar" "chostytopbar")
killall -q polybar
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
if type "xrandr"; then
monitors=$(xrandr --query | grep " connected" | cut -d" " -f1)
monarray=($monitors)
for name in ${names[@]}; do
MONITOR=${monarray[0]} polybar -q --reload ${name} &
done
else
polybar --reload ${name} &
fi

View File

@ -0,0 +1,13 @@
#!/bin/sh
updates_arch=$(/usr/bin/checkupdates | wc -l)
updates_aur=$(/usr/bin/checkupdates-aur | wc -l)
updates=$(("$updates_arch" + "$updates_aur"))
if [ "$updates" -gt 0 ]; then
echo "%{F#dd7777}%{F#ddd} $updates"
else
echo "%{F#77dd77}%{F#ddd} 0"
fi

23
.init_config.sh 100755
View File

@ -0,0 +1,23 @@
#!/bin/bash
LAPTOP="laptop"
DESKTOP="desk"
function usage() {
echo "$0: creates symlink for divergent config between laptop and desktop (e.g. battery management...)"
echo "usage: $0 [${LAPTOP}|${DESKTOP}]"
exit 0
}
if [ -z "{$1}" ] || [ "$#" -ne 1 ]; then
usage
fi
if [ "${1}" != "${LAPTOP}" ] && [ "${1}" != "${DESKTOP}" ]; then
usage
fi
for f in `find ~/.config -type f -name "*.${1}"`; do
echo "Symlinking to ${f}..."
ln -sf ${f} ${f%.*}
done

View File

@ -58,9 +58,11 @@ I added to the classic Arch/i3WM :
Please note : on my system XDG_CONFIG_HOME is $HOME/.config. Please note : on my system XDG_CONFIG_HOME is $HOME/.config.
* Clone in bare repository : `git clone --bare https://github.com/Chostakovitch/dotfiles.git $HOME/.cfg`. A bare repository does not have a working tree (basically it is just `.git` content). So we avoid conflicts with another git repository. * Clone in bare repository : `git clone --bare https://github.com/Chostakovitch/dotfiles.git $HOME/.cfg`. A bare repository does not have a working tree (basically it is just `.git` content). So we avoid conflicts with another git repository.
* Create a working tree outside `.cfg` : `/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME checkout`. * Create a working tree outside `.cfg` : `git --git-dir=$HOME/.cfg/ --work-tree=$HOME checkout`.
* Adjust `DEFAUT_USER` in `~/.zshrc`. * Adjust `DEFAUT_USER` in `~/.zshrc`.
* Source `~/.zshrc` and use provided `config` alias to pull. * Source `~/.zshrc` and use provided `config` alias to pull.
* `config config --local status.showUntrackedFiles no` to ignore untracked files in status (better as it is home dir). * `config config --local status.showUntrackedFiles no` to ignore untracked files in status (better as it is home dir).
Also, as desktop machine and laptop don't have configuration conflicts (e.g. laptop uses PulseAudio and desktop uses ALSA/Jack), some files have `.desk` extension and others `.laptop`. Launch `~/.init_config.sh` to create symlinks (e.g. `~/.config/i3/config` will be symlinked to `~/.config/i3/config.laptop` if I launch `~/.init_config.sh laptop`).
Credits to [this great article](https://developer.atlassian.com/blog/2016/02/best-way-to-store-dotfiles-git-bare-repo/) for the trick. Credits to [this great article](https://developer.atlassian.com/blog/2016/02/best-way-to-store-dotfiles-git-bare-repo/) for the trick.