Skip to content
Snippets Groups Projects
Commit c97b7833 authored by Montaño Sarria, Andres Felipe's avatar Montaño Sarria, Andres Felipe
Browse files

Added desktop comfigs and neurondones dockerfiles

parent 34f17430
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env bash
# Autor: Thiago Silva
# Contact: thiagos.dasilva@gmail.com
# URL: https://github.com/thiggy01/change-gdm-background
# =================================================================== #
# Check if script is run by root.
if [ "$(id -u)" -ne 0 ] ; then
echo 'This script must be run as root or with the sudo command.'
exit 1
fi
# Check what linux distro is being used.
distro="$(lsb_release -c | cut -f 2)"
if ! [[ "$distro" =~ (focal|groovy|hirsute) ]]; then
echo 'Sorry, this script only works with focal, groovy or hirsute distros.'
exit 1
fi
# Check if glib 2.0 development libraries are installed.
if [ ! -x "$(command -v glib-compile-resources)" ]; then
echo 'Additional glib 2.0 libraries need to be installed.'
read -p 'Type y or Y to proceed. Any other key to exit: ' -n 1
if [[ "$REPLY" =~ ^[yY]$ ]]; then
apt install libglib2.0-dev-bin
else
echo "This tool can't run without required libraries"
echo "Exiting."
echo
exit 1
fi
fi
# Assign the default gdm theme file path.
if [ "$(lsb_release -i | awk '{print $3}')" == 'Ubuntu' ]; then
gdm3Resource=/usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource
elif [ "$(lsb_release -i | awk '{print $3}')" == 'Pop' ]; then
gdm3Resource=/usr/share/gnome-shell/theme/Pop/gnome-shell-theme.gresource
fi
# Create a backup file of the original theme if there isn't one.
[ ! -f "$gdm3Resource"~ ] && cp "$gdm3Resource" "$gdm3Resource~"
# Restore backup function.
restore () {
mv "$gdm3Resource~" "$gdm3Resource"
if [ "$?" -eq 0 ]; then
chmod 644 "$gdm3Resource"
echo 'GDM background sucessfully restored.'
read -p 'Do you want to restart gdm to apply change? (y/n):' -n 1
echo
if [[ "$REPLY" =~ ^[yY]$ ]]; then
service gdm restart
else
echo 'Restart GDM service to apply change.'
exit 0
fi
fi
}
# Restore the original gdm3 theme.
[ "$1" == "--restore" ] && restore
#Define main variables.
gdm3xml=$(basename "$gdm3Resource").xml
workDir="/tmp/gdm3-theme"
# Create directories from resource list.
CreateDirs() {
for resource in `gresource list "$gdm3Resource~"`; do
resource="${resource#\/org\/gnome\/shell\/}"
if [ ! -d "$workDir"/"${resource%/*}" ]; then
mkdir -p "$workDir"/"${resource%/*}"
fi
done
}
# Extract resources from binary file.
ExtractRes() {
for resource in `gresource list "$gdm3Resource~"`; do
gresource extract "$gdm3Resource~" "$resource" > \
"$workDir"/"${resource#\/org\/gnome\/shell\/}"
done
}
# Compile resources into a gresource binary file.
CompileRes() {
glib-compile-resources --sourcedir=$workDir/theme/ $workDir/theme/"$gdm3xml"
}
# Moves the newly created resource to its default place.
MoveRes() {
mv $workDir/theme/gnome-shell-theme.gresource $gdm3Resource
}
# Check if gresource was sucessfuly moved to its default folder.
Check() {
if [ "$?" -eq 0 ]; then
# Solve a permission change issue (thanks to @huepf from github).
chmod 644 "$gdm3Resource"
echo 'GDM background sucessfully changed.'
read -p 'Do you want to restart gdm to apply change? (y/n):' -n 1
echo
# If change was successful apply ask for gdm restart.
if [[ "$REPLY" =~ ^[yY]$ ]]; then
service gdm restart
else
echo "Change will be applied only after restarting gdm"
echo
fi
else
# If something went wrong, restore backup file.
echo 'something went wrong.'
restore
echo 'No changes were applied.'
fi
}
CleanUp() {
# Remove temporary directories and files.
rm -r "$workDir"
exit 0
}
# Test if argument is an image file.
if [[ $(file --mime-type -b "$1") == image/*g ]]; then
# Define image variables.
gdmBgImg=$(realpath "$1")
imgFile=$(basename "$gdmBgImg")
# Call procedures to create directories and extract resources to them.
CreateDirs
ExtractRes
# Copy selected image to the resources directory.
cp "$gdmBgImg" "$workDir"/theme
# Change gdm background to the image you submited.
oldBg="#lockDialogGroup \{.*?\}"
newBg="#lockDialogGroup {
background: url('resource:\/\/\/org\/gnome\/shell\/theme\/$imgFile');
background-size: cover; }"
perl -i -0777 -pe "s/$oldBg/$newBg/s" "$workDir"/theme/gdm3.css
# Generate gresource xml file.
echo '<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell/theme">' > "$workDir"/theme/"$gdm3xml"
for file in `gresource list "$gdm3Resource~"`; do
echo " <file>${file#\/org\/gnome/shell\/theme\/}</file>" \
>> "$workDir"/theme/"$gdm3xml"
done
echo " <file>$imgFile</file>" >> "$workDir"/theme/"$gdm3xml"
echo ' </gresource>
</gresources>' >> "$workDir"/theme/"$gdm3xml"
# Compile the new gresource.
CompileRes
# Move gresource to the default place.
MoveRes
# Check if everything was successful.
Check
# Remove temporary files and exit.
CleanUp
# Change background colors.
elif [[ "$1" =~ ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$ ]]; then
# Store selected background color.
BgColor="$1"
CreateDirs
ExtractRes
# Change gdm background to the color you submited.
oldBg="#lockDialogGroup \{.*?\}"
newBg="#lockDialogGroup {
background: $BgColor;
background-size: cover; }"
perl -i -0777 -pe "s/$oldBg/$newBg/s" "$workDir"/theme/gdm3.css
# Generate the gresource xml file.
echo '<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell/theme">' > "$workDir"/theme/"$gdm3xml"
for file in `gresource list "$gdm3Resource~"`; do
echo " <file>${file#\/org\/gnome/shell\/theme\/}</file>" \
>> "$workDir"/theme/"$gdm3xml"
done
echo ' </gresource>
</gresources>' >> "$workDir"/theme/"$gdm3xml"
# Compile the new gresource.
CompileRes
# Move gresource to the default place.
MoveRes
# Remove temporary files and exit.
CleanUp
else
# If no file was submited or file submited isn't an image,
# show this message.
echo 'Image file not found or wrong color hex code.'
echo 'Please, submit a .jpg or .png image file or a valid hex code.'
echo 'Usage: sudo ./ubuntu-20.04-change-gdm-background /path/to/image.*g'
echo 'Usage: sudo ./ubuntu-20.04-change-gdm-background \#yourhexcode'
fi
File added
File added
File added
File added
checkingplaneitor
git@git.code.tecnalia.com:unai.antero/checkingplaneitor.git
gdm-tools
https://github.com/realmazharhussain/gdm-tools.git
pdfmixtool
git@gitlab.com:scarpetta/pdfmixtool.git
plymouth-theme
https://github.com/pop-os/plymouth-theme.git
pop-fonts
https://github.com/pop-os/fonts.git
pop-theme
https://github.com/pop-os/gtk-theme
vortex-ubuntu-plymouth-theme
https://github.com/emanuele-scarsella/vortex-ubuntu-plymouth-theme.git
disk-usage-space
https://github.com/anfemosa/disk-usage-space.git
roscon_2015
https://github.com/ros-industrial-consortium/roscon_2015.git
roscon_workshop_2021
https://github.com/ros-industrial-consortium/roscon_workshop_2021
ros_tutorial
https://github.com/anfemosa/ros_tutorial.git
bat
https://github.com/sharkdp/bat.git
iscan-bundle
https://support.epson.net/linux/en/iscan_c.php?version=2.30.4
lsd
https://github.com/Peltoche/lsd.git
powerlevel10k
https://github.com/mattmc3/antidote
https://phuctm97.com/blog/zsh-antigen-ohmyzsh
https://github.com/romkatv/powerlevel10k
https://github.com/zsh-users
https://github.com/mattmc3/zdotdir
Antidote
git clone --depth=1 https://github.com/mattmc3/antidote.git ${ZDOTDIR:-~}/.antidote
zsh-you-shuould-use
https://github.com/MichaelAquilina/zsh-you-should-use.git
git@git.code.tecnalia.com:miguel.prada/rosem.git
git@git.code.tecnalia.com:miguel.prada/gitlab_templates.git
# ROS Development Environment
Docker file to generate docker images for neurondones project.
## Prerequisites
### Rocker
[**rocker**](https://github.com/osrf/rocker) is a tool to run docker images with customized local support injected for things like nvidia video cards support.
#### rocker installation
```bash
sudo apt-get install python3-rocker
```
#### OYR (off-your-rocker) pluging for rocker
[**OYR**](https://github.com/sloretz/off-your-rocker) is a plugin for rocker that allows to run docker images with extra parameteers and configurations.
In this project OYR is used to launch a docker container with a named volume, not supported by rocker.
```bash
pip3 install git+https://github.com/sloretz/off-your-rocker.git
```
## Build image
```bash
docker build -t neurondones:noetic --build-arg ROS_DISTRO=noetic -f neurondones.Dockerfile .
```
## Launch container
```bash
rocker --home --ssh --git --user --privileged --nvidia --volume /dev:/dev --x11 --network host --name neurondones neurondones:noetic bash
```
# Lits of the particular libs to install in noetic docker image
#libk4a1.4_1.4.1_amd64.deb
https://packages.microsoft.com/ubuntu/18.04/prod/pool/main/libk/libk4a1.4/libk4a1.4_1.4.1_amd64.deb
#libk4a1.4-dev_1.4.1_amd64.deb
https://packages.microsoft.com/ubuntu/18.04/prod/pool/main/libk/libk4a1.4-dev/libk4a1.4-dev_1.4.1_amd64.deb
#k4a-tools_1.4.1_amd64.deb
https://packages.microsoft.com/ubuntu/18.04/prod/pool/main/k/k4a-tools/k4a-tools_1.4.1_amd64.deb
ARG ROS_DISTRO
FROM osrf/ros:${ROS_DISTRO}-desktop-full
# Avoid warnings by switching to noninteractive
ENV DEBIAN_FRONTEND=noninteractive
# Import the key in order to be able to use the packages from the repository
# RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 7E72C5B4111A50084C63C9489E7A9B1D990CF897
# NOV - 2023
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
# Setup environment
RUN apt-get update && apt-get install -y apt-utils
RUN apt-get install -y \
locales \
&& sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
# Configure apt and install ubuntu-base packages
RUN apt-get update && \
apt-get -y install --no-install-recommends \
apt-transport-https \
ca-certificates \
curl \
dbus-x11 \
gnupg-agent \
software-properties-common \
dialog 2>&1 \
checkinstall \
# clang
clang-format clang-tidy clang-tools clang \
libc++-dev libc++1 libc++abi-dev \
libc++abi1 libclang-dev libclang1 \
libomp-dev libomp5 lld lldb \
llvm-dev llvm-runtime llvm \
# ccmake
cmake-curses-gui \
direnv \
gawk \
gdb \
git \
git-lfs \
less \
nano \
net-tools \
openssh-client \
trash-cli \
valgrind \
wget \
xterm
# Install pip3 and packages
RUN apt-get install -y \
python3-pip \
&& pip3 install sqlite_utils \
&& pip3 install transforms3d
# Install conan for Kortex driver
RUN if [ "$ROS_DISTRO" = "noetic" ]; \
then \
pip3 install conan==1.59 \
&& conan config set general.revisions_enabled=1 \
&& conan profile new default --detect > /dev/null \
&& conan profile update settings.compiler=gcc default; \
fi
# Copy the requirements.txt file into the container
WORKDIR /tmp/dependencies/
COPY /ws_dependencies/* ./
# Install the packages listed in ${ROS_DISTRO}_requirements.txt
RUN if [ -f "${ROS_DISTRO}_requirements.txt" ]; \
then \
apt-get update && \
awk '/^# APT-GET PACKAGES/,/^# PIP PACKAGES/' ${ROS_DISTRO}_requirements.txt | grep -v '^#' | xargs apt-get install -y && \
apt-get clean; \
fi
# Install pip packages
RUN if [ -f "${ROS_DISTRO}_requirements.txt" ]; \
then \
awk '/^# PIP PACKAGES/,0' ${ROS_DISTRO}_requirements.txt | grep -v '^#' | xargs -r -n1 pip install ;\
fi
RUN rm -rf *
# Install extra libs from .deb files
WORKDIR /tmp/srcs/
COPY /extra_libs/* ./
# Workaround for Azure Kinect
RUN if [ "$ROS_DISTRO" = "noetic" ]; \
then \
echo 'libk4a1.4 libk4a1.4/accepted-eula-hash string 0f5d5c5de396e4fee4c0753a21fee0c1ed726cf0316204edda484f08cb266d76' | debconf-set-selections \
&& echo 'libk4abt1.0 libk4abt1.0/accepted-eula-hash string 03a13b63730639eeb6626d24fd45cf25131ee8e8e0df3f1b63f552269b176e38' | debconf-set-selections \
&& wget https://raw.githubusercontent.com/microsoft/Azure-Kinect-Sensor-SDK/develop/scripts/99-k4a.rules \
&& mkdir -p udev/rules.d \
&& mv 99-k4a.rules udev/rules.d/ \
&& cp --parents udev/rules.d/99-k4a.rules /etc; \
fi
# Extra libs, e.g. vtk-7.1_20221201-1_amd64.deb
RUN if [ -f "${ROS_DISTRO}_libs.txt" ]; \
then \
grep -v '^#' ${ROS_DISTRO}_libs.txt | xargs wget \
&& dpkg -i *.deb;\
fi
RUN rm -rf *
# Update this date to re-run the image final update
LABEL image.date=09-01-2024
# Set entrypoint
COPY ./ros_entrypoint.sh /
RUN chmod a+x /ros_entrypoint.sh
ENV ROS_DISTRO "${ROS_DISTRO}"
ENV RUNNING_IN_DOCKER true
# Switch back to dialog for any ad-hoc use of apt-get
ENV DEBIAN_FRONTEND=
ENTRYPOINT ["/ros_entrypoint.sh"]
\ No newline at end of file
#!/bin/bash
# Setup ros environment
source "/opt/ros/$ROS_DISTRO/setup.bash"
exec "$@"
\ No newline at end of file
# APT-GET PACKAGES
# Base
python3-catkin-tools
ipython3
python-is-python3
python3-click
python3-numpy
python3-osrf-pycommon
python3-vcstool
python3-pip
clangd
liblldb-dev
libllvm-ocaml-dev
python3-clang
ros-noetic-catkin
ros-noetic-plotjuggler
ros-noetic-plotjuggler-ros
ros-noetic-rosmon
ros-noetic-rqt-controller-manager
ros-noetic-rqt-joint-trajectory-controller
ros-noetic-code-coverage
# Neurondones
ros-noetic-libpcan
ros-noetic-moveit-ros-move-group
ros-noetic-moveit-fake-controller-manager
ros-noetic-moveit-kinematics
ros-noetic-moveit-planners-ompl
ros-noetic-moveit-ros-visualization
ros-noetic-moveit-setup-assistant
ros-noetic-ros-control
ros-noetic-ros-controllers
ros-noetic-moveit-ros-planning-interface
ros-noetic-moveit-commander
ros-noetic-moveit-planners
ros-noetic-moveit-simple-controller-manager
ros-noetic-moveit-ros-control-interface
ros-noetic-moveit-msgs
ros-noetic-ros-control-boilerplate
ros-noetic-joy
ros-noetic-spacenav-node
spacenavd
# -- vision
libgflags-dev
libsoundio1
ros-noetic-aruco-ros
# PIP PACKAGES
# EOF
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment