Linux notes

17-02-2021 / Edit on Github

Quick tips / references for using Linux / Ubuntu.

πŸ‘‰ Note: Fresh installation Ubuntu note.
πŸ‘‰ Note: Bash

General #

πŸ”… Run MacOS apps on Linux, use Darling.

πŸ”… Run Android apps on Linux, use Anbox.

πŸ”… Find in linux with command lines β‡Ύ link

πŸ”… Cannot move files to the trash/wrong owner β‡Ύ link

πŸ”… Gnome screenshot β‡Ύ link

πŸ”… Windows shrink drive in windows β‡Ύ link (partition, resize disk drive, hard disk)

πŸ”… Type Vietnamese in SublimeText, install vn ime (exactly like that). Press F2 for using.

πŸ”… Look and kill an app process:

ps ax | grep teamviewer # check the id
kill -9 <pid> # kill some process

πŸ”… Install file .bin, .run

chmod +x

πŸ”… Make a script executable: chmod a+x script_file

πŸ”… Unzip a file,

sudo apt-get install unzip
unzip <file>
unzip <file> -d <destination>

πŸ”… Terminal multi windows:

sudo apt-get install terminator

πŸ”… Add bookmark for evince (default pdf reader)

  • F9: hide/show sidebar
  • Menu on the top right > Add bookmarks
  • Click on bookmark and rename it
  • Ctrl + Shift + S to save (instead of Ctrl + S)

πŸ”… Remove PPA from ubuntu by terminal. For example, The repository ' artful Release' does not have a Release file. Remove the file b-eltzner-qpdfview-ubuntu from directory /etc/apt/sources.list.d

sudo rm /etc/apt/sources.list.d/<file>

Or using below command lines

# install
sudo add-apt-repository ppa:name

# remove
sudo add-apt-repository --remove ppa:name

πŸ”… Get ip address: ifconfig

Settings #

πŸ”… Make Monday as the start of the week:

sudo -H gedit /usr/share/i18n/locales/en_GB
# change to 1
first_weekday 1
# save and restart the system

πŸ”… Add / Remove / Manage app icon in launcher:

sudo apt-get install alacarte

πŸ”… Change ubuntu logo in settings: replace


πŸ”… Turn off animation open and minimize windows on ubuntu 17.10 and later (gnome desktop): Gnome Tweak Tools > Apperance > Animations OFF

πŸ”… Choose between "lightdm" and "gdm3" (ref):

sudo apt install lightdm
dpkg-reconfigure lightdm
# current config
lightdm --show-config

πŸ”… Save / Load dconf[ref]: ~/.config/dconf/user

# save guake configs to a file
dconf dump / > dconf-settings.ini

# load
dconf load / < dconf-settings.ini
# or
cat dconf-settings.ini | dconf load /

πŸ”… Save / load custom keyboard shortcuts (ref)

# keybindings
dconf dump /org/gnome/desktop/wm/keybindings/ > keybindings.dconf
# media keys
dconf dump /org/gnome/settings-daemon/plugins/media-keys/ > media-keys.dconf

# load
dconf load /org/gnome/desktop/wm/keybindings/ < keybindings.dconf
dconf load /org/gnome/settings-daemon/plugins/media-keys/ < keybindings.dconf

Applications #

πŸ”… Completely remove LibreOffice,

# zsh uses \*
sudo apt-get remove --purge libreoffice*
sudo apt-get clean
sudo apt-get autoremove

πŸ”… Remove snap store

sudo apt autoremove --purge snapd

πŸ”… Uninstall snap applications

sudo snap remove <app_name>

πŸ”… Convert office's files to pdf

# install first
sudo apt install libreoffice
# pptx -> pdf
soffice --headless --convert-to pdf prezentacja.pptx

πŸ”… Modify / Add icon in launcher: alacarte" (Main Menu, can be found in App Store).

Nautilus / Files management #

πŸ”… Force Unity Dash to index all files on Home

sudo updatedb

πŸ”… Sync one folder to another (more info)

# A -> B/A
rsync -avu --delete "/home/user/A" "/home/user/B"

# A/* -> B/A
rsync -avu --delete "/home/user/A/" "/home/user/B/A"

# A, C -> B/A, B/C
rsync -avu --delete "/home/user/A" "/home/user/C" "/home/user/B"
  • -a Do the sync preserving all filesystem attributes
  • -v run verbosely
  • -u only copy files with a newer modification time (or size difference if the times are equal)
  • --delete delete the files in target folder that do not exist in the source
