diff --git a/dockerfiles/devenv.Dockerfile b/dockerfiles/devenv.Dockerfile
index 38944e712bd87013a2e4532516ee440166d30109..ce0bfa292cc650923762cbe597c19e5730afbe4b 100644
--- a/dockerfiles/devenv.Dockerfile
+++ b/dockerfiles/devenv.Dockerfile
@@ -1,8 +1,8 @@
 ARG ROS_DISTRO
 FROM osrf/ros:${ROS_DISTRO}-desktop-full
 
-ARG SHELL
-RUN echo "Building devenv for ROS" $ROS_DISTRO "with shell" $SHELL
+ARG EXT_SHELL
+RUN echo "Building devenv for ROS" $ROS_DISTRO "with shell" $EXT_SHELL
 
 # Avoid warnings by switching to noninteractive
 ENV DEBIAN_FRONTEND=noninteractive
@@ -46,9 +46,10 @@ RUN apt-get update && \
     openssh-client \
     trash-cli \
     valgrind \
-    wget
+    wget \
+    xterm
 
-RUN if [ "$SHELL" = "zsh" ]; \
+RUN if [ "$EXT_SHELL" = "zsh" ]; \
     then \
         apt-get -y install zsh; \
     fi
@@ -129,6 +130,9 @@ RUN if [ "${ROS_DISTRO}" != "humble"  ]; \
         ros-${ROS_DISTRO}-rosmon \
         ros-${ROS_DISTRO}-rqt-controller-manager \
         ros-${ROS_DISTRO}-rqt-joint-trajectory-controller; \
+    else \
+        apt-get update && \
+        apt-get -y install python3-colcon-common-extensions; \
     fi
 
 # Copy the requirements.txt file into the container
@@ -146,7 +150,7 @@ RUN if [ -f "${ROS_DISTRO}_requirements.txt" ]; \
 RUN rm -rf *
 
 # Update this date to re-run the image final update
-LABEL image.date=17-10-2023
+LABEL image.date=23-10-2023
 
 # Update final image
 RUN apt-get update \
@@ -159,13 +163,15 @@ COPY ./ros_entrypoint.sh /
 RUN chmod a+x /ros_entrypoint.sh
 
 ENV ROS_DISTRO "${ROS_DISTRO}"
-ENV SHELL "${SHELL}"
-ENV RUNNING_IN_DOCKER true
 
-# SHELL ["/bin/${SHELL}"]
+ENV EXT_SHELL "${EXT_SHELL}"
+ENV RUNNING_IN_DOCKER true
 
 # Switch back to dialog for any ad-hoc use of apt-get
 ENV DEBIAN_FRONTEND=
 
+ARG SHELL
+ENV SHELL "${SHELL}"
+
 ENTRYPOINT ["/ros_entrypoint.sh"]
-CMD /usr/bin/$SHELL
\ No newline at end of file
+CMD $EXT_SHELL
\ No newline at end of file
diff --git a/dotfiles/.zshrc b/dotfiles/.zshrc
index 6e15f0e2afe4d9c5c444fb1d52db115fcb6723a1..1ed2268200d19b916605245c2a321d2d1c70c155 100644
--- a/dotfiles/.zshrc
+++ b/dotfiles/.zshrc
@@ -1,14 +1,8 @@
-# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
-# Initialization code that may require console input (password prompts, [y/n]
-# confirmations, etc.) must go above this block; everything else may go below.
-if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
-  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
-fi
-
 #zmodload zsh/zprof
 
 # If you come from bash you might have to change your $PATH.
-# export PATH=$HOME/bin:/usr/local/bin:$PATH
+export PATH=$HOME/apps:$PATH
+export PATH=$HOME/apps/xela_server:$PATH
 
 # Path to your oh-my-zsh installation.
 export ZSH=~/.oh-my-zsh
@@ -19,7 +13,7 @@ COMPLETION_WAITING_DOTS="true"
 source "$HOME/.homesick/repos/homeshick/homeshick.sh"
 fpath=($HOME/.homesick/repos/homeshick/completions $fpath)
 
-source ~/antigen.zsh
+source ~/apps/antigen.zsh
 antigen use oh-my-zsh
 
 antigen theme romkatv/powerlevel10k
@@ -40,24 +34,21 @@ antigen bundle zsh-users/zsh-autosuggestions
 
 antigen apply
 
-#ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=0'
+ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=0'
 
+# *********************
 # command-line fuzzy finder
