Setting Up Ubuntu for coding with the help of DotFiles repo
Quick Steps without all the crap
- You need to git clone this repo to dotfiles:
# go to home dir cd git clone https://github.com/gbili/dotfiles.git
- Create the symbolic links to the actual dot files (we also backup preexisting):
# go to home dir cd # if link-dotfiles.bash is not executable make it executable chmod +x ./dotfiles/scripts/link-dotfiles.bash # execute it: this is the important step ./dotfiles/scripts/link-dotfiles.bash
- Install vundle
cd git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim vim # within vim do :PluginInstall :q
- Create an ssh key pair and add the public to github. Accept the default location:
ssh-keygen -t rsa more ~/.ssh/id_rsa.pub # copy the output and add it to github
*nix bash: Ctrl-S
When using bash there is a functionality that allows you to send a process to sleep with
c-s (Ctr+S). This will freeze the terminal when editing a file using vim and typing
To overcome this problem, you need to disable this functionality you need to set
stty -ixon in your
I put it in
.bashrc which is included in non login shells, but in ubuntu it also gets included in login shells. In a login shell you cannot call
stty that is why you have to test whether
.bashrc is getting included in a login shell and avoid running the command above if it is the case. Have a look at
.bashrc to see how.
Where to store my bash script stuff? (
Read this if you are really interested in the matter, otherwise
~/.bashrc is loaded for non-login shells. Which is what we want.
Caps Lock to
- Install gnome-tweaks
sudo apt-get install gnome-tweaks
- Go to Tweaks GUI App and in Keyboard & Mouse press the Additional Layout Options
You need to install it with ubuntu and then use that to install the latest version as global. See steps below.
sudo apt install npm
npm install -g ERROR EACCES
If you get an error EACCES it means you are having permission troubles. This is because by default Ubuntu's npm is installed in
/usr and it needs sudo permission to write to the global modules dir under
/usr. You shoud NEVER run npm as sudo, instead you can change where npm thinks global is.
Give it a local global
Change npm's default directory to a hidden directory in your home folder
mkdir ~/.npm_modules_global npm config set prefix '~/.npm_modules_global' export PATH="$HOME/.npm_modules_global/bin:$PATH" source ~/.bashrc
Once have told npm to consider your home directory as the global modules dir, you can start using it by installing non other than the latest version of npm itself!
npm install -g npm npm --version
this has the merit of installing the latest version of npm globally. From now on, we can safely use npm to install global modules without giving npm any sudo rights. You can read more in here
To many errors, cut the chaos
If everything keeps failing try using
npx <npm-module commands>. For example you can run gatsby with :
npx gatsby develop this will fetch the right modules required to run gatsby.
If you want to be able to copy from clipboard you will need
+clipboard_xterm which is what
vim-gnome has. Don't worry it's a terminal version, not a GUI one.
sudo apt-get install vim-gnome
Thanks to this, you will be able to do
"+y to yank to clipboard, and
"+p to paste from clipboard.
Command-t you need to Install Vim-nox (has ruby support)
This is needed if you use command-t.
But command-t is a real pain to install, so maybe just use ctrlp.vim and normal vim install
Use CtrlP instead of Command-t
Works directly out of the box. You can then change CtrlP binding to
<leader>t (don't do it, use standard CtrlP)
map <leader>t :CtrlP .<cs>
Download eslint and babel
npm install -g eslint to install it globally, and make it accessible to ale vim
Using npm instead of yarn, do this in your project's dir
yarn add --dev eslint babel-eslint eslint-plugin-react
Then install the following to prettify:
yarn add --dev prettier eslint-config-prettier eslint-plugin-prettier
Now if you run:
eslint --fix src/App.js, your src/App.js will be beautified
This can be used in conjuction with vim plugin, Plug 'skywind300/asyncrun.vim'
Installing drivers for graphics card
If you installed them manually, undo that with this answer.
sudo apt-add-repository -r ppa:graphics-drivers/ppa sudo apt update sudo apt remove nvidia* sudo apt autoremove
Use Ubuntu's drivers repository and drivers manager to auto install the things for you.
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update sudo ubuntu-dirvers autoinstall
Programming CUDA cores
Use use this answer to install the nvidia cuda compiler. After having followed the instructions above for installing graphics drivers, run these commands:
sudo apt install nvidia-cuda-toolkit gcc-6 nvcc --version
This should greet you with something different than :
Command nvcc not found
- If you have paired your device and it does not show up as a sound device, you will first need to unpair it.
- Once you are sure it is unpaired, you want to restart pulseaudio:
sudo pkill pulseaudio
This will make sure that once you connect your device via bluetooth, it will be listed as a sound device.
- Now, to connect a bluetooth device, make sure it is discoverable, and then go to bluetooth and double click on the listed item to pair it. It should say: Connected.
- Then you can go to Settings > Sound and select your headset from the list.
- If the headset is already selected and you have no sound, select another output and reselect it again.
- It can happen that the sound test works but no sound comes out from youtube videos, the step of unselecting and reselecting should fix this.
Configuring git to not ask you for user pass every time
There are plenty of wrong answers in stack overflow. The way to go is to use ssh keys. Follow the steps in github.
- Perform the steps outlined in the link above and
- Enter a passphrase which must be unrelated to any other password, just a plain new passphrase.
- Then you can use the
ssh-agentto securely save the passphrase so that you don't need to reenter it again, use this link to see how.
- Then you will need to save the ssh keys to your github account.
If you see this message when you try to push to origin
The authenticity of host 'github.com (IP ADDRESS)' can't be established. > RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. > Are you sure you want to continue connecting (yes/no)?
To solve this,
- and ubuntu will ask you for sudo password
- and the passphrase that you provided when creating the ssh key
- Provide both and try to push again
- You should be greeted with: Warning key was permanently added to your trusted hosts or something in those lines…