# exclude
rsync -a --exclude 'dir1' src_directory/ dst_directory/
rsync -a --exclude={'file1.txt','dir1/*','dir2'} src_directory/ dst_directory/

πŸ”… Make a shortcut link to a folder/file in linux terminal β‡Ύ link

πŸ”… Shortcut to a folder in linux β‡Ύ link

πŸ”… Thumbnail nautilus: go to setting, set and apply this line

sudo chown -R yourusername:yourusername ~/.cache/thumbnails

πŸ”… Shorten directory in terminal

  • Temporarily, just enter PS1='\u:\W\$ ' en press enter.

  • Permanently, open sudo gedit ~/.bashrc and find

    if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[email protected]\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    PS1='${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '
  • Remove @\h and replace \w by \W so that it becomes,

    if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
    PS1='${debian_chroot:+($debian_chroot)}\u:\W\$ '
  • Save, exit, close terminal and start another to see the result.

πŸ”… Right click nautilus "Open as Administrator":

sudo apt-get install nautilus-admin
nautilus -q # restart nautilus

πŸ”… Mount iso file on linux

# create a folder
mkdir /mnt/<folder>

sudo mount -o loop <image>.iso /mnt/<folder>

# unmount
sudo umount /mnt/<folder> # umount, not "unmount"!!!

If you mount another iso file to the same, it will replace the current one.

πŸ”… Extract a iso file: first, mount it like in previous tut to a folder named iso then copy all the contents in iso to some folder you want.

