Skip to content

Instantly share code, notes, and snippets.

@mcarneiro
Last active June 10, 2021 18:00
Show Gist options
  • Save mcarneiro/fba0e7f68ada9cf48108 to your computer and use it in GitHub Desktop.
Save mcarneiro/fba0e7f68ada9cf48108 to your computer and use it in GitHub Desktop.
Programs I need to install when I get a new computer
#!/bin/bash
set -e
APT_INSTALL=()
[ "$(which git)" == "" ] && APT_INSTALL+=("git")
[ "$(which curl)" == "" ] && APT_INSTALL+=("curl")
[ "$(which vim)" == "" ] && APT_INSTALL+=("vim")
[ "$(which gpick)" == "" ] && APT_INSTALL+=("gpick")
[ "$(which screenruler)" == "" ] && APT_INSTALL+=("screenruler")
[ "$(which flameshot)" == "" ] && APT_INSTALL+=("flameshot")
[ "$(which ffmpeg)" == "" ] && APT_INSTALL+=("ffmpeg")
[ "$(which ifconfig)" == "" ] && APT_INSTALL+=("net-tools")
[ "$(which darktable)" == "" ] && APT_INSTALL+=("darktable")
[ "$(which okular)" == "" ] && APT_INSTALL+=("okular")
if [ ${#APT_INSTALL[*]} -gt 0 ]; then
echo "// UPDATE & APT-GET ${APT_INSTALL[*]}"
sudo apt-get update
sudo apt-get install -y ${APT_INSTALL[*]}
fi
if [ "$(which obs)" == "" ]; then
echo "// INSTALL OBS"
{
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt update
sudo apt install -y obs-studio
} || {
sudo apt --fix-broken install
}
fi
if [ "$(which code)" == "" ]; then
echo "// INSTALL VSCODE"
{
mkdir ~/setup-temp && \
cd ~/setup-temp && \
wget "https://go.microsoft.com/fwlink/?LinkID=760868" -O code.deb && sudo dpkg -i code.deb && \
cd ..
} || {
sudo apt --fix-broken install && rm -rf ~/setup-temp;
}
fi
if [ "$(which bitwarden)" == "" ]; then
echo "// INSTALL BITWARDEN"
{
mkdir ~/setup-temp && \
cd ~/setup-temp && \
wget "https://vault.bitwarden.com/download/?app=desktop&platform=linux&variant=deb" -O bitwarden.deb && \
sudo dpkg -i bitwarden.deb && \
sudo apt install -f && \
cd ..
} || {
sudo apt --fix-broken install && \
rm -rf ~/setup-temp
}
fi
if [ "$(which google-chrome)" == "" ]; then
echo "// INSTALL GOOGLE CHROME"
{
mkdir ~/setup-temp && \
cd ~/setup-temp && \
wget "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" -O chrome.deb && sudo dpkg -i chrome.deb && \
cd ..
} || {
sudo apt --fix-broken install && rm -rf ~/setup-temp;
}
fi
if [ "$(which docker)" == "" ]; then
echo "// INSTALL docker"
{
mkdir ~/setup-temp && \
cd ~/setup-temp && \
curl -fsSL https://get.docker.com -o get-docker.sh
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chod +x /usr/local/bin/docker-compose
sh get-docker.sh
cd ..
} || {
sudo apt --fix-broken install && rm -rf ~/setup-temp;
}
fi
if [ "$(which node)" == "" ]; then
echo "// INSTALL nodejs"
{
mkdir ~/setup-temp && \
cd ~/setup-temp && \
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
cd ..
} || {
sudo apt --fix-broken install && rm -rf ~/setup-temp;
}
fi
[ -d ~/setup-temp ] && rm -rf ~/setup-temp
if [ ! -d ~/Projects ]; then
echo "// CREATED Projects folder at ~/Projects"
mkdir -p ~/Projects
fi
if [ ! -d ~/.config/fontconfig/conf.d ]; then
echo "// INSTAL EMOJI FONTS //"
sudo apt-get install fonts-noto-color-emoji
echo " > Creating ~/config/fontconfig/ folder.";
mkdir -p ~/.config/fontconfig/conf.d
fi
if [ ! -f ~/.config/fontconfig/conf.d/99-emoji.conf ]; then
echo " - Creating ~/config/fontconfig/conf.d/99-emoji.conf file"
echo '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match>
<test name="family"><string>sans-serif</string></test>
<edit name="family" mode="append" binding="strong">
<string>Bitstream Vera Serif</string>
<string>Noto Color Emoji</string>
</edit>
</match>
<!-- Add emoji generic family -->
<alias binding="strong">
<family>emoji</family>
<default><family>Noto Color Emoji</family></default>
</alias>
<!-- Aliases for the other emoji fonts -->
<alias binding="strong">
<family>Apple Color Emoji</family>
<prefer><family>Noto Color Emoji</family></prefer>
</alias>
<alias binding="strong">
<family>Segoe UI Emoji</family>
<prefer><family>Noto Color Emoji</family></prefer>
</alias>
<alias binding="strong">
<family>Emoji One</family>
<prefer><family>Noto Color Emoji</family></prefer>
</alias>
</fontconfig>' > ~/.config/fontconfig/conf.d/99-emoji.conf
fc-cache -fv
fi
if [ ! -d ~/.bin ]; then
echo "// CREATED local bin folder"
mkdir ~/.bin
fi
if [ ! -f ~/.bin/move-to-next-monitor ]; then
echo "// Added move to next monitor and bound shortcuts"
curl https://raw.githubusercontent.com/jc00ke/move-to-next-monitor/master/move-to-next-monitor > ~/.bin/move-to-next-monitor
chmod +x ~/.bin/move-to-next-monitor
mv ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts{,-bkp}.xml
curl https://gist.githubusercontent.com/mcarneiro/fba0e7f68ada9cf48108/raw/xfce4-keyboard-shorcuts.xml > ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
fi
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfce4-keyboard-shortcuts" version="1.0">
<property name="commands" type="empty">
<property name="default" type="empty">
<property name="&lt;Alt&gt;F1" type="empty"/>
<property name="&lt;Alt&gt;F2" type="empty">
<property name="startup-notify" type="empty"/>
</property>
<property name="&lt;Alt&gt;F3" type="empty">
<property name="startup-notify" type="empty"/>
</property>
<property name="&lt;Primary&gt;&lt;Alt&gt;Delete" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;l" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;t" type="empty"/>
<property name="XF86Display" type="empty"/>
<property name="&lt;Super&gt;p" type="empty"/>
<property name="&lt;Primary&gt;Escape" type="empty"/>
<property name="XF86WWW" type="empty"/>
<property name="XF86Mail" type="empty"/>
<property name="Print" type="empty"/>
<property name="&lt;Super&gt;l" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Escape" type="empty"/>
<property name="&lt;Alt&gt;Print" type="empty"/>
<property name="&lt;Shift&gt;Print" type="empty"/>
<property name="XF86HomePage" type="empty"/>
<property name="&lt;Super&gt;w" type="empty"/>
<property name="&lt;Super&gt;m" type="empty"/>
<property name="XF86Explorer" type="empty"/>
<property name="&lt;Super&gt;f" type="empty"/>
<property name="&lt;Super&gt;F1" type="empty"/>
<property name="&lt;Super&gt;t" type="empty"/>
<property name="&lt;Super&gt;r" type="empty"/>
<property name="&lt;Super&gt;e" type="empty"/>
<property name="XF86Calculator" type="empty"/>
<property name="XF86Music" type="empty"/>
<property name="&lt;Super&gt;1" type="empty"/>
<property name="XF86Messenger" type="empty"/>
<property name="&lt;Super&gt;2" type="empty"/>
<property name="&lt;Super&gt;3" type="empty"/>
<property name="&lt;Super&gt;4" type="empty"/>
</property>
<property name="custom" type="empty">
<property name="&lt;Alt&gt;F3" type="empty">
<property name="startup-notify" type="bool" value="true"/>
</property>
<property name="&lt;Primary&gt;&lt;Alt&gt;Delete" type="string" value="xflock4"/>
<property name="&lt;Super&gt;f" type="string" value="exo-open --launch FileManager"/>
<property name="&lt;Alt&gt;F1" type="string" value="xfce4-popup-applicationsmenu"/>
<property name="&lt;Super&gt;w" type="string" value="exo-open --launch WebBrowser"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;t" type="string" value="exo-open --launch TerminalEmulator"/>
<property name="&lt;Super&gt;r" type="string" value="xfce4-appfinder"/>
<property name="XF86Music" type="string" value="parole"/>
<property name="Print" type="string" value="xfce4-screenshooter -f"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Escape" type="string" value="xkill"/>
<property name="&lt;Alt&gt;F2" type="string" value="xfrun4">
<property name="startup-notify" type="bool" value="true"/>
</property>
<property name="XF86Explorer" type="string" value="exo-open --launch FileManager"/>
<property name="&lt;Super&gt;m" type="string" value="exo-open --launch MailReader"/>
<property name="&lt;Primary&gt;Escape" type="string" value="xfce4-popup-whiskermenu"/>
<property name="XF86Calculator" type="string" value="mate-calc"/>
<property name="&lt;Super&gt;t" type="string" value="exo-open --launch TerminalEmulator"/>
<property name="XF86HomePage" type="string" value="exo-open --launch WebBrowser"/>
<property name="&lt;Alt&gt;Print" type="string" value="xfce4-screenshooter -w"/>
<property name="&lt;Super&gt;F1" type="string" value="xfce4-find-cursor"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;l" type="string" value="xflock4"/>
<property name="XF86Mail" type="string" value="exo-open --launch MailReader"/>
<property name="&lt;Shift&gt;Print" type="string" value="xfce4-screenshooter -r"/>
<property name="XF86WWW" type="string" value="exo-open --launch WebBrowser"/>
<property name="override" type="bool" value="true"/>
<property name="&lt;Shift&gt;&lt;Super&gt;w" type="string" value="/home/mcarneiro/.bin/move-to-next-monitor"/>
<property name="&lt;Shift&gt;&lt;Alt&gt;dollar" type="string" value="flameshot gui"/>
<property name="&lt;Super&gt;p" type="string" value="xfce4-display-settings --minimal"/>
<property name="F11" type="string" value="xflock4"/>
<property name="&lt;Alt&gt;&lt;Super&gt;d" type="string" value="xfconf-query -c xfce4-notifyd -p /do-not-disturb -T"/>
</property>
</property>
<property name="xfwm4" type="empty">
<property name="default" type="empty">
<property name="&lt;Alt&gt;Insert" type="empty"/>
<property name="Escape" type="empty"/>
<property name="Left" type="empty"/>
<property name="Right" type="empty"/>
<property name="Up" type="empty"/>
<property name="Down" type="empty"/>
<property name="&lt;Alt&gt;Tab" type="empty"/>
<property name="&lt;Alt&gt;&lt;Shift&gt;Tab" type="empty"/>
<property name="&lt;Alt&gt;Delete" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Down" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Left" type="empty"/>
<property name="&lt;Shift&gt;&lt;Alt&gt;Page_Down" type="empty"/>
<property name="&lt;Alt&gt;F4" type="empty"/>
<property name="&lt;Alt&gt;F6" type="empty"/>
<property name="&lt;Alt&gt;F7" type="empty"/>
<property name="&lt;Alt&gt;F8" type="empty"/>
<property name="&lt;Alt&gt;F9" type="empty"/>
<property name="&lt;Alt&gt;F10" type="empty"/>
<property name="&lt;Alt&gt;F11" type="empty"/>
<property name="&lt;Alt&gt;F12" type="empty"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Left" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;End" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Home" type="empty"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Right" type="empty"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Up" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_1" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_2" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_3" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_4" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_5" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_6" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_7" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_8" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_9" type="empty"/>
<property name="&lt;Alt&gt;space" type="empty"/>
<property name="&lt;Shift&gt;&lt;Alt&gt;Page_Up" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Right" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;d" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Up" type="empty"/>
<property name="&lt;Super&gt;Tab" type="empty"/>
<property name="&lt;Primary&gt;F1" type="empty"/>
<property name="&lt;Primary&gt;F2" type="empty"/>
<property name="&lt;Primary&gt;F3" type="empty"/>
<property name="&lt;Primary&gt;F4" type="empty"/>
<property name="&lt;Primary&gt;F5" type="empty"/>
<property name="&lt;Primary&gt;F6" type="empty"/>
<property name="&lt;Primary&gt;F7" type="empty"/>
<property name="&lt;Primary&gt;F8" type="empty"/>
<property name="&lt;Primary&gt;F9" type="empty"/>
<property name="&lt;Primary&gt;F10" type="empty"/>
<property name="&lt;Primary&gt;F11" type="empty"/>
<property name="&lt;Primary&gt;F12" type="empty"/>
<property name="&lt;Alt&gt;F5" type="empty"/>
<property name="&lt;Super&gt;KP_1" type="empty"/>
<property name="&lt;Super&gt;Down" type="empty"/>
<property name="&lt;Super&gt;KP_3" type="empty"/>
<property name="&lt;Super&gt;Left" type="empty"/>
<property name="&lt;Super&gt;Right" type="empty"/>
<property name="&lt;Super&gt;KP_7" type="empty"/>
<property name="&lt;Super&gt;Up" type="empty"/>
<property name="&lt;Super&gt;KP_9" type="empty"/>
<property name="&lt;Super&gt;d" type="empty"/>
</property>
<property name="custom" type="empty">
<property name="&lt;Alt&gt;F4" type="string" value="close_window_key"/>
<property name="&lt;Super&gt;Down" type="string" value="tile_down_key"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Left" type="string" value="move_window_left_key"/>
<property name="&lt;Alt&gt;F5" type="string" value="maximize_horiz_key"/>
<property name="Right" type="string" value="right_key"/>
<property name="Down" type="string" value="down_key"/>
<property name="&lt;Super&gt;Right" type="string" value="tile_right_key"/>
<property name="&lt;Alt&gt;Tab" type="string" value="cycle_windows_key"/>
<property name="Left" type="string" value="left_key"/>
<property name="&lt;Super&gt;Up" type="string" value="tile_up_key"/>
<property name="&lt;Alt&gt;F6" type="string" value="maximize_vert_key"/>
<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>
<property name="&lt;Super&gt;Left" type="string" value="tile_left_key"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Right" type="string" value="move_window_right_key"/>
<property name="&lt;Super&gt;d" type="string" value="show_desktop_key"/>
<property name="Up" type="string" value="up_key"/>
<property name="&lt;Alt&gt;F7" type="string" value="maximize_window_key"/>
<property name="&lt;Alt&gt;F11" type="string" value="fullscreen_key"/>
<property name="&lt;Alt&gt;&lt;Shift&gt;Tab" type="string" value="cycle_reverse_windows_key"/>
<property name="Escape" type="string" value="cancel_key"/>
<property name="&lt;Alt&gt;space" type="string" value="popup_menu_key"/>
<property name="&lt;Alt&gt;F12" type="string" value="above_key"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Up" type="string" value="move_window_up_key"/>
<property name="&lt;Alt&gt;F8" type="string" value="stick_window_key"/>
<property name="&lt;Alt&gt;F9" type="string" value="hide_window_key"/>
<property name="override" type="bool" value="true"/>
<property name="&lt;Super&gt;KP_7" type="string" value="tile_up_left_key"/>
<property name="&lt;Super&gt;KP_9" type="string" value="tile_up_right_key"/>
<property name="&lt;Super&gt;KP_1" type="string" value="tile_down_left_key"/>
<property name="&lt;Super&gt;KP_3" type="string" value="tile_down_right_key"/>
<property name="&lt;Shift&gt;&lt;Alt&gt;F7" type="string" value="fill_window_key"/>
</property>
</property>
<property name="providers" type="array">
<value type="string" value="xfwm4"/>
<value type="string" value="commands"/>
</property>
</channel>
@mcarneiro
Copy link
Author

mcarneiro commented May 1, 2021

bash <(curl https://gist.githubusercontent.com/mcarneiro/fba0e7f68ada9cf48108/raw/setup.sh)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment