I took a little less time this install, but it still takes me some time going through these notes and getting it right. This is what I’ve done to get my computer setup this time on Impish Indri Ubuntu 21.10.
I got really behind proof-reading and finalizing these notes. So, I’m publishing them after I already installed the next version. Better late than never, right?
I use Virtualbox to run Windows and some development virtual machines.
sudo apt install virtualbox
Then, I went to File > Host Network Manager and clicked the “Create” button because some of my machines rely on vboxnet0.
sudo apt install \ vim \ vim-gtk3 \ git-cola \ meld
- Vim (gtk version is for the Gvim – Gui): The improved Vi editor. It’s handy to be used to the key combinations for when I get to work on servers at work.
- Git-Cola: is a Gui for Git, and it will also install Git as a dependency
- Meld: a text compare tool
To setup Git, I ran the following commands:
git config --global user.name "my name" git config --global user.email firstname.lastname@example.org
I’ve been using Visual Studio for my Angular Development. I could use it for Flutter development, but I prefer Android Studio for that. I just downloaded the deb package from the website.
sudo apt install ~/Downloads/code_1.58.2-1626302803_amd64.deb
I have a few extensions that I have been installing. They are quick to install using Ctrl+P and then these commands:
- ext install johnpapa.angular-essentials
- ext install humao.rest-client
- ext install raagh.angular-karma-test-explorer
- ext install hbenl.vscode-jasmine-test-adapter
- ext install dart-code.flutter
I use Node JS here and there for different projects. Here’s what I did to install it…
sudo apt install nodejs sudo apt install npm sudo npm install npm@latest -g sudo npm install -g gulp sudo npm install -g grunt sudo npm link @angular/cli
I’m finding that I enjoy Flutter most these days. I referred to the instructions as I installed.
I used the snap method to install it:
sudo snap install flutter --classic
First things first, I had to run flutter doctor. That downloads the biggest part of flutter.
I installed the “additional Linux requirements”:
sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev
I downloaded Android Studio from the website. I just installed it by extracting it into the bin directory:
mkdir ~/bin/studio tar -xzvf ~/Downloads/android-studio-ide-202.7486908-linux.tar.gz -C ~/bin/studio
Once extracted, I used the menu editor (MenuLibre) to create a launcher:
- command: ~/bin/studio/android-studio/bin/studio.sh
- icon: ~/bin/studio/android-studio/bin/studio.svg
To allow the programs to run on the Linux desktop, I ran this command:
flutter config --enable-linux-desktop
MySQL and PHP
I use MySQL and PHP on the backend of several projects. To make it easy to develop with those, I installed both this way:
sudo apt install mariadb-server-10.5 \ php7.4-fpm \ php-mysql \ composer
Note: By doing php7.4-fpm instead of just php7.4, it avoids installing the whole Apache web server.
Rather than restoring the database from my old computer, I’ll just do a refresh from my production server. I did have to prep the database:
sudo mysql create database matthew; CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
I’m a little late to the party here. I’ve been fighting with this install for 6 months! It got to the point that my laptop wouldn’t suspend and would crash when I would reboot. The next version of Ubuntu was released before I could get this proof read and published!
I’ve been keeping a list of the files that I restore so I don’t forget anything. I like formatting the drive and starting from scratch, but I have to be careful what I copy back, otherwise it defeats the purpose. Maybe this list will help you think through what you need to backup and restore on your system:
- ~/.ssh: connection keys for SSH connections
- ~/app: (as in application development) this is where I keep my play space for programming projects
- ~/Documents: where most of my regular files, like documents, of course
- ~/DigitalEagleServices: work-related files
- ~/Insync: OneDrive files (saves times resyncing from the Internet)
- ~/.config/google-chrome: my Google Chrome browser profile, restores bookmarks, last used tabs, browser history, etc.
- ~/.remmina: the configuration for Remmina, the remote desktop software
- ~/.sword: the data files for the sword project, which I use with Xiphos
- ~/.vim: my custom configurations for the Vi editor
- ~/.vimrc: the actual configuration file for the Vi editor
- ~/.local/share/fonts: extra fonts that I have collected over the years
- /etc/NetworkManager/system-connections: this saves all of my wireless connections and VPN connections (I’m not sure this worked this time)
- .local/share/applications: I review this directory for shortcuts to apps that I use
- ~/bin: certain programs and scripts that I installed manually
- ~/Zotero: research data, depending on how you installed it may be in ~/snap/zotero-snap/common/Zotero
- ~/.config/obs-studio: my setup (scenes, etc) for OBS Studio
Permissions are important for the SSH files. Here’s how I fixed them:
chmod 600 ~/.ssh/* chmod 644 ~/.ssh/authorized_keys2 chmod 644 ~/.ssh/known_hosts chmod 644 ~/.ssh/config chmod 644 ~/.ssh/*.pub
The network manager connection files also have to have certain permissions. So, it is easier to restore them to my Downloads directory and then use these commands:
cd ~/Downloads/system-connections/ chmod 600 * sudo chown root:root * sudo cp * /etc/NetworkManager/system-connections/ sudo service NetworkManager restart
Flameshot is my current screenshot tool. I need it installed sooner than later to help document. First off, it’s easy to install with:
sudo apt install flameshot
To make it better, I like it mapped to the print screen button. That way I get the control of Flameshot for every screenshot. Here’s the commands I can run on the command-line to make that happen:
gsettings set org.gnome.settings-daemon.plugins.media-keys screenshot '' gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']" gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name 'flameshot' gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command '/usr/bin/flameshot gui' gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding 'Print'
Finally, I went to Configuration > General and checked “Launch at startup”.
Note: My old favorite was Shutter. I haven’t installed it and gone back to it yet.
My favorite browser so far has been Google Chrome. I could make arguments for other browsers, but Chrome has been my favorite for a while. I downloaded the browser package from Google’s Website and installed it by double clicking on it in the Downloads folder (opened in the Software Center).
Don’t forget, I also restored my profile in ~/.config/google-chrome to keep all of my bookmarks and such. After that, I just had to sign in to my Google account at the upper right corner of the browser because it said the sync was paused. I had to sign in to all of the websites because it lost the session, but that was no big deal. I was back in business where I left off.
I also went to System Settings > Default Applications and set the default for Web to Chrome.
On past installations, I have used KeePass2. Since getting into Flutter, I found AuthPass, which is a KeePass implementation in Flutter. So, I’m jumping ship and going for it. Their blog post documents an Apt repo, but that didn’t work. Here’s what I tried:
sudo add-apt-repository ppa:codeux.design/authpass sudo apt-get install authpass
Here’s the error you get when you try to update:
E: The repository 'http://ppa.launchpad.net/codeux.design/authpass/ubuntu hirsute Release' does not have a Release file. N: Updating from such a repository can't be done securely, and is therefore disabled by default.
Instead, I found a snap that I could install:
sudo snap install authpass
Dropbox is the easiest cloud to get working. I don’t use it as much, but it’s nice to have. I just downloaded it from the website. I installed it and the dependency with:
sudo apt install python3-gpg sudo apt install ~/Downloads/dropbox_2020.03.04_amd64.deb
After installing, it popped open a prompt to start Dropbox. That places the indicator icon by the clock. It also downloaded the “proprietary” binary required to make it work. It also opened a browser window to do the log in. I had trouble making that work until I signed into the website first and then connected the desktop client.
OneDrive itself doesn’t have a sync client. So, I have been using InSync. I just downloaded that from their website. Then, I installed with:
sudo apt install ~/Downloads/insync_18.104.22.168983-focal_amd64.deb
Like Dropbox, a short while after installing, it prompts to start InSync:
It starts by asking which account type you want to sync. When I picked Microsoft OneDrive, it opened the browser to a sign in page.
After signing in, this window took me through a few steps. I accepted the defaults until I got to the folders to sync. Then, I picked my folder for KeePass and for Joplin.
I use VMWare Horizon for connections. I downloaded it from the website and installed with these commands:
cd ~/Downloads/ sudo chmod +x VMware-Horizon-Client-2103-8.2.0-17742757.x64.bundle sudo apt install python sudo ./VMware-Horizon-Client-2103-8.2.0-17742757.x64.bundle
I accepted the default for all of the questions after accepting the agreements. I had no problems with the install.
Teams is another key software needed for work. It allows me to chat and screenshare with others. I downloaded the official client from the website. I downloaded the deb file for the desktop client.
sudo apt install ~/Downloads/teams_1.4.00.13653_amd64.deb
I have an Nvida card, so I wanted to install the driver. Last Ubuntu version automatically installed the drvier. This time, I had to do it myself. I opened the Additional Drivers app an selected the 465 driver:
After trying the 465 and 470 drivers for a while, I found it was locking up a lot. Chrome and Teams would crash everytime I would open the laptop lid up. I guess restoring after a suspend caused memory issues. Worse, it would lock up everytime I would disconnect from my D6000 dock. So, I tried the 450 driver I had on the previous version of Ubuntu.
I haven’t done some good testing to confirm, but I think Power Top has doubled my battery life. I installed with:
sudo apt-get install tlp powertop sudo tlp start sudo tlp-stat -s
Just because it’s fun to see as the years go by, here’s the stats:
--- TLP 1.3.1 -------------------------------------------- +++ System Info System = Dell Inc. XPS 15 7590 BIOS = 1.10.0 Release = Ubuntu 21.04 Kernel = 5.11.0-22-generic #23-Ubuntu SMP Thu Jun 17 00:34:23 UTC 2021 x86_64 /proc/cmdline = BOOT_IMAGE=/vmlinuz-5.11.0-22-generic root=/dev/mapper/vgubuntu-root ro quiet splash vt.handoff=7 Init system = systemd v247 (247.3-3ubuntu3.1) Boot mode = UEFI +++ TLP Status State = enabled RDW state = enabled Last run = 11:30:47 PM, 10 sec(s) ago Mode = AC Power source = AC
To be prepared for any VPN requirement, I install all the VPNs:
sudo apt install vpnc \ network-manager-vpnc \ network-manager-openconnect \ network-manager-openconnect-gnome \ openconnect \ network-manager-iodine \ network-manager-openvpn \ network-manager-strongswan \ network-manager-openvpn-gnome \ network-manager-iodine-gnome \ network-manager-vpnc-gnome
LIbreOffice comes pre-installed. But, to keep it up to date, I added the official repository:
sudo add-apt-repository ppa:libreoffice/ppa
For Bible study software, I use Xiphos. Remember up in the backup section, I restored the .sword directory for the Bible text and commentaries.
sudo apt install xiphos
I’ve been using Zotero off and on for a while now. It’s hard to figure out the best way to install in a way that keeps it automatically updated. I finally found a place that claims to update the repository within 24 hours of updates. So, I’ll use that.
wget -qO- https://github.com/retorquere/zotero-deb/releases/download/apt-get/install.sh | sudo bash sudo apt update sudo apt install zotero
Restoring the data directory was a big challenging because I had use the snap before. I had to move the data from ~/snap/zotero-snap/common/Zotero to ~/Zotero
I’ve been using Joplin as my notes application. I installed it from the software center, but I noticed it was a snap app:
snap install joplin-desktop
After installing, I went to Tools > Options > Synchronization, and I changed the target to OneDrive. After that, I exited back out to the main app and clicked the Synchronize button. That took me through the login process.
The cups-browsed service is very annoying because it adds printers that don’t get removed. So, a laptop that travels around a bit just collects printers that never get removed.
sudo systemctl stop cups-browsed sudo systemctl disable cups-browsed
To install my Dell E525W printer, I downloaded the driver from the Dell website. I unzipped and installed the deb package:
cd ~/Downloads/ unzip Printer_E525w_Driver_Dell_A00_Linux.zip sudo apt install ./dell-color-mfp-e525w_1.0-28_all.deb
I have found the settings app unreliable for working with printers. So, I used the cups web interface at http://localhost:631. I added an IPP printer with the URL ipp://DELLA40A1E/ipp/ and the PPD file located at: /usr/share/cups/model/Dell/Dell_Color_MFP_E525w.ppd.gz
Application Package Systems
Ubuntu comes with the ability to use DEB packages and snap packages. I used this to add AppImages:
cd ~/Downloads/ wget "https://github.com/AppImage/appimaged/releases/download/continuous/appimaged-x86_64.AppImage" chmod a+x appimaged-x86_64.AppImage ./appimaged-x86_64.AppImage --install
And, I added Flatpak:
sudo apt install flatpak
Here are just a few utilities that I install:
sudo apt install menulibre \ p7zip-full p7zip-rar \ synaptic \ gnome-tweak-tool
- Menu Libre is a menu editor that makes it easy to add .desktop files to the menu system
- 7Zip is handy for compression, although I rarely use it
- synaptic just makes it easier to see what is installed
- gnome-tweak-tool has a few settings that lets you tweak your system
Balena Etcher is one more utility that is great for putting images onto USB drivers for installing. I downloaded the AppImage from their website.
To finished the tweaks, I opened the regular settings app and made these changes:
- Changed the time display on the top bar to 12 hour display under Date & Time > Time Format
- Added the percentage by the battery indicator under Power > Suspend & Power Button > Show Battery Percentage (at the bottom)
- Added the an avatar picture for my login under Users > click on the picture
In the Tweaks app (Gnome Tweak Tool), I made the following setting changes:
- Added the weekday to the date with Top Bar > Clock > Weekday
- Changed the modal behavior by unchecking Windows > Attach Modal Dialogs
Before I can install any extensions, I had to install the chrome plugin:
sudo apt install chrome-gnome-shell
I also had to have this extension from the Chrome Store. Actually, I just restored my Chrome profile so the extension came with that.
So, then, these are the extensions that I like:
- Keep Awake: keeps computer from going to sleep (I’m going back this now that it is working because I really liked it)
- Bing Wallpaper: automatically sets the desktop background to the Bing image of the day
- Clipboard Indicator: clipboard manager allowing you to access copy/paste history
- GSConnect: integration to my Android phone
- Notification Alert: flashes clock to make sure I don’t miss notifications
- Sound and Input Device Chooser: makes selecting the output device for sound easier
- Compiz alike Windows Affect: brings back the old Wobbly Windows!
I retired these two extensions. I list them because maybe I’ll go back:
- Caffeine: the tool I used to use stop the computer from going to sleep
- Do Not Disturb Button: I used to use this for hiding notifications during meetings. It’s no longer maintained.
I’ve had issues with old versions of Gimp and collaborating with others . According to Gimp’s website, 2.10.24 is the latest version. Gimp came installed as a snap and it is actually the latest version. So, I left it alone.
sudo apt install inkscape \ xournal
- Inkscape: My go to program for drawing (vector-based drawing)
- Xournal: I use it for annotating PDFs
These are the programs I use with audio:
sudo apt install audacity \ soundconverter \ musescore3 \ easytag
- Audacity: good for editing sound
- soundconverter: good for changing sound formats
- Musescore: good for working with sheet music
- Easytag: good for changing the files’ meta-data
These are the basic programs I like:
sudo apt install mplayer \ vlc \ youtube-dl
- mplayer: simple video player
- vlc: good player that will play about anything
- youtube-dl: makes it easy to download things from YouTube
For the codecs, I installed:
sudo apt install \ libdvdnav4 \ libdvd-pkg \ gstreamer1.0-plugins-bad \ gstreamer1.0-plugins-ugly \ ubuntu-restricted-extras sudo dpkg-reconfigure libdvd-pkg
Note: If you forget that second (reconfigure) command, you’ll get errors like this every apt install:
apt-get checkfailed, you may have broken packages. Aborting… N: Download is performed unsandboxed as root as file '/home/skp/Downloads/insync_22.214.171.124983-focal_amd64.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)
For OBS, I repeated what I did on the last version of Ubuntu:
sudo apt install ffmpeg sudo add-apt-repository ppa:obsproject/obs-studio sudo apt install obs-studio
I found most of the plugins and such came over by restoring the config directory. One thing I did have to do was download the plugin from Dev47Apps and put it into ~/.config/obs-studio/plugins
Finally, I use Kdenlive for editing videos. I just downloaded the AppImage from their download page.
I started a quick app to try to organize a group of photos, which I intend to turn into a video. The problem is that I have a bunch of videos in the batch as well that I need to review. I thought I could get the video to work inside my app, but long story short, I wasn’t able to figure it out. I don’t think video is supported on the Linux platform. Maybe if I was working on Android, it would be a different story.
Anyway, maybe some of my notes will be helpful if you are trying things similar.
I happened upon an article listing open source projects that mentioned Supabase. They described it as an alternative to Firebase, and that caught my attention. Not too long after, I had a bunch of pictures to organize, so I thought I’d give it a try for that project.
Here are my notes on getting the project started.
OneNote works great for the most part. I use(d) it on Linux through the browser and on Android. But, I just can’t rely on it:
Sometimes, I’ll get this message:
I can refresh the browser page, and it’ll go away, but it seems to just get worse and worse. It’s frustrating. I’ve finally reached the point that it is time to look for something else.
I ran across Joplin. It has an Android app that will synchronize, and it also allows pasting screenshots. Those were my two big feature requests in a note-taking app.
I’ve been wanting to level up my meeting look and sound for a while. I’ve been hearing about how you can output OBS Studio as a virtual camera so that you can use it as your webcam in Microsoft Teams. So, here are my notes on how I set it all up.
Installing Virtual Camera
First, I Installed the loopback camera module from the Ubuntu repository:
sudo apt install v4l2loopback-dkms
Originally, I had some issues with the plugin installation, so I might have taken a few extra steps here. But, it works, so I don’t have any complaints.
To make it automatically load on boot, I added this line to the end of /etc/modules:
sudo bash -c 'echo v4l2loopback >> /etc/modules'
Then, I added this line to the modprobe conf file:
sudo bash -c 'echo options v4l2loopback video_nr=5 card_label="vcam" > /etc/modprobe.d/v4l2.conf'
Finally, to use it the first time (without having to reboot), I ran the modprobe command. I’m not sure if this was necessary.
sudo modprobe v4l2loopback
Now, the OBS plugin makes starting and stopping the stream easier. I downloaded the plugin deb package from the github release page. Then, I installed the deb from the commandline:
sudo apt install ~/Downloads/obs-v4l2sink.deb
For some reason, the Deb package apparently places the files in the wrong place. I copied the files into my user plugins directory (which I had to create first).
cd ~/.config/obs-studio mkdir plugins cd plugins cp -r /usr/share/obs/obs-plugins/v4l2sink/ .
mkdir -p $HOME/.config/obs-studio/plugins/v4l2sink/bin/64bit
cp /usr/lib/obs-plugins/v4l2sink.so $HOME/.config/obs-studio/plugins/v4l2sink/bin/64bit
After that, the plugin shows up in the tools menu.
On my new setup, I have my laptop off to the side. That means that the webcam built into the laptop isn’t in the best position. Instead, I’d like to use the camera on my phone as the camera for the meeting. The best way I found is with the DroidCam app/plugin.
First, I installed the app on my phone. it’s DroidCam on the play store.
I downloaded the plugin from Dev47Apps. I extracted the zip file to $HOME/.config/obs-studio/plugins
After installing, you can add a “DroidCam OBS” source to your scene.
To make it work, I opened two different instances of OBS. The bottom is for the webcam, and the top is for desktop sharing.
On the bottom one, I opened a Windowed projector. I right clicked on the preview, and selected “Windowed Projector”.
Then, in the top window, I was able to add a “Window Capture” source.
Then, I started the virtual camera on the bottom window so that Teams could use that one. You can find it in the menu at Tools > v4l2loopback.
You just have to hit Start and then you can close this window.
Finally, in the Teams device settings, I selected “vcam” as my Camera device. That pulls in the output from OBS:
Lastly, Teams has not given me the option to share a single window. It only allows me to select one of my desktops. So, I can use the top OBS window to control what shows. I just output that OBS on my 3rd screen that I can share on the Teams call. I can do that by right clicking on the preview window and selecting Fullscreen Projector (Preview) > Display 3.
I installed Youtube-dl on my new Ubuntu 20.10, but I failed to test it. On my first download, it didn’t work. I got this:
$ youtube-dl https://www.youtube.com/watch?v=NAa088SDn9E NAa088SDn9E: Downloading webpage NAa088SDn9E: Downloading embed webpage ERROR: Unable to extract JS player URL; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.