# copy all files in /iso/ to <directory>/
cp -r /mnt/iso/* <directory>/

πŸ”… Sync files with mega right on terminal

  • Install megatools:

    sudo apt-get install megatools
  • Using megatools, cf the main website.

  • Create a condig file which stores your login information (be careful, everyone can see your pass)

    sudo apt-get install vim # in case that you don't have vim on your system
    vim .megarc # create a file named .megarc
  • vim opens and type

    Username = [email protected]
    Password = yourpassword

    If you have back slash in your password, you must escape it with another backslash

  • Quit vim and save the file by pressing ESC and then :wq!

  • Upload a file: megaput --path /Root/<folder> file

  • See the list of file on remote: megals

  • Upload a folder: megacopy --local <folder> --remote <folder>

  • Download from link: megadl <mega-link>

  • Download a single file: megaget <file>

    megaget /Root/Apps/matlab17b/R2017b_glnxa64_dvd2.iso
  • Download from uploaded directory:

    megacopy --local <folder> --remote <folder-to-download> --download

πŸ”… Save a directory a $PATH of local profile.

sudo gedit ~/.profile
# copy and paste following line (should change the path)
export PATH=/home/thi/anaconda3/bin:$PATH
# save and close .profile and then apply following line to get instant update
source ~/.profile

πŸ”… Copy files from ubuntu to iPhone iOS iPad

  • Don't need to install any files if one needs to copy photos/videos from iphone to ubuntu, one can use gThumb to do this or just use file manager to copy.
  • If one wants to copy files to iphone. Follow this one

πŸ”… Check the current path: pwd

Rename with some RegEx #

sudo apt install rename
rename 's/.+/our $i; sprintf("chap%d", 46+$i++)/e' *
abc xyz 123	# from
chap46 chap47 chap48 # to

Connect to iOS / iPhone / iPad #

# Install
sudo apt install libimobiledevice6 ifuse libimobiledevice-utils ideviceinstaller

# Connect iDevice to computer with usb
idevicepair pair # Trust on iDevice and then rerun this

sudo mkdir /media/$USER/ipad
sudo chown -R $USER /media/$USER/ipad
ifuse /media/$USER/ipad

# Check File Manager and see ipad!

Surface #

πŸ”… Tweaks for ubuntu on surface book β‡Ύ link

πŸ”… App linux-surface.

User / Group / Ownership #

πŸ”… How to add existing user to an existing group[ref]

sudo usermod -a -G groupName userName

πŸ”… Change ownership of a folder and its children

# folder and its children
chown -R thi:root folder
# a file
chown <user>:<group> file

πŸ”… Check the permission of curent directory:

ls -l
ls -l <file>
Check this photo

check ll

Matlab #

πŸ”… Scale matlab: need to install matleb version >= R2017b

s = settings;s.matlab.desktop.DisplayScaleFactor
s.matlab.desktop.DisplayScaleFactor.PersonalValue = 2

πŸ”… Launching matlab without graphic ui[ref]

matlab -nodesktop

πŸ”… Cannot open matlab without sudo: change the owner permission of folder /home/thi/.matlab to thi*

Another solution: suppose that matlab is installed on a user's directory and you have already add this to the $PATH. IT's only work if you use matlab (not sudo matlab). Then do

sudo env "PATH=$PATH"

from this, you can sudo matlab

πŸ”… Matlab drive connector: after installing, run

~/bin/MATLABConnector toggle

πŸ”… How to install matlab silently (only with command lines) on linux? (if below doesn't work, you can check here, my method is different from this one)

  1. Suppose that you have 2 dvd iso files which contains the installation of matlab (dvd1.iso and dvd2.iso)

  2. For the activation, you have and license_standalone.lic

  3. First, you need to extract 2 dvd iso files to a common folder named install_matlab in /home/thi/

  4. Create a new folder to install matlab called matlabR in /home/thi/

  5. Extract all files in 2 iso files to folder install_matlab like the other tut (search for "mount").

  6. Run below command line

    sudo /home/thi/matlab_install/install -agreeToLicense yes -mode silent -destinationFolder /home/thi/matlabR -fileInstallationKey xxxxx-xxxxx-xxxxx  -outputFile /home/matlab_install.log
  7. After the installation, copy file license_standalone.lic to /home/thi/matlabR/licenses/

  8. Copy file to /home/thi/matlabR/bin/glnxa64/

  9. Try running matlab: /home/thi/matlabR/bin/matlab

  10. If you have an error like,

    	# ERR: cannot open shared object file: No such file or directory
    sudo apt-get install libxt6
  11. Make linux recognize your matlab command matlab like in the instruction 40.

πŸ”… Make linux recognize matlab command

  • Suppose that you have installed matlab on /home/thi/matlabR

  • You need to add above directory to the $PATH so that the system can recognize your matlab command

    export PATH=$PATH:/home/thi/matlabR/bin
  • You can use echo $PATH to check if the path is located in it or not.

πŸ”… Remove matlab on linux: simply

rm -rf <matlab-folder>

Network #

πŸ”… Don't show "Turn on wifi hotspot..." for clicking => try: click on "Network" and then "Wifi" in Settings.

πŸ”… Share terminal for other (via SSH): using Teleconsole,

# install
curl | sh

# share current terminal

# choose to connect via web browser
# or via terminal
teleconsole join <id>

# stop broadcasting

# port forwarding
# suppose that a port is open at 3000 on your machine and you
# wanna share it with your friend
teleconsole -f localhost:3000

πŸ”… Download a direct link by terminal

wget <direct-link> -O <name-of-file>.<file-extension>

πŸ”… Download from google drive by terminal

  • Download as usual without terminal by a web browser
  • Open Downloads windows of the browser and then copy the download link.
  • Stop the download process
  • Use the command link in 33 where <direct-link> is the link copied above.

πŸ”… Use ssh to get access to another computer in the same network (LAN)

  1. Follow (a little bit) here.
  2. On the remote machine
    1. update and upgrade install
    2. install openssh-server
    3. open /etc/ssh/sshd_config and uncomment on Port 22 and lines starting with Hostkey...
    4. start the network: sudo service ssh start
    5. stop the network: sudo service ssh stop
    6. check if the network is running or not? sudo service ssh status
    7. Check the current ip: ifconfig: look on the inet
  3. On the local machine
    8. Install the same tool and use ssh [email protected]

πŸ”… Connect ssh to a virtual machine (the same network)

  • Install openssh for both client and server machine

    sudo apt-get install openssh-client
    sudo apt-get install openssh-server
  • On server machine, check ssh is running or not

    ps -A | grep sshd
    # return [number] ? 00:00:00 sshd then it works

πŸ”… Download playlist audio youtube, using youtube-dl

sudo apt-get install curl -y (cΓ i curl nαΊΏu chΖ°a cΓ i)
sudo curl -L -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl

# update 11/11/20: not working with playlist but single song!
youtube-dl --extract-audio --audio-format mp3 -o "%(title)s.%(ext)s" <link-playlist>

πŸ”… Install TOR Browser

sudo add-apt-repository ppa:micahflee/ppa
sudo apt update
sudo apt install torbrowser-launcher

# Open "Tor Browser" and install for the 1st time

# Click "Connect" to connect to Tor Network

# Uninstall
sudo apt remove torbrowser-launcher

Free VPN #

Using vpnbook and its tutorial. Note that, at the last step, we need to run with sudo! Note: very low speed!

Media / Photo / Music #

πŸ”… Add shortcut keys for Rhythmbox Music Player -> read this.

  1. Enable plugin "MPRIS D-Bus interface".
  2. Add custom shortcuts keyboards as
    • Play/Pause: rhythmbox-client --play-pause
    • Next: rhythmbox-client --next
    • Previous: rhythmbox-client --previous

πŸ”… Convert .ts videos to .mp4

sudo apt install ffmpeg
ffmpeg -i input.ts -c:v libx264 -c:a aac output.mp4

πŸ”… Mp3 tag editor:

sudo apt install exfalso  # Ex Falso

πŸ”… Spotify controller shortcut keyboards on Ubuntu (ref): using below commands for controlling playbacks in spotify, put them in a shortcut keys on ubuntu:

# play/puase
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause

# next track
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next

# previous track
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous

πŸ”… Resize multiple photos (keep the ratio/scale) (more options):

πŸ”… Youtube Music Controller for Linux:

  1. Download and install this app.
  2. Change to Youtube Music interface.
  3. Remove all shortcut keyboards that look like the ones you wanna set in the app in Ubuntu system (Keyboard shortcuts).
  4. On taskbar, right click on the You Tube Music app > Desktop settings > Hotkeys > Set your keyboards (eg. Ctrl+Shift+> for next track, Ctrl+Shift+< for previous track, Ctrl+Shift+Space for play/pause track).
# install
sudo apt-get install imagemagick
# resize but keep the ratio (save to jpg)
mogrify -resize 50% -format jpg *
# resize keep the extension
mogrify -resize 50% *
# with a specific size (save to jpg)
mogrify -resize 800x600 -format jpg *
# just the width (save to jpg)
mogrify -resize 800x -format jpg *
# only resize images bigger than 1000px width
mogrify -resize 1000x\> *

Game #

πŸ”… Game platforms: Steam, Lutris.

πŸ”… Xbox Controller on Ubuntu:

# for bluetooth recognize
sudo apt-get install xboxdrv

# start the service
sudo systemctl start xboxdrv.service

# if: Failed to start xboxdrv.service: Unit xboxdrv.service not found
# install
sudo apt-add-repository -y ppa:rael-gc/ubuntu-xboxdrv
sudo apt-get update
sudo apt-get install ubuntu-xboxdrv
# for GUI testing app
sudo apt-get install jstest-gtk

If you cannot connect controller to bluetooth,[ref]

sudo apt install sysfsutils

# edit as root

# add below line to the end of above file

# save changes and restart

Lutris tips #

πŸ”… Install GOG's games: Open Lutris > Search > Install with option "GOG". Installed from GOG Galaxy may be not working but with this method is working!

πŸ”… Add icon in the Lutris windows:

  1. CLick on "+" (Add Game)

  2. Tab Game info: "Name" the game + choose "Runner".

  3. Tab Game options: "Excutable" choose

    # an example
    ~/Games/epic-games-store/drive_c/Program Files/Epic Games/ShadowTactics/Shadow Tactics.exe

πŸ”… Add icon on Ubuntu/POP!_OS launcher: on Lutris interface, right click on a game > "Create application menu shortcut", it will appear on the launcher after that. You can use "alacarte" (Main Menu, can be found in App Store).

System #

πŸ”… System monitor in terminal: vtop

sudo apt install nodejs
sudo apt install npm
sudo npm install -g vtop

Font #

  1. Method 1 -- To install font, copy all font file (eg. .ttf) to ~/.local/share/font/. For global, it's /usr/share/fonts.
  2. Method 2 -- Open with Font Viewer and then click on Install.

Errors #

πŸ”… Problem save file as root user and cannot open later β‡Ύ link

πŸ”… Prevent bluetooth devices disconnected after sleep β‡Ύ link

πŸ”… Failed to load module 'canberra-gtk-module

sudo apt install libcanberra-gtk-module libcanberra-gtk3-module

πŸ”… nvidia docker signatures invalid. The following signatures were invalid: EXPKEYSIG

curl -s -L | sudo apt-key add -

πŸ”… bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)

echo "LC_ALL=en_US.UTF-8" >> /etc/environment
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
locale-gen en_US.UTF-8

πŸ”… dpkg: error processing package install-info

sudo mv /var/lib/dpkg/info/install-info.postinst /var/lib/dpkg/info/install-info.postinst.bad

πŸ”… APT had planned for dpkg to do more than it reported back

dpkg --configure -a
apt-get install -f

GPU-NVDIA problems #

πŸ‘‰ Check this note.