+# *********************
 [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
 
-source $HOME/.init_shell
-
-if [ -f ~/.bash_aliases ]; then
-    . ~/.bash_aliases
-fi
-
-#zprof
-
 export FZF_DEFAULT_COMMAND='rg --files --hidden --follow --no-ignore-vcs'
 export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
-#export FZF_ALT_C_COMMAND="fd -t d --hidden --follow --exclude \".git\" . $HOME"
 export FZF_ALT_C_COMMAND="fd -t d --hidden --follow --exclude \".git\" ."
 
+# *********************
+# zsh cache compdump
+# *********************
+
 # Create a cache folder if it isn't exists
 if [ ! -d "$HOME/.cache/zsh" ]; then
     mkdir -p $HOME/.cache/zsh
@@ -66,21 +57,26 @@ fi
 # Define a custom file for compdump
 export ZSH_COMPDUMP="$HOME/.cache/zsh/zcompdump-$HOST-$ZSH_VERSION"
 
+# *********************
 # User configuration
+# *********************
 
+# Use code as default editor
 export EDITOR="code -r"
 
+source $HOME/.init_shell
+
 # Include dotfiles
-source ${HOME}/srcs/development_environment/dotfiles/git.bash
-source ${HOME}/srcs/development_environment/dotfiles/docker.bash
-source ${HOME}/srcs/development_environment/dotfiles/ros.bash
-source ${HOME}/srcs/development_environment/dotfiles/system.bash
+source "$HOME/.homesick/repos/dotfiles/home/system.sh"
+source "$HOME/.homesick/repos/dotfiles/home/git.sh"
+source "$HOME/.homesick/repos/dotfiles/home/docker.sh"
+source "$HOME/.homesick/repos/dotfiles/home/ros.sh"
 
-# To add direnv app
-# eval "$(direnv hook zsh)"
+if [ -f ~/.bash_aliases ]; then
+    . ~/.bash_aliases
+fi
 
 # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
 [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
 
-# Finalize Powerlevel10k instant prompt. Should stay at the bottom of ~/.zshrc.
-(( ! ${+functions[p10k-instant-prompt-finalize]} )) || p10k-instant-prompt-finalize
+#zprof
diff --git a/dotfiles/docker.sh b/dotfiles/docker.sh
index 29feba47877c6ea5ebd51c485ab96e00f63c28a8..a3746083b598d942f8392e3a026df1bdd191b5c1 100644
--- a/dotfiles/docker.sh
+++ b/dotfiles/docker.sh
@@ -15,21 +15,21 @@ function dockbuild(){
     if [ $# -lt 1 ]; then
         echo "Usage: dockbuild <ROS_DISTRO> [build_args]"
         echo "build_args:"
-        echo "      SHELL - zsh (default) or bash"
+        echo "      EXT_SHELL - zsh (default) or bash"
         return 1
     fi
 
 	cd $dockerfiles_DIR;
 
     if [ $# -lt 2 ]; then
-        echo "Building ROS_DISTRO:"$1 "with SHELL_VERISON: zsh"
-        docker build -t devenv:$1 --build-arg ROS_DISTRO=$1 --build-arg SHELL="zsh" -f devenv.Dockerfile .
+        echo "Building ROS_DISTRO:"$1 "with SHELL_VERSION: zsh"
+        docker build -t devenv:$1 --build-arg ROS_DISTRO=$1 --build-arg EXT_SHELL="zsh" --build-arg SHELL="/usr/bin/zsh" -f devenv.Dockerfile .
     else
         if [ $2 = "bash" ]; then
-            echo "Building ROS_DISTRO:"$1 "with SHELL_VERISON:"$2
-            docker build -t devenv:$1 --build-arg ROS_DISTRO=$1 --build-arg SHELL=$2 -f devenv.Dockerfile .
+            echo "Building ROS_DISTRO:"$1 "with SHELL_VERSION:"$2
+            docker build -t devenv:$1 --build-arg ROS_DISTRO=$1 --build-arg EXT_SHELL="bash" --build-arg SHELL="/bin/bash" -f devenv.Dockerfile .
         else
-            echo "SHELL_VERISON:"$2 "not supported"
+            echo "SHELL_VERSION:"$2 "not supported"
         fi
     fi
 }
diff --git a/dotfiles/ros.sh b/dotfiles/ros.sh
index 6e28ad5ae79b197e76eef5c76ecd646344987980..1d14d6a63878469e5edbb4d31bde757ae51a20be 100644
--- a/dotfiles/ros.sh
+++ b/dotfiles/ros.sh
@@ -15,7 +15,15 @@ if [[ -z "${ROS_DISTRO}" ]]; then
 fi
 
 # Determine shell extension
-if [ -z $SHELL ]; then echo "SHELL not set"; else ext=$(basename ${SHELL}); fi
+if [ ! -z $EXT_SHELL ]; then
+    if [ -z $SHELL ]; then
+        echo "SHELL not set"
+        export SHELL=/usr/bin/zsh
+        ext=$(basename ${SHELL});
+    else
+        ext=$(basename ${SHELL});
+    fi
+fi
 
 # Source rosmon
 function smon(){
@@ -26,13 +34,23 @@ function smon(){
 
 # cd to the root of the workspace
 function roshome(){
-    roscd && cd ..
-    ROS_HOME=${PWD}
+    if command -v roscd &> /dev/null
+    then
+        roscd && cd ..
+        ROS_HOME=${PWD}
+    else
+        echo "command ** roscd ** not found"
+    fi
 }
 
 # Source the current workspace
 function sourcews(){
-    source ./devel/setup.${ext} && smon
+    if [ "${ROS_VERSION}" = 1 ]
+    then
+        source ./devel/setup.${ext} && smon
+    else
+        source ./install/setup.${ext}
+    fi
 }
 
 # Source the current workspace
@@ -51,16 +69,27 @@ function sourcethis(){
 
 # Automatic catkin build
 function cb() {
-    pwd_cb=${PWD}
-    roshome
-    catkin build --summarize --cmake-args -DCMAKE_BUILD_TYPE=Release -- "$@"
-    sourcethis
-    cd ${pwd_cb}
+    if [ "${ROS_VERSION}" = 1 ]
+    then
+        pwd_cb=${PWD}
+        roshome
+        catkin build --summarize --cmake-args -DCMAKE_BUILD_TYPE=Release -- "$@"
+        sourcethis
+        cd ${pwd_cb}
+    else
+        colcon build --parallel-workers 6 "$@"
+        source ./install/setup.zsh
+    fi
 }
 
 # Clean workspace (delete the generated folders, then catkin build)
 function cbclean(){
-    roshome && rm -rf build devel install && catkin build --summarize --cmake-args -DCMAKE_BUILD_TYPE=Release
+    if [ "${ROS_VERSION}" = 1 ]
+    then
+        roshome && rm -rf build devel install && catkin build --summarize --cmake-args -DCMAKE_BUILD_TYPE=Release
+    else
+        rm -rf build devel install && cb
+    fi
 }
 
 # Initialize catkin workspace, configure and build it
@@ -99,4 +128,4 @@ else
     fi
 fi
 
-alias sc=sourcethis
\ No newline at end of file
+#alias sc=sourcethis
\ No newline at end of file
diff --git a/dotfiles/system.sh b/dotfiles/system.sh
index 6c1bd5be1b3892171e4f812dbb7593abf7ea1751..9f15e630ad285ca69260f49174635655bad90af0 100644
--- a/dotfiles/system.sh
+++ b/dotfiles/system.sh
@@ -1,4 +1,25 @@
+# Override globalalias config
+# space expands all aliases, including global
+bindkey -M emacs "^ " globalias
+bindkey -M viins "^ " globalias
 
+# control-space to make a normal space
+bindkey -M emacs " " magic-space
+bindkey -M viins " " magic-space
+
+# normal space during searches
+bindkey -M isearch " " magic-space
+
+# Determine shell extension
+if [ -z $SHELL ]; then
+    echo "SHELL not set"
+    export SHELL=/usr/bin/zsh
+    ext=$(basename ${SHELL});
+else
+    ext=$(basename ${SHELL});
+fi
+
+# lsd
 if command -v lsd &> /dev/null
 then
     # Directories
@@ -15,6 +36,7 @@ else
     alias ls='ls'
 fi
 
+# bat ==> cat
 if command -v bat &> /dev/null
 then
     # Files
@@ -27,4 +49,5 @@ then
     alias ipy='ipython'
 fi
 
-alias mountT='sudo mount -t cifs //tri.lan/tri /mnt/T --verbose -o username=110343,password=Bageera\#1983,workgroup=TRI.LAN'
+# Tecnalia T
+alias mountT='sudo mount -t cifs //tri.lan/tri /mnt/T --verbose -o username=110343,password=Iris\#1983,workgroup=TRI.LAN'