aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml5
-rwxr-xr-xtests/run.sh32
-rw-r--r--tests/test-apply-no-vars.out (renamed from tests/test-simple-apply.out)306
-rw-r--r--tests/test-apply-no-vars.sh (renamed from tests/test-simple-apply.sh)3
-rw-r--r--tests/test-apply-with-vars.out306
-rw-r--r--tests/test-apply-with-vars.sh7
-rw-r--r--tests/test-extract.out (renamed from tests/test-simple-extract.out)0
-rw-r--r--tests/test-extract.sh (renamed from tests/test-simple-extract.sh)0
8 files changed, 337 insertions, 322 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..365de6c
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,5 @@
+debian:
+ stage: test
+ image: "debian/stable"
+ script:
+ - bash tests/run.sh run
diff --git a/tests/run.sh b/tests/run.sh
index 93cad38..a0eced4 100755
--- a/tests/run.sh
+++ b/tests/run.sh
@@ -1,18 +1,24 @@
#!/bin/bash
+[ $# -ne 1 ] && { echo "Usage: $0 <run | break>"; exit 1; }
+
+##### Arguments #####
wai=$(dirname $(readlink -f $0))
out=$(mktemp)
-int=0
+[ "$1" == "break" ] && int=1 || int=0
+#####################
+##### Utils Functions #####
passed(){
echo -e "$1 ===> \e[32mpassed :)\e[0m"
}
-
fail(){
echo -e "$1 ===> \e[5m\e[31mfail :(\e[0m"
}
-
-[ $# -gt 0 ] && [ $1 == "-b" ] && int=1
+clean(){
+ rm ${out}
+}
+##################### #####
##### Run Integration Tests #####
nb_pass=0
@@ -20,11 +26,11 @@ nb_fail=0
for test in $(find ${wai} -type f -name "test-*.sh")
do
test_name=$(basename $test)
- expectations="${test_name%.*}.out"
- bash $test > $out 2>&1
- log=$(diff -q "${out}" "${expectations}")
+ expectations="${wai}/${test_name%.*}.out"
+ bash ${test} > "${out}" 2>&1 # Run Test
+ diff_out=$(diff "${out}" "${expectations}")
- if [ ! -z "$log" ]
+ if [ ! -z "${diff_out}" ]
then
fail "${test_name}"
nb_fail=$(( nb_fail + 1 ))
@@ -32,14 +38,16 @@ do
if [ $int -eq 1 ]
then
echo "========== Diff =========="
- diff "${out}" "${expectations}"
- exit 1
+ echo -e "${diff_out}"
+ clean
+ exit 1
fi
else
nb_pass=$(( nb_pass + 1 ))
passed "${test_name}"
fi
done
+clean
#################################
@@ -47,7 +55,3 @@ echo -e "\n===== STATS ====="
echo "${nb_pass} pass"
echo "${nb_fail} fails"
-##### Clear #####
-rm ${out}
-#################
-
diff --git a/tests/test-simple-apply.out b/tests/test-apply-no-vars.out
index ac630f1..ef73c72 100644
--- a/tests/test-simple-apply.out
+++ b/tests/test-apply-no-vars.out
@@ -304,309 +304,3 @@ client.focused_inactive #C1C1C1 #bbbbbb #ffffff #009c58 #C1C1C1
client.unfocused #414141 #2d2d2d #ffffff #bbbbbb #414141
client.urgent #FFCB21 #ffc609 #ffffff #d8442e #FFCB21
-##### Variables #####
-##### Define workspaces names
-set $ws1 "1 "
-set $ws2 "2"
-set $ws3 "3"
-set $ws4 "4"
-set $ws5 "5"
-set $ws6 "6"
-set $ws7 "7"
-set $ws8 "8"
-set $ws9 "9"
-set $ws10 "10"
-set $ws-firefox ""
-set $ws-org ""
-set $ws-tools ""
-set $ws-mutt ""
-set $ws-weechat ""
-set $ws-newsboat ""
-set $ws-R ""
-set $ws-signal "Signal"
-set $ws-cmus ""
-###### Define some default keys
-set $LEFT j
-set $DOWN k
-set $UP l
-set $RIGHT m
-##### Define shutter sound location (for screenshots)
-set $shutter_sound ~/.config/i3/shutter.mp3
-##### Define modifier
-set $mod Mod4
-set $jump Mod3
-#####################
-
-##### Appearence #####
-##### Define font
-font pango:DejaVu Sans Mono 12
-##### To gain a bit of space
-hide_edge_borders both
-######################
-
-##### I3 Behavior #####
-##### Disable cycle (like workspace) in a container with several windows
-focus_wrapping no
-##### Enable workspace auto back and forth (go back to the previous workspace with same keybinding)
-workspace_auto_back_and_forth yes
-##### Default workspace layout
-workspace_layout tabbed
-#######################
-
-##### Setup Mouse #####
-##### Disable mouse on hover focus
-focus_follows_mouse no
-##### Define mouse floating window size and move modifier
-floating_modifier $mod
-floating_minimum_size 200 x 200
-#######################
-
-##### Keys Bindings #####
-##### Volume
-bindsym XF86AudioRaiseVolume exec amixer -D pulse sset Master 5%+
-bindsym XF86AudioLowerVolume exec amixer -D pulse sset Master 5%-
-bindsym XF86AudioMute exec amixer -D pulse sset Master toggle
-##### Scratchpad
-bindsym $mod+asterisk scratchpad show
-bindsym $mod+Shift+asterisk move scratchpad
-##### Define brightness control
-bindcode 233 exec xbacklight -inc 5
-bindcode 232 exec xbacklight -dec 5
-##### Move workspace to next output
-bindsym $mod+ugrave move workspace to output right
-##### Define screenshot key
-bindsym Print exec scrot ~/Pictures/screenshots/%Y-%m-%d_%H:%M:%S.png && exec ffplay -nodisp -autoexit $shutter_sound
-bindsym $mod+Print exec scrot -e "ffplay -nodisp -autoexit $shutter_sound && gimp \$f" ~/Pictures/screenshots/%Y-%m-%d_%H:%M:%S.png
-##### Start terminal
-bindsym $mod+Shift+Return exec xterm
-##### Kill a window
-bindsym $mod+Shift+a kill
-##### Start dmenu
-bindsym $mod+d exec dmenu_run -b -i -sb "#CC0000" -nb "#4A4A4A" -fn "Deja Vu Sans Mono-14:bold"
-##### Configure password manager
-bindsym $mod+Shift+d exec pp
-##### Change focus
-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+$LEFT move left
-bindsym $mod+Shift+$DOWN move down
-bindsym $mod+Shift+$UP move up
-bindsym $mod+Shift+$RIGHT move right
-##### Layout Splits
-bindsym $mod+h split h
-bindsym $mod+v split v
-##### Toggle fullscreen
-bindsym $mod+f fullscreen toggle
-##### Change container layout (either stacked, tabbed or splitv/splith)
-bindsym $mod+s layout stacking
-bindsym $mod+z layout tabbed
-bindsym $mod+t 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 container
-bindsym $mod+q focus parent
-bindsym $mod+Shift+q focus child
-##### Workspace next and prev
-bindsym $mod+Right workspace next
-bindsym $mod+Left workspace prev
-##### Switch to workspace
-bindsym $mod+ampersand workspace $ws1
-bindsym $mod+eacute workspace $ws2
-bindsym $mod+quotedbl workspace $ws3
-bindsym $mod+apostrophe workspace $ws4
-bindsym $mod+parenleft workspace $ws5
-bindsym $mod+minus workspace $ws6
-bindsym $mod+egrave workspace $ws7
-bindsym $mod+underscore workspace $ws8
-bindsym $mod+ccedilla workspace $ws9
-bindsym $mod+agrave workspace $ws10
-bindsym $mod+exclam workspace $ws-tools
-##### Move focused container to workspace
-bindsym $mod+Shift+ampersand move container to workspace $ws1
-bindsym $mod+Shift+eacute move container to workspace $ws2
-bindsym $mod+Shift+quotedbl move container to workspace $ws3
-bindsym $mod+Shift+apostrophe move container to workspace $ws4
-bindsym $mod+Shift+5 move container to workspace $ws5
-bindsym $mod+Shift+minus move container to workspace $ws6
-bindsym $mod+Shift+egrave move container to workspace $ws7
-bindsym $mod+Shift+underscore move container to workspace $ws8
-bindsym $mod+Shift+ccedilla move container to workspace $ws9
-bindsym $mod+Shift+agrave move container to workspace $ws10
-bindsym $mod+Shift+exclam move container to workspace $ws-tools
-# Read 1 character and mark the current window with this character
-bindsym $mod+shift+w exec i3-input -F 'mark %s' -l 1 -P 'Mark: '
-##### Reload configuration file
-bindsym $mod+Shift+c reload
-##### Restart i3 inplace
-bindsym $mod+Shift+r restart
-##### Exit i3
-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
-mode "resize" {
- # Pressing left will shrink the window’s width.
- bindsym $LEFT resize shrink width 10 px or 10 ppt
- # Pressing down will grow the window’s height.
- bindsym $UP resize grow height 10 px or 10 ppt
- # Pressing up will shrink the window’s height.
- bindsym $DOWN resize shrink height 10 px or 10 ppt
- # Pressing right will grow the window’s width.
- bindsym $RIGHT resize grow width 10 px or 10 ppt
-
- # Back to normal
- bindsym Return mode "default"
- bindsym Escape mode "default"
- bindsym q mode "default"
-}
-bindsym $mod+r mode "resize"
-##### Cmus control
-mode "cmus" {
- # Toggle pause
- bindsym c exec cmus-remote -u
- # Next
- bindsym b exec cmus-remote -n
- # Previous
- bindsym z exec cmus-remote -r
- #Shuffle
- bindsym s exec cmus-rand integrated
- # Vol up
- bindsym Shift + plus exec cmus-remote -v +5%
- bindsym KP_Add exec cmus-remote -v +5%
- # Vol down
- bindsym minus exec cmus-remote -v -5%
- bindsym KP_Subtract exec cmus-remote -v -5%
- # Quit
- bindsym x exec cmus-remote -C quit; mode "default"
- # Back to normal
- bindsym Return mode "default"
- bindsym Escape mode "default"
- bindsym q mode "default"
-}
-bindsym $mod c mode "cmus"
-##### App launcher keys
-mode "launcher" {
- # Lancer terminal
- bindsym t exec tmux_run; mode "default"
- # Define lock control
- bindsym F3 exec i3lock -f -i ~/.dotfiles-deps/i3/lock.png; mode "default"
- # Open wicd
- bindsym w exec xterm -e nmtui; mode "default"
- # Open pavucontrol
- bindsym p exec i3-pavucontrol; mode "default"
- # Start weechat
- bindsym Shift + w exec xterm -e weechat || notify-send -t 2000 "Weechat already launched"; mode "default"
- # Open mc
- bindsym m exec xterm -e mc; mode "default"
- # Join cmus
- bindsym c exec xterm -e cmus; mode "default"
- # Start deluge
- bindsym d exec xterm -e deluge-console ; mode "default"
- # Open orgfiles
- bindsym o exec org-session ; mode "default"
- # Enable double screen
- bindsym F1 exec ~/.config/i3/inria.sh; mode "default"
- # Disable double screen
- bindsym F2 exec ~/.config/i3/noinria.sh; mode "default"
- bindsym F4 exec xrandr --output DP1-2 --same-as eDP1 ; mode "default"
- # Back to normal
- bindsym Return mode "default"
- bindsym Escape mode "default"
- bindsym q mode "default"
-}
-bindsym $mod+o mode "launcher"
-##### Quick window switching (maybe using i3-input will be more generic)
-bindsym $jump+m workspace $ws-mutt
-bindsym $jump+w workspace $ws-weechat
-bindsym $jump+n workspace $ws-newsboat
-bindsym $jump+r workspace $ws-R
-bindsym $jump+s workspace $ws-signal
-bindsym $jump+c workspace $ws-cmus
-bindsym $jump+f workspace $ws-firefox
-bindsym $jump+agrave workspace $ws-org
-#########################
-
-##### Startup #####
-##### Startup tools
-exec --no-startup-id xmodmap ~/.Xmodmap
-exec --no-startup-id xterm -T Mutt -e mutt
-exec --no-startup-id xterm -xrm "xterm*allowTitleOps: false" -T Weechat -e weechat # We should prevent Weechat to change xterm window title (with -xm ...)
-exec --no-startup-id xterm -xrm "xterm*allowTitleOps: false" -T Cmus -e cmus
-exec --no-startup-id pulseeffects
-exec --no-startup-id signal-desktop-disable-gpu
-exec --no-startup-id xterm -T "R Session" -e R
-exec --no-startup-id xterm -T "Newsboat" -e newsboat
-##### Startup applications
-exec --no-startup-id firefox
-exec --no-startup-id org-session
-exec --no-startup-id /usr/bin/emacs --daemon
-exec --no-startup-id xcompmgr
-exec --no-startup-id xrdb ~/.Xdefaults
-exec --no-startup-id clipit
-exec --no-startup-id redshift -l 48.1265:-1.6499 -t 5500:3600 -g 0.8 -m vidmode -v
-exec --no-startup-id dunst -conf ~/.dunstrc
-exec_always feh --bg-scale ~/.config/i3/background.jpg
-###################
-
-##### Workspaces Assignments #####
-##### Assign apps to workspace
-assign [class="^firefox$"] $ws-firefox
-assign [class="^Eclipse$"] $ws2
-assign [title="org-session"] $ws-org
-##### Assign tools workspaces
-assign [class="^Signal$"] $ws-signal
-assign [title="Mutt"] $ws-mutt
-assign [title="Weechat"] $ws-weechat
-assign [title="R Session"] $ws-R
-assign [title="Newsboat"] $ws-newsboat
-assign [class="Pulseeffects"] $ws-cmus
-assign [title="Cmus"] $ws-cmus
-##################################
-
-##### Configure Windows #####
-for_window [class="feh"] floating enable
-for_window [class="Geeqie"] floating enable, resize set 1700 900, move position center
-for_window [class="MPlayer"] floating enable
-for_window [title="^Tmux$"] floating enable, resize set 1700 900, move position center
-for_window [class="^Pavucontrol$"] floating enable, resize set 1700 900, move position center
-#############################
-
-##### Configure Outputs #####
-workspace $ws1 output eDP1 # Compilation
-workspace $ws2 output DP1-2 # Eclipse
-workspace $ws3 output DP1-2
-workspace $ws4 output DP1-2
-workspace $ws5 output DP1-2
-workspace $ws6 output DP1-2
-workspace $ws7 output DP1-2
-workspace $ws8 output DP1-2
-workspace $ws9 output DP1-1 # Web browser
-workspace $ws10 output DP1-2 # org-session signal
-#############################
-
-##### Theme #####
-bar {
- #mode hide
- position top
- font pango:DejaVu Sans Mono 14
- status_command i3status -c ~/.config/i3/i3status.conf
-separator_symbol "|"
- colors {
- separator #AAAAAA
- background #1f2326
- statusline #FFFFFF
- focused_workspace #9FCA56 #9FCA56 #151718
- active_workspace #DCCD69 #DCCD69 #151718
- inactive_workspace #1f2326 #1f2326 #AAAAAA
- urgent_workspace #CE4045 #CE4045 #FFFFFF
- }
-}
-#################
-client.focused #4F99D3 #4F99D3 #151718 #9FCA56 #4F99D3
-client.focused_inactive #9FCA56 #9FCA56 #151718 #A074C4 #9FCA56
-client.unfocused #1f2326 #1f2326 #AAAAAA #A074C4 #1f2326
-client.urgent #CE4045 #CE4045 #FFFFFF #DCCD69 #CE4045
-
diff --git a/tests/test-simple-apply.sh b/tests/test-apply-no-vars.sh
index 2516906..9633f05 100644
--- a/tests/test-simple-apply.sh
+++ b/tests/test-apply-no-vars.sh
@@ -5,5 +5,4 @@ source "${wai}/include.sh"
##### Test apply on theme with no variables
$exec apply -d ${data}/google
-##### Test apply on theme with variables
-$exec apply -d ${data}/seti
+
diff --git a/tests/test-apply-with-vars.out b/tests/test-apply-with-vars.out
new file mode 100644
index 0000000..9d121e0
--- /dev/null
+++ b/tests/test-apply-with-vars.out
@@ -0,0 +1,306 @@
+##### Variables #####
+##### Define workspaces names
+set $ws1 "1 "
+set $ws2 "2"
+set $ws3 "3"
+set $ws4 "4"
+set $ws5 "5"
+set $ws6 "6"
+set $ws7 "7"
+set $ws8 "8"
+set $ws9 "9"
+set $ws10 "10"
+set $ws-firefox ""
+set $ws-org ""
+set $ws-tools ""
+set $ws-mutt ""
+set $ws-weechat ""
+set $ws-newsboat ""
+set $ws-R ""
+set $ws-signal "Signal"
+set $ws-cmus ""
+###### Define some default keys
+set $LEFT j
+set $DOWN k
+set $UP l
+set $RIGHT m
+##### Define shutter sound location (for screenshots)
+set $shutter_sound ~/.config/i3/shutter.mp3
+##### Define modifier
+set $mod Mod4
+set $jump Mod3
+#####################
+
+##### Appearence #####
+##### Define font
+font pango:DejaVu Sans Mono 12
+##### To gain a bit of space
+hide_edge_borders both
+######################
+
+##### I3 Behavior #####
+##### Disable cycle (like workspace) in a container with several windows
+focus_wrapping no
+##### Enable workspace auto back and forth (go back to the previous workspace with same keybinding)
+workspace_auto_back_and_forth yes
+##### Default workspace layout
+workspace_layout tabbed
+#######################
+
+##### Setup Mouse #####
+##### Disable mouse on hover focus
+focus_follows_mouse no
+##### Define mouse floating window size and move modifier
+floating_modifier $mod
+floating_minimum_size 200 x 200
+#######################
+
+##### Keys Bindings #####
+##### Volume
+bindsym XF86AudioRaiseVolume exec amixer -D pulse sset Master 5%+
+bindsym XF86AudioLowerVolume exec amixer -D pulse sset Master 5%-
+bindsym XF86AudioMute exec amixer -D pulse sset Master toggle
+##### Scratchpad
+bindsym $mod+asterisk scratchpad show
+bindsym $mod+Shift+asterisk move scratchpad
+##### Define brightness control
+bindcode 233 exec xbacklight -inc 5
+bindcode 232 exec xbacklight -dec 5
+##### Move workspace to next output
+bindsym $mod+ugrave move workspace to output right
+##### Define screenshot key
+bindsym Print exec scrot ~/Pictures/screenshots/%Y-%m-%d_%H:%M:%S.png && exec ffplay -nodisp -autoexit $shutter_sound
+bindsym $mod+Print exec scrot -e "ffplay -nodisp -autoexit $shutter_sound && gimp \$f" ~/Pictures/screenshots/%Y-%m-%d_%H:%M:%S.png
+##### Start terminal
+bindsym $mod+Shift+Return exec xterm
+##### Kill a window
+bindsym $mod+Shift+a kill
+##### Start dmenu
+bindsym $mod+d exec dmenu_run -b -i -sb "#CC0000" -nb "#4A4A4A" -fn "Deja Vu Sans Mono-14:bold"
+##### Configure password manager
+bindsym $mod+Shift+d exec pp
+##### Change focus
+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+$LEFT move left
+bindsym $mod+Shift+$DOWN move down
+bindsym $mod+Shift+$UP move up
+bindsym $mod+Shift+$RIGHT move right
+##### Layout Splits
+bindsym $mod+h split h
+bindsym $mod+v split v
+##### Toggle fullscreen
+bindsym $mod+f fullscreen toggle
+##### Change container layout (either stacked, tabbed or splitv/splith)
+bindsym $mod+s layout stacking
+bindsym $mod+z layout tabbed
+bindsym $mod+t 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 container
+bindsym $mod+q focus parent
+bindsym $mod+Shift+q focus child
+##### Workspace next and prev
+bindsym $mod+Right workspace next
+bindsym $mod+Left workspace prev
+##### Switch to workspace
+bindsym $mod+ampersand workspace $ws1
+bindsym $mod+eacute workspace $ws2
+bindsym $mod+quotedbl workspace $ws3
+bindsym $mod+apostrophe workspace $ws4
+bindsym $mod+parenleft workspace $ws5
+bindsym $mod+minus workspace $ws6
+bindsym $mod+egrave workspace $ws7
+bindsym $mod+underscore workspace $ws8
+bindsym $mod+ccedilla workspace $ws9
+bindsym $mod+agrave workspace $ws10
+bindsym $mod+exclam workspace $ws-tools
+##### Move focused container to workspace
+bindsym $mod+Shift+ampersand move container to workspace $ws1
+bindsym $mod+Shift+eacute move container to workspace $ws2
+bindsym $mod+Shift+quotedbl move container to workspace $ws3
+bindsym $mod+Shift+apostrophe move container to workspace $ws4
+bindsym $mod+Shift+5 move container to workspace $ws5
+bindsym $mod+Shift+minus move container to workspace $ws6
+bindsym $mod+Shift+egrave move container to workspace $ws7
+bindsym $mod+Shift+underscore move container to workspace $ws8
+bindsym $mod+Shift+ccedilla move container to workspace $ws9
+bindsym $mod+Shift+agrave move container to workspace $ws10
+bindsym $mod+Shift+exclam move container to workspace $ws-tools
+# Read 1 character and mark the current window with this character
+bindsym $mod+shift+w exec i3-input -F 'mark %s' -l 1 -P 'Mark: '
+##### Reload configuration file
+bindsym $mod+Shift+c reload
+##### Restart i3 inplace
+bindsym $mod+Shift+r restart
+##### Exit i3
+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
+mode "resize" {
+ # Pressing left will shrink the window’s width.
+ bindsym $LEFT resize shrink width 10 px or 10 ppt
+ # Pressing down will grow the window’s height.
+ bindsym $UP resize grow height 10 px or 10 ppt
+ # Pressing up will shrink the window’s height.
+ bindsym $DOWN resize shrink height 10 px or 10 ppt
+ # Pressing right will grow the window’s width.
+ bindsym $RIGHT resize grow width 10 px or 10 ppt
+
+ # Back to normal
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+ bindsym q mode "default"
+}
+bindsym $mod+r mode "resize"
+##### Cmus control
+mode "cmus" {
+ # Toggle pause
+ bindsym c exec cmus-remote -u
+ # Next
+ bindsym b exec cmus-remote -n
+ # Previous
+ bindsym z exec cmus-remote -r
+ #Shuffle
+ bindsym s exec cmus-rand integrated
+ # Vol up
+ bindsym Shift + plus exec cmus-remote -v +5%
+ bindsym KP_Add exec cmus-remote -v +5%
+ # Vol down
+ bindsym minus exec cmus-remote -v -5%
+ bindsym KP_Subtract exec cmus-remote -v -5%
+ # Quit
+ bindsym x exec cmus-remote -C quit; mode "default"
+ # Back to normal
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+ bindsym q mode "default"
+}
+bindsym $mod c mode "cmus"
+##### App launcher keys
+mode "launcher" {
+ # Lancer terminal
+ bindsym t exec tmux_run; mode "default"
+ # Define lock control
+ bindsym F3 exec i3lock -f -i ~/.dotfiles-deps/i3/lock.png; mode "default"
+ # Open wicd
+ bindsym w exec xterm -e nmtui; mode "default"
+ # Open pavucontrol
+ bindsym p exec i3-pavucontrol; mode "default"
+ # Start weechat
+ bindsym Shift + w exec xterm -e weechat || notify-send -t 2000 "Weechat already launched"; mode "default"
+ # Open mc
+ bindsym m exec xterm -e mc; mode "default"
+ # Join cmus
+ bindsym c exec xterm -e cmus; mode "default"
+ # Start deluge
+ bindsym d exec xterm -e deluge-console ; mode "default"
+ # Open orgfiles
+ bindsym o exec org-session ; mode "default"
+ # Enable double screen
+ bindsym F1 exec ~/.config/i3/inria.sh; mode "default"
+ # Disable double screen
+ bindsym F2 exec ~/.config/i3/noinria.sh; mode "default"
+ bindsym F4 exec xrandr --output DP1-2 --same-as eDP1 ; mode "default"
+ # Back to normal
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+ bindsym q mode "default"
+}
+bindsym $mod+o mode "launcher"
+##### Quick window switching (maybe using i3-input will be more generic)
+bindsym $jump+m workspace $ws-mutt
+bindsym $jump+w workspace $ws-weechat
+bindsym $jump+n workspace $ws-newsboat
+bindsym $jump+r workspace $ws-R
+bindsym $jump+s workspace $ws-signal
+bindsym $jump+c workspace $ws-cmus
+bindsym $jump+f workspace $ws-firefox
+bindsym $jump+agrave workspace $ws-org
+#########################
+
+##### Startup #####
+##### Startup tools
+exec --no-startup-id xmodmap ~/.Xmodmap
+exec --no-startup-id xterm -T Mutt -e mutt
+exec --no-startup-id xterm -xrm "xterm*allowTitleOps: false" -T Weechat -e weechat # We should prevent Weechat to change xterm window title (with -xm ...)
+exec --no-startup-id xterm -xrm "xterm*allowTitleOps: false" -T Cmus -e cmus
+exec --no-startup-id pulseeffects
+exec --no-startup-id signal-desktop-disable-gpu
+exec --no-startup-id xterm -T "R Session" -e R
+exec --no-startup-id xterm -T "Newsboat" -e newsboat
+##### Startup applications
+exec --no-startup-id firefox
+exec --no-startup-id org-session
+exec --no-startup-id /usr/bin/emacs --daemon
+exec --no-startup-id xcompmgr
+exec --no-startup-id xrdb ~/.Xdefaults
+exec --no-startup-id clipit
+exec --no-startup-id redshift -l 48.1265:-1.6499 -t 5500:3600 -g 0.8 -m vidmode -v
+exec --no-startup-id dunst -conf ~/.dunstrc
+exec_always feh --bg-scale ~/.config/i3/background.jpg
+###################
+
+##### Workspaces Assignments #####
+##### Assign apps to workspace
+assign [class="^firefox$"] $ws-firefox
+assign [class="^Eclipse$"] $ws2
+assign [title="org-session"] $ws-org
+##### Assign tools workspaces
+assign [class="^Signal$"] $ws-signal
+assign [title="Mutt"] $ws-mutt
+assign [title="Weechat"] $ws-weechat
+assign [title="R Session"] $ws-R
+assign [title="Newsboat"] $ws-newsboat
+assign [class="Pulseeffects"] $ws-cmus
+assign [title="Cmus"] $ws-cmus
+##################################
+
+##### Configure Windows #####
+for_window [class="feh"] floating enable
+for_window [class="Geeqie"] floating enable, resize set 1700 900, move position center
+for_window [class="MPlayer"] floating enable
+for_window [title="^Tmux$"] floating enable, resize set 1700 900, move position center
+for_window [class="^Pavucontrol$"] floating enable, resize set 1700 900, move position center
+#############################
+
+##### Configure Outputs #####
+workspace $ws1 output eDP1 # Compilation
+workspace $ws2 output DP1-2 # Eclipse
+workspace $ws3 output DP1-2
+workspace $ws4 output DP1-2
+workspace $ws5 output DP1-2
+workspace $ws6 output DP1-2
+workspace $ws7 output DP1-2
+workspace $ws8 output DP1-2
+workspace $ws9 output DP1-1 # Web browser
+workspace $ws10 output DP1-2 # org-session signal
+#############################
+
+##### Theme #####
+bar {
+ #mode hide
+ position top
+ font pango:DejaVu Sans Mono 14
+ status_command i3status -c ~/.config/i3/i3status.conf
+separator_symbol "|"
+ colors {
+ separator #AAAAAA
+ background #1f2326
+ statusline #FFFFFF
+ focused_workspace #9FCA56 #9FCA56 #151718
+ active_workspace #DCCD69 #DCCD69 #151718
+ inactive_workspace #1f2326 #1f2326 #AAAAAA
+ urgent_workspace #CE4045 #CE4045 #FFFFFF
+ }
+}
+#################
+client.focused #4F99D3 #4F99D3 #151718 #9FCA56 #4F99D3
+client.focused_inactive #9FCA56 #9FCA56 #151718 #A074C4 #9FCA56
+client.unfocused #1f2326 #1f2326 #AAAAAA #A074C4 #1f2326
+client.urgent #CE4045 #CE4045 #FFFFFF #DCCD69 #CE4045
+
diff --git a/tests/test-apply-with-vars.sh b/tests/test-apply-with-vars.sh
new file mode 100644
index 0000000..9aa59c7
--- /dev/null
+++ b/tests/test-apply-with-vars.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+wai=$(dirname $(readlink -f $0))
+source "${wai}/include.sh"
+
+##### Test apply on theme with variables
+$exec apply -d ${data}/seti
diff --git a/tests/test-simple-extract.out b/tests/test-extract.out
index 04aa616..04aa616 100644
--- a/tests/test-simple-extract.out
+++ b/tests/test-extract.out
diff --git a/tests/test-simple-extract.sh b/tests/test-extract.sh
index 61e2844..61e2844 100644
--- a/tests/test-simple-extract.sh
+++ b/tests/test-extract.sh