{"id":13844942,"url":"https://github.com/akalongman/ubuntu-configuration","last_synced_at":"2025-07-27T10:34:45.038Z","repository":{"id":145457088,"uuid":"51003238","full_name":"akalongman/ubuntu-configuration","owner":"akalongman","description":"Configuration of Debian based OS, such as: Ubuntu, Mint, and Elementary OS","archived":false,"fork":false,"pushed_at":"2024-08-15T11:21:23.000Z","size":1229,"stargazers_count":153,"open_issues_count":0,"forks_count":26,"subscribers_count":11,"default_branch":"24.04","last_synced_at":"2025-03-14T23:44:12.645Z","etag":null,"topics":["configuration","debian","mint","os","settings","ubuntu","ubuntu-1510","ubuntu-1604","ubuntu-configuration","unity"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akalongman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-02-03T14:01:00.000Z","updated_at":"2024-12-30T22:22:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"d21872c1-67dd-4608-955b-ea1d25213a4b","html_url":"https://github.com/akalongman/ubuntu-configuration","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akalongman%2Fubuntu-configuration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akalongman%2Fubuntu-configuration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akalongman%2Fubuntu-configuration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akalongman%2Fubuntu-configuration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akalongman","download_url":"https://codeload.github.com/akalongman/ubuntu-configuration/tar.gz/refs/heads/24.04","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244039206,"owners_count":20387834,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["configuration","debian","mint","os","settings","ubuntu","ubuntu-1510","ubuntu-1604","ubuntu-configuration","unity"],"created_at":"2024-08-04T17:03:03.905Z","updated_at":"2025-03-17T13:10:55.019Z","avatar_url":"https://github.com/akalongman.png","language":"Shell","funding_links":[],"categories":["Shell","Shell (473)"],"sub_categories":[],"readme":"# Configuration of Ubuntu 24.04 LTS (Noble Numbat)\n\nThis guide is for [Ubuntu](http://ubuntu.com/desktop), but also compatible with a other __Debian__ based OS as well, like [Mint](http://www.linuxmint.com/), [Elementary OS](http://elementaryos.org/), etc.\n\nThere are configurations for other versions such as [20.04](tree/20.04), [18.04](tree/18.04), [16.04](tree/16.04), [15.10](tree/15.10)\n\nAll commands/configurations are tested (I am currently use this configuration), but anyway, everything you do is \"at your own risk\".\n\nIf you found any issue, please let me know on [Issues Page](https://github.com/akalongman/ubuntu-configuration/issues) or via email akalongman@gmail.com\n\n***\n\n# Table of Contents\n- [Optional Configurations](#optional-configurations)\n    - [Get System Details](#get-system-details)\n        - [Operating System](#operating-system)\n        - [CPU Info](#cpu-info)\n        - [VGA Info](#vga-info)\n        - [Motherboard Info](#motherboard-info)\n        - [BIOS Info](#bios-info)\n        - [Memory and Usage Info](#memory-and-usage-info)\n        - [Disks](#disks)\n        - [GUI Processes](#gui-processes)\n        - [Startup Times](#startup-times) (Find out the Culprit of a Slow Boot)\n        - [Packages](#packages)\n        - [Other Commands](#other-commands)\n            - [Screenshots](#screenshots)\n            - [Print Power Consumption in Watts](#print-power-consumption-in-watts)\n    - [List all KeyBindings](#list-all-keybindings)\n    - [Use 32Bit on 64bit](#use-32bit-on-64bit)\n    - [Networking](#networking)\n    - [Order of Grub](#order-of-grub)\n    - [Mounting Drives](#mounting-drives)\n        - [Mounting of Local Drives](#mounting-of-local-drives)\n        - [Mounting of Network Drives](#mounting-of-network-drives)\n        - [Mounting Amazon Cloud Drive](#mounting-amazon-cloud-drive)\n    - [SSH](#ssh)\n        - [Generate a New SSH Key](#generate-a-new-ssh-key)\n        - [Connecting to a Host](#connecting-to-a-host)\n        - [.ssh Folder Permissions](#ssh-folder-permissions)\n        - [Using the Config File](#using-the-config-file)\n        - [Convert SSH to PEM](#convert-ssh-to-pem)\n    - [GPG](#gpg)\n        - [Generate a New GPG Key](#generate-a-new-gpg-key)\n        - [Generate ASCII Armored Version of Public Key](#generate-ascii-armored-version-of-public-key)\n        - [Uploading The Key to Ubuntu Keyserver](#uploading-the-key-to-ubuntu-keyserver)\n        - [Signing Git Commits Using GPG](#signing-git-commits-using-gpg)\n        - [Backup The GPG Key](#backup-the-gpg-key)\n        - [Restore The GPG Key](#restore-the-gpg-key)\n    - [Enable Native Virtualization](#enable-native-virtualization)\n    - [Format USB](#format-usb)\n    - [Write iso Image to USB](#write-iso-image-to-usb)\n    - [Convert .ISO to .IMG format](#convert-iso-to-img-format)\n    - [Add Printers](#add-printers)\n        - [HP](#hp)\n    - [Update BIOS on Laptop/PC](#update-bios-on-laptoppc)\n        - [Lenovo](#update-bios-on-lenovo)\n    - [Sniff Local Traffic](#sniff-local-traffic)\n    - [Play Sound Through Multiple Outputs](#play-sound-through-multiple-outputs)\n    - [Terminal Prompt Customization](#terminal-prompt-customization)\n    - [Set CPU Governor to Performance](#set-cpu-governor-to-performance)\n    - [Run Script on System Startup](#run-script-on-system-startup)\n    - [Manage Swap](#manage-swap)\n    - [Install Fonts](#install-fonts)\n- [Installation Packages](#installation-packages)\n    - [Enable PPAs](#enable-ppas)\n    - [Flatpak](#flatpak)\n    - [System Tools](#system-tools)\n        - [Install Nvidia Drivers](#install-nvidia-drivers) (Install drivers from official repository for Nvidia Drivers)\n        - [Install Nvidia Cuda Toolkit](#install-nvidia-cuda-toolkit) (Install CUDA toolkit from official repository for Nvidia)\n        - [Install ATI Drivers](#install-ati-drivers)\n        - [Utilities](#utilities)\n        - [Dark Theme](#dark-theme)\n        - [Oracle Java](#oracle-java)\n        - [Wine](#wine) (Windows emulator) (Run Microsoft® Windows® applications on linux)\n        - [Nautilus-Actions](#nautilus-actions) (Graphically create custom context menu options for Ubuntu's Nautilus file manager)\n        - [Hardinfo](#hardinfo) (Everest/Aida alternative for linux)\n        - [Caffeine](#caffeine) (Prevent the activation of the screensaver when using full-screen windows)\n        - [GNU Screen](#gnu-screen) (Full-screen window manager that multiplexes a physical terminal between several processes)\n        - [Neofetch](#neofetch) (A fast, highly customizable system info script)\n        - [GParted](#gparted) (Partition editor for graphically managing disk partitions)\n        - [Firewall](#firewall)\n            - [UFW](#ufw)\n            - [GUFW](#gufw)\n        - [Geekbench](#geekbench) (Geekbench 5 is a cross-platform benchmark that measures your system's performance with the press of a button)\n        - [Clonezilla](#clonezilla) (Clonezilla is a partition and disk imaging/cloning program. It helps you to do system deployment, bare metal backup and recovery.)\n        - [Screen Testing Soft](#screen-testing-soft) (This is a program for testing the quality of CRT/LCD screens. It displays various patterns and allows you to estimate the quality of your CRT/LCD monitor.)\n        - [Ventoy](#ventoy) (Open source tool to create bootable USB drive for ISO/WIM/IMG/VHD(x)/EFI files. You can copy many files at a time and ventoy will give you a boot menu to select them.)\n    - [Other Tools](#other-tools)\n        - [Google Chrome](#google-chrome)\n        - [Firefox](#firefox)\n        - [PlayOnLinux](#playonlinux) (Software which using wine allows you to easily install and use numerous games and apps designed to run with Microsoft® Windows®)\n        - [Dropbox](#dropbox) (Allows users to create a special folder on their computers, which Dropbox then synchronizes so that it appears to be the same folder (with the same contents) regardless of which device is used to view it)\n        - [Sublime Text 3](#sublime-text-3) (A sophisticated text editor for code, markup and prose)\n        - [Pidgin](#pidgin)\n        - [DBeaver](#dbeaver) (Database management tool)\n        - [VirtualBox](#virtualbox)\n        - [Android Studio](#android-studio)\n        - [SmartGit](#smart-git)\n        - [FileZilla](#filezilla) (sFTP Client)\n        - [Spotify](#spotify)\n        - [Meld Diff Tool](#meld-diff-tool)\n        - [Vagrant](#vagrant)\n        - [Docker](#docker)\n        - [Audacious Audio Player](#audacious-audio-player)\n        - [XnViewMP](#xnviewmp) (Powerful cross-platform media browser, viewer and converter)\n        - [Sticky Notes](#sticky-notes)\n        - [Guake](#guake) (Quake like Terminal)\n        - [Skype](#skype)\n        - [Telegram](#telegram)\n        - [Slack](#slack)\n        - [Viber](#viber)\n        - [Gimp](#gimp)\n        - [VLC Player](#vlc-player)\n        - [KDEnlive Video Editor](#kdenlive-video-editor)\n        - [Httpie](#httpie) (Terminal HTTP client)\n        - [Peek](#peek) (Simple animated GIF screen recorder with an easy to use interface)\n        - [OBS](#obs) (Video recording and live streaming)\n        - [USB Maker for Windows ISO on Linux](#usb-maker-for-windows-iso-on-linux)\n        - [StarUML](#staruml) (A sophisticated software modeler for agile and concise modeling)\n        - [Gramps](#gramps) (A geneological tree manager)\n        - [uGet](#uget) (A download manager)\n        - [Xournal](#xournal) (Xournal is a GUI application primarily developed for note-taking, sketching use case and PDF editing)\n        - [Transmission](#transmission) (A Fast, Easy and Free Bittorrent Client For macOS, Windows and Linux)\n        - [Timeshift](#timeshift) (Timeshift for Linux is an application that provides functionality similar to the System Restore feature in Windows and the Time Machine tool in Mac OS)\n        - [LibreOffice](#libreOffice) (LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice))\n    - [Development](#development)\n        - [LAMP](#lamp)\n            - [PHP](#php)\n                - [PHP 5.6](#php-56)\n                - [PHP 7.0](#php-70)\n                - [PHP 7.4](#php-74)\n                - [PHP 8.0](#php-80)\n                - [PHP 8.1](#php-81)\n                - [PHP 8.2](#php-82)\n                - [Switch PHP Versions](#switch-php-versions)\n            - [Composer](#composer)\n            - [PHPUnit](#phpunit)\n            - [Apache](#apache)\n                - [Installation](#apache-installation)\n                - [Enable php-mcrypt](#apache-enable-php-mcrypt)\n                - [Configure Dynamic Virtualhosts](#apache-configure-dynamic-virtualhosts)\n                - [Configure SSL for Dynamic Virtualhosts](#apache-configure-ssl-for-dynamic-virtualhosts)\n            - [Nginx](#nginx)\n            - [Generate SSL certificates for local domains](#generate-ssl-certificates-for-local-domains)\n            - [MySQL](#mysql)\n            - [Percona Toolkit](#percona-toolkit)\n            - [MyCLI](#mycli) Terminal MySQL Utility\n            - [PostgreSQL](#postgresql)\n            - [Memcached](#Memcached)\n            - [Redis](#redis)\n                - [Multiple Redis Instances](#multiple-redis-instances)\n            - [ELK Stack](#elk-stack) Elasticsearch, Logstash, and Kibana\n            - [Letsencrypt](#letsencrypt)\n            - [Phalcon](#phalcon)\n            - [Phalcon Dev Tools](#phalcon-dev-tools)\n            - [Secure Permissions](#secure-permissions)\n        - [Python](#python)\n            - [Virtualenv](#virtualenv)\n        - [Go](#go)\n        - [Ruby](#ruby)\n        - [NodeJS](#nodejs)\n        - [Yarn](#yarn)\n        - [Ansible](#ansible)\n    - [Gaming](#gaming)\n        - [Steam](#steam) (Ultimate entertainment platform)\n        - [PCSXR](#pcsxr) (PlayStation 1 Emulator)\n- [Customizations](#customizations)\n    - [System Tweaks](#system-tweaks)\n        - [Increase Inotify Watches Limit](#increase-inotify-watches-limit)\n        - [Disable Git Certificate Verification](#disable-git-certificate-verification)\n    - [Shortcuts](#shortcuts)\n    - [VIM Customization](#vim-customization)\n    - [Add Georgian Keyboard](#add-georgian-keyboard)\n    - [Touchpad Settings](#touchpad-settings)\n        - [Change Scroll Speed](#change-scroll-speed)\n- [Ubuntu Fixes](#ubuntu-fixes)\n    - [Ubuntu Infinite Login](#ubuntu-infinite-login)\n    - [PCI Device Is Not Recognized Correctly](#pci-device-is-not-recognized-correctly)\n    - [Restore Screen Brightness and Keyboard backlit on Reboot](#restore-screen-brightness-and-keyboard-backlit-on-reboot)\n    - [Disable UEFI Choice Screen](#disable-uefi-choice-screen)\n    - [Disable Enhanced Tailing](#disable-enhanced-tailing)\n- [GUI](#gui)\n    - [Move Dock To Bottom](#move-dock-to-bottom)\n    - [Easy Window Resize](#easy-window-resize)\n    - [Left or Right Close Buttons](#left-or-right-close-buttons)\n    - [Fix Gnome Lockscreen](#fix-gnome-lockscreen)\n    - [Gnome Extensions](#gnome-extensions)\n    - [Reload Gnome Freeze](#reload-gnome-freeze)\n    - [Create Desktop Launcher](create-desktop-launcher)\n- [Virtual Machine Related](#virtual-machine-related)\n    - [Fix Mouse Side Buttons in VMWare](#fix-mouse-side-buttons-in-vmware)\n    - [Vagrant VBGuest Fix](#vagrant-vbguest-fix)\n    - [Windows 8 VirtualBox Fix](#windows-8-virtualbox-fix)\n- [Synchronize Configurations](#synchronize-configurations)\n    - [Sync Sublime Text](#sync-sublime-text)\n    - [Sync FileZilla](#sync-filezilla)\n- [Chrome Addons](#chrome-addons)\n- [Other Applications](#other-applications)\n- [Clean System](#clean-system)\n\n***\n\n[(Back to top)](#table-of-contents)\n\n# Optional Configurations\n\n### Get System Details\n\n#### Operating System\n\n    lsb_release -a\n    lsb_release -as     # Short Information\n    lsb_release -sc     # OS Codename\n    lsb_release --help\n\n#### CPU Info\n\n    sudo dmidecode -t processor\n    \nOr\n\n    nproc               # How many Processing Units\n    cpuid               # Must install cpuid from terminal\n    cat /proc/cpuinfo   # Lots of info\n\n#### VGA Info\n\n    sudo lshw -C display\n\n#### Motherboard Info\n\n    sudo dmidecode -t baseboard\n\n#### BIOS Info\n\n    sudo dmidecode -t bios\n\n#### Memory and Usage Info\n\n    free -h             # Human readable, or do --help for options\n    top or htop         # Must install htop\n    vmstat -s\n    cat /proc/meminfo   # Lots of info\n\n#### Disks\nDisk Space\n\n    df\n    df -B MB    # In Megabtyes,  etc\n\nOr install `ncdu` and run \n\n    ncdu /\n\nDisk Space Analyzer\n\n    sudo baobab\n\nDisks UUID\n\n    ls -al /dev/disk/by-uuid/\n\n#### GUI Processes\n\n    gnome-system-monitor\n\n#### Startup Times\nYou can find out which service takes how much time to finish \nstarting up by entering the following command in terminal:\n\n    systemd-analyze blame\n\nOverall startup time you can find via:\n\n    systemd-analyze time\n\n#### Packages\n\nList all installed Packages\n\n    dpkg -l\n\nList only packages which were expressly installed\n\n    aptitude search '~i!~M'\n\n#### Other Commands\n\n##### Screenshots\nTo taking screenshot from terminal run this:\n\n    gnome-screenshot\n\nWith delay 5 seconds\n\n    gnome-screenshot --delay 5\n\nWith delay 5 seconds and only window\n\n    gnome-screenshot -w --delay 5\n\nFor changing default save directory for gnome-screenshot, use the command\n\n    gsettings set org.gnome.gnome-screenshot auto-save-directory \"file:///home/$USER/Pictures/\"\n\n##### Print power consumption in watts\n\n    awk '{print $1*10^-6 \" W\"}' /sys/class/power_supply/BAT0/power_now\n\nAlso, you can install `powertop` for listing consumption per process.\n\n    sudo apt install powertop\n\nYou might need calibrate `powertop` before first use. For calibrate, run:\n\n    sudo powertop --calibrate\n\n## List all Keybindings\n\n    gsettings list-recursively  org.gnome.desktop.wm.keybindings | sort | more\n\nSee your keypressed:\n\n    xev\n\nOr for a lot of details:\n\n    xev | grep KeyPress\n\n## Use 32Bit on 64bit\n\nYou can use 32Bit applications if you like, sometimes this is useful.\n\n    sudo apt update \u0026\u0026 sudo apt install -y unetbootin\n\n## Networking\n\nTo enable Networking, and make it accessible to all computers such as Windows also, first install Samba:\n\n    $ sudo apt install -y samba\n\nThen edit the Samba config:\n\n    $ vim /etc/samba/smb.conf\n\nUnder `[global]` change the workgroup to what you use, the default is WORKGROUP:\n\n    workgroup = WORKGROUP\n\nThen you will have to reload your Session.\n\n## Order of Grub\nIf you are running Grub as your default boot-loader, you can use this application to make it easier to change the order.\n\n    sudo add-apt-repository -y ppa:danielrichter2007/grub-customizer\n    sudo apt update \u0026\u0026 sudo apt install -y grub-customizer\n\nLoad the application either with `\u003cSuper\u003e` and look for grub customizer or terminal `gksudo grub-customizer`.\n\nGo to the `General Settings` tab, and you'll see *default entry*.\n\n- Click the drop-down list and you can either select Entry By Order (Left Column) Or a specific Item (Right Column).\n- If you are dual booting Windows and want Windows the default, Select the right column for Windows.\n- The reason is if more items are added, perhaps new kernels, then if Position 5 which held Windows will no longer be the default.\n\n## Mounting Drives\n\n### Mounting of Local Drives\n\nOpen /etc/fstab\n\n    sudo vim /etc/fstab\n\nAdd to /etc/fstab this line (You can get DISK UUID by command ```ls -al /dev/disk/by-uuid/```):\n\nFor NTFS disk:\n\n    UUID=[DISK UUID] /media/D ntfs-3g defaults,windows_names,locale=en_US.utf8 0 2\n\nFor ext4 disk:\n\n    UUID=[DISK UUID] /media/D ext4 defaults 0 2\n\nAfter run\n\n    sudo mount -a\n\n### Mounting of Network Drives\n\nOpen /etc/fstab\n\n    sudo vim /etc/fstab\n\nAnd add:\n\nIf requires authorization:\n\n    username@remote_address:/remote/path /local/path fuse.sshfs delay_connect,_netdev,idmap=user,uid=1000,gid=1000,noatime,default_permissions,IdentityFile=/home/\u003cuser\u003e/.ssh/id_rsa,reconnect,transform_symlinks,allow_other 0 0\n\nIf not requires:\n\n    //remote_address/remote/path /local/path cifs guest,iocharset=utf8,uid=1000,gid=1000,file_mode=0777,dir_mode=0777,noperm,_netdev 0 0\n\nAfter run\n\n    sudo mount -a\n\n\n### Mounting Amazon Cloud Drive\n\n\nInstall Prerequisites\n\n    sudo apt install -y python3 python3-appdirs python3-dateutil python3-requests python3-sqlalchemy python3-pip\n\nInstall acd_cli (https://github.com/yadayada/acd_cli)\n\n    cd ~ \u0026\u0026 sudo pip3 install --upgrade git+https://github.com/yadayada/acd_cli.git\n\nInitiate \"sync\" which will launch a browser (chrome/lynx/etc) to amazon.com and setup your oauth key.\n\n    acd_cli sync\n\nCopy/Paste and store your oauth data.\nNote: it will most likely have improper newline breaks. Fixup in your favorite text editor.\n\n    vim ~/.cache/acd_cli/oauth_data\n\nAdd your user to the \"fuse\" group to allow mounting\n\n    sudo addgroup \u003cusername\u003e fuse\n\nMount the root of your Amazon Cloud drive to the /media/amazon directory\n\n    mkdir /media/amazon\n    acd_cli mount /media/amazon\n\nUpload\n\n    -d     exclude duplicate files from upload\n    -x     upload threads\n\ne.g. Upload your local /media/videos directory to the root of your Amazon Cloud Drive.\n\n    acd_cli upload -d -x 4 /media/videos /\n\n\n## SSH\n\n### Generate a New SSH Key\n\n    ssh-keygen -t rsa -C \"your_email@example.com\"\n\n### Connecting to a Host\n\n    ssh user@host.com  (default port is 22)\n    ssh user@host.com -p 8000 (connect to specific port)\n    ssh user@host.com -i ~/.ssh/id_rsa (connect with specific ssh key)\n\n### .ssh Folder Permissions\n\n    chmod 700 ~/.ssh\n    chmod 644 ~/.ssh/id_rsa.pub\n    chmod 600 ~/.ssh/id_rsa\n    chmod 600 ~/.ssh/known_hosts\n    chmod 600 ~/.ssh/authorized_keys\n\n### Using the Config File\n\nYou can also create a ~/.ssh/config file and store entries such as:\n\n    Host aws\n    Hostname host.amazonaws.com\n    Port 22\n    Identityfile ~/.ssh/id_rsa\n    User myusername\n    \n    Host my-vps\n    Hostname 34.16.67.129\n    Port 22\n    User root\n   \nYou can then simply type:\n    \n    ssh aws\n    ssh my-vps\n\n### Convert SSH to PEM\n\nSometimes you may need a PEM format SSH Key. You can easily add this alongside your other SSH keys.\n\n    openssl rsa -in ~/.ssh/keyname_rsa -outform pem \u003e keyname_rsa.pem\n    chmod 700 keyname_rsa.pem\n\n\n## GPG\n\n### Generate a New GPG Key\n\nOpen a terminal and type:\n\n    gpg --gen-key\n    \nGPG will now ask you a number of questions about the type of key you want to generate. \nFollow the steps below to select the default option each time.    \n    \nCheck that your key has been generated by typing \n\n    gpg --list-secret-keys --keyid-format LONG\n    \nand, if successful  \n    \n    /Users/hubot/.gnupg/secring.gpg\n    ------------------------------------\n    sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]\n    uid                          Hubot \n    ssb   4096R/42B317FD4BA89E7A 2016-03-10\n \nAdd variables in your .bashrc\n \n    export GPGKEY=3AA5C34371567BD2\n     \n### Generate ASCII Armored Version of Public Key    \n     \n    gpg --output gpg.asc --export -a $GPGKEY\n\n### Uploading The Key to Ubuntu Keyserver\n\n    gpg --send-keys --keyserver keyserver.ubuntu.com $GPGKEY\n    \nYou can check your keys on the http://keyserver.ubuntu.com/    \n    \n### Signing Git Commits Using GPG\n\nTo configure your Git client to sign commits by default for a local repository, in Git versions 2.0.0 and above, run \n\n    git config --global user.signingkey {YOUR KEY}\n\n    git config commit.gpgsign true\n    \nTo sign all commits by default in any local repository on your computer, run \n\n    git config --global commit.gpgsign true\n\nIf you want sign one commit manually:\n\n    git commit -S -m \"commit message\"\n\nIf you want to use GUI clients for committing, you have to add some options to your `~/.gnupg/gpg.conf` file\n\n    no-tty\n    use-agent\n\n### Backup The GPG Key\n\n    cp ~/.gnupg/pubring.gpg /path/to/backups/\n    cp ~/.gnupg/secring.gpg /path/to/backups/\n    cp ~/.gnupg/trustdb.gpg /path/to/backups/\n    # or, instead of backing up trustdb...\n    gpg --export-ownertrust \u003e ownertrust-gpg.txt\n    \n### Restore The GPG Key\n\n    cp /path/to/backups/*.gpg ~/.gnupg/\n    # or, if you exported the ownertrust\n    gpg --import-ownertrust ownertrust-gpg.txt\n\nIf you just copy-pasted the .gnupg folder, you should register keys:\n\n    gpg --import pubring.gpg\n    gpg --import secring.gpg\n\n## Enable Native Virtualization\n\nCheck if supported by hardware\n\n    egrep -c '(vmx|svm)' /proc/cpuinfo\n\nIf 0 it means that your CPU doesn't support hardware virtualization.\n\nIf 1 or more it does - but you still need to make sure that virtualization is enabled in the BIOS.\n\nTo check if enabled, you may execute:\n\n    kvm-ok \n\nIf you have KVM, you will see: \"INFO: Your CPU supports KVM extensions INFO: /dev/kvm exists KVM acceleration can be used\"\n\nInstall Necessary Packages\n\n    sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils\n\nIf you got an error: libdvd-pkg: `apt-get check` failed, you may have broken packages. Aborting...\n\nYou have to run `sudo dpkg-reconfigure libdvd-pkg` and try again.\n\nNext, add your user to the KVM group and libvirtd group. To do so, type:\n\n    sudo adduser `id -un` libvirt\n    sudo adduser `id -un` kvm\n\nVerify Installation:\n\n    virsh list --all\n\n## Format USB\n\nEnter sudo mode\n\n    sudo su\n\nList available disks and detect where it was mounted: /dev/sd[1 letter][optionally 1 number]. For example, /dev/sdc or /dev/sdc1\n\n    fdisk -l\n\nor\n\n    lsblk\n\nUnmount drive\n\n    umount /dev/sd[1 letter][optionally 1 number]\n\n\nFormat to FAT32\n\n    mkfs.vfat /dev/sd[1 letter]\n\nYou can use mkfs.ntfs for NTFS, mkfs.ext4 for EXT4 etc.\n\nEject drive\n\n    eject /dev/sd[1 letter]\n\n\n## Write iso Image to USB\n\nList available disks and detect where it was mounted: /dev/sd[1 letter][optionally 1 number]. For example, /dev/sdc or /dev/sdc1\n\n    fdisk -l\n\nor\n\n    lsblk\n\nIf you want write Windows ISO on the USB, use this method: [USB Maker for Windows ISO on Linux](#usb-maker-for-windows-iso-on-linux)\n\nMake sure the USB device is unmounted (not safely removed, but unmounted) If it is mounted you can unmount it:\n\n    sudo umount /dev/sd[1 letter][optionally 1 number]\n\nFor writing image run:\n\n    sudo dd bs=4M if=path/to/your/iso/file.iso of=/dev/sd[that 1 letter]\n\n\n## Convert .ISO to .IMG format\n\nInstall the `genisoimage`\n\n    sudo apt install -y genisoimage\n\nAnd after run\n\n    geteltorito -o dest.img source.iso\n\n\n## Add Printers\n\n### HP\n\nYou must install HPLIP software. Read more on https://developers.hp.com/hp-linux-imaging-and-printing\n\n    sudo apt install hplip hplip-gui\n\nFind installed HP application and run.\n\n## Update BIOS on Laptop/PC\n\nYou can see BIOS version via [BIOS Info](#bios-info) command\n\n### Update BIOS on Lenovo\n\nInstall genisoimage via `sudo apt install genisoimage`\n\n1. Go to support.lenovo.com (or better use a search engine because the Lenovo website is ugly) \nand search for the BIOS upgrade of your laptop model.\n\n2. Download the most recent ISO file. Look for \"BIOS bootable update CD\".\n\n3. Convert the ISO image to IMG format via `genisoimage -o bios.img g2uj18us.iso` [Convert .ISO to .IMG format](#convert-iso-to-img-format)\n\n4. Insert any USB stick into your laptop. The image file is just ~50 MB in size so even USB sticks with low capacity will work. \nKeep in mind that the stick will be completely overwritten.\n\n5. If you are in a graphical environment then unmount the USB stick.\n\n6. Find out the device name of the stick. For example `/dev/sdb` (show devices via `sudo fdisk -l`). \nDon't just assume it's sdb. If it's on another device on your laptop then you will destroy your data.\n\n7. Copy the image to the USB stick: `sudo dd if=bios.img of=/dev/sdb bs=1M`\n\n8. Reboot your laptop and press F12 for booting device from your stick.\n\n9. Make sure your laptop has its power supply plugged in. (It will refuse to update otherwise.)\n\n10. Follow the instructions.\n\n## Sniff Local Traffic\nBetterCAP is a powerful, flexible and portable tool created to perform various types of MITM attacks against a network, \nmanipulate HTTP, HTTPS and TCP traffic in realtime, sniff for credentials and much more. \nFull documentation https://www.bettercap.org\n\nInstall dependencies\n\n    sudo apt install -y build-essential ruby-dev libpcap-dev\n\nAnd install BetterCAP\n\n    sudo gem install bettercap\n\nYou can run sniffing via\n\n    sudo bettercap --sniffer\n\n    \n## Play Sound Through Multiple Outputs\nInstall `paprefs` package\n\n    sudo apt install -y paprefs\n\nGo to the `PulseAudio Preferences` and on the `Simultaneous Output` tab check `Add virtual output device for simultaneous output on all local sound cards`\n\nAfter that restart pulseaudio\n\n    pulseaudio -k\n\nThen go to your sound settings and you will see the option to output to multiple sound devices.\n\n## Terminal Prompt Customization\nPut the file [ps.sh](os/etc/profile.d/ps.sh) under `/etc/profile.d` directory.\n\nIn the ~/.bashrc and /root/.bashrc files add line:\n\n    source /etc/profile.d/ps.sh\n\n## Set CPU Governor to Performance\n\nInstall `cpufrequtils` and set governor\n\n    sudo apt install -y cpufrequtils\n    echo 'GOVERNOR=\"performance\"' | sudo tee /etc/default/cpufrequtils\n    sudo systemctl restart cpufrequtils\n\nDisable default ondemand governor:\n\n    sudo systemctl disable ondemand\n\nYou can check governor via \n\n    cpufreq-info\n\nOr:\n\n    cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor\n\n## Run Script on System Startup\n\nThe below steps will show you to run an example bash script which reports disk space usage of the `/home` directory and saves the report in the `/root` directory every time the Ubuntu system boots.\n\nCreate shell script in `/usr/local/bin/` to run on startup.\n\n    vim /usr/local/bin/disk-space-check.sh\n\nThe below is an example of such script:\n\n```bash\n#!/bin/bash\n\ndate \u003e /root/disk_space_report.txt\ndu -sh /home/ \u003e\u003e /root/disk_space_report.txt\n```\n\nCreate Systemd service file under `/etc/systemd/system/` folder.\n\n    sudo vim /etc/systemd/system/disk-space-check.service\n\nAnd put the content:\n\n```\n[Unit]\nAfter=network.service\n\n[Service]\nExecStart=/usr/local/bin/disk-space-check.sh\n\n[Install]\nWantedBy=multi-user.target\n```\n\nSet proper permissions:\n\n    sudo chmod 744 /usr/local/bin/disk-space-check.sh\n    sudo chmod 664 /etc/systemd/system/disk-space-check.service\n\nEnable the service unit:\n\n    sudo systemctl daemon-reload\n    sudo systemctl enable disk-space-check.service\n\nSystemd helpful commands:\n\n- `systemctl list-units --type=service` List existing services\n- `systemctl list-units --type=target` List possible targets\n- `systemctl list-dependencies \u003cname\u003e.target` List dependencies for \u003ctarget\u003e\n\n\n## Manage Swap\n\nFor more modern systems (\u003e1GB), your swap space should be at a minimum be equal to your physical memory (RAM) size \"if you use hibernation\", \notherwise you need a minimum of round(sqrt(RAM)) and a maximum of twice the amount of RAM. The only downside to having more swap space than you will actually use, \nis the disk space you will be reserving for it. More you can read [here](https://help.ubuntu.com/community/SwapFaq).\n\nCheck swap\n\n    cat /proc/swaps\n\nThe swappiness parameter controls the tendency of the kernel to move processes out of physical memory and onto the swap disk. \nBecause disks are much slower than RAM, this can lead to slower response times for system and applications if processes are too aggressively moved out of memory.\n\nThe default setting in Ubuntu is swappiness=60. Reducing the default value of swappiness will probably improve overall performance for a typical Ubuntu desktop installation. \nA value of swappiness=10 is recommended, but feel free to experiment.\n\nTo check the swappiness value\n\n    cat /proc/sys/vm/swappiness\n\nTo change the swappiness value with a swappiness value of 10 can be made with\n\n    sudo vim /etc/sysctl.conf\n\nAnd add/edit line\n\n    vm.swappiness=10\n\n## Install Fonts\n\nAssume you have your fonts under `~/Download/Fonts`\n\nTo add these fonts, you have to run:\n\n    sudo mkdir /usr/share/fonts/truetype/custom\n    sudo mv /home/longman/Downloads/Fonts/*.TTF /usr/share/fonts/truetype/custom\n    \n    sudo mkdir /usr/share/fonts/opentype/custom/\n    sudo mv /home/longman/Downloads/Fonts/*.otf /usr/share/fonts/opentype/custom\n\nTo clear cache, run:\n\n    fc-cache -rv\n\n***\n\n[(Back to top)](#table-of-contents)\n\n\n# Installation Packages\n\nLogin to your Linux user and go to your **home** directory,\n\n    cd ~\n\nRun these commands and tweak them as needed. The `-y` flag installs without a prompt. Run these commands from the terminal.\n\n    sudo apt update \u0026\u0026 sudo apt upgrade\n\n## Enable PPAs\nPPA's are provided within categories below, I highly recommend using PPA's or at least installing this package in case you ever use them.\n\nEnable Canonical partners repository\n\n    sudo add-apt-repository -y \"deb http://archive.canonical.com/ $(lsb_release -sc) partner\" \u0026\u0026 sudo apt update\n\n## Flatpak\nFlatpak is a next-generation technology for building and distributing desktop applications on Linux\n\n    sudo apt install -y flatpak gnome-software-plugin-flatpak\n    flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo\n\nAnd restart the system.\n\n## System Tools\nThis is for tweaking the UI\n\n    sudo apt update \u0026\u0026 sudo apt install -y\\\n        gnome-tweak-tool\\\n        chrome-gnome-shell\\\n        gnome-shell-extensions\\\n        dconf-editor\\\n        synaptic\n\n### Install Nvidia Drivers\n\nYou can check your [VGA Info](#vga-info)\n\nFind out the right driver version for your graphics card on https://www.nvidia.com/en-us/geforce/drivers/\n\nInstall Nvidia Drivers\n\n    sudo add-apt-repository -y ppa:graphics-drivers/ppa\n\n    sudo apt update \u0026\u0026 sudo apt install -y nvidia-driver-XXX\n\nType your version instead XXX\n\nAnd after select your installed driver from drivers tab\n\n    sudo software-properties-gtk\n\nRemove Nvidia Drivers\n\n    sudo add-apt-repository -r ppa:graphics-drivers/ppa\n\n**To Edit Nvidia Settings**; Type the following in the Global Launcher *(Super Key/Windows Key)*:\n\n    nvidia settings\n\n### Install Nvidia Cuda Toolkit\nThe NVIDIA® CUDA® Toolkit provides a development environment for creating high performance GPU-accelerated applications.\n\nThe toolkit includes GPU-accelerated libraries, debugging and optimization tools, a C/C++ compiler, and a runtime library to deploy your application.\n\n    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin\n    sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600\n    sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub\n    sudo add-apt-repository -y \"deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /\"\n    sudo apt update\n    sudo apt -y install cuda\n\n### Install ATI Drivers\n\nFor installing ATI drivers, read this official documentation: http://support.amd.com/en-us/kb-articles/Pages/AMDGPU-PRO-Install.aspx\n\n### Utilities\n\n**Install the Utilities:**\n\n    sudo apt install -y vim git mercurial meld curl htop xclip unzip gdebi preload bleachbit ubuntu-restricted-extras cifs-utils unace unrar zip p7zip-full \\\n        p7zip-rar sharutils rar openssh-server lm-sensors whois traceroute nmap font-manager sshfs mc libavcodec-extra libdvd-pkg nfs-kernel-server openvpn \\\n        easy-rsa network-manager-openvpn-gnome exfat-fuse apt-transport-https ethtool net-tools dos2unix \\\n        liblz4-tool network-manager-openconnect-gnome network-manager-fortisslvpn-gnome openfortivpn tree duplicity screen lib32z1 \\\n        libglib2.0-dev-bin pv software-properties-common cpu-checker libnss3-tools python3-pip libcanberra-gtk-module sshpass jq libfuse2 libxi6 libxrender1 \\\n        libxtst6 mesa-utils libfontconfig libgtk-3-bin tar dbus-user-session libminizip1 libgdk-pixbuf-xlib-2.0-0 libgdk-pixbuf2.0-0 libopenal-data libopenal1 \\\n        libsndio7.0 gnome-shell-extension-manager bpytop ca-certificates-java cargo clang clang-18 default-jdk default-jdk-headless default-jre default-jre-headless \\\n        fonts-dejavu-extra icu-devtools java-common lib32gcc-s1 lib32stdc++6 libatk-wrapper-java libatk-wrapper-java-jni libc6-x32 libclang-common-18-dev libclang-rt-18-dev \\\n        libgit2-1.7 libhttp-parser2.9 libice-dev libicu-dev libobjc-13-dev libobjc4 libpfm4 libsm-dev libstd-rust-1.75 libstd-rust-dev libxml2-dev libxt-dev libz3-4 libz3-dev \\\n        linux-headers-generic llvm-18 llvm-18-dev llvm-18-linker-tools llvm-18-runtime llvm-18-tools openjdk-21-jdk openjdk-21-jdk-headless openjdk-21-jre openjdk-21-jre-headless \\\n        p7zip python3-gpg python3-ldb python3-markdown python3-psutil python3-samba python3-talloc python3-tdb rustc samba-common samba-common-bin samba-dsdb-modules putty-tools\n\nTo set up the git defaults\n\n    git config --global user.name \"your name\"\n    git config --global user.email \"your@email.com\"\n\nThat will create a `~/.gitconfig` with:\n\n    [user]\n        email = you@email.com\n        name = your name\n\n### Dark Theme\n\nUbuntu 20.04 ships with a new dark theme option, but it's not enough.\n\nIn the Settings \u003e Appearance select Window Colors to Dark.\n\nThe \"problem\" stems from the factor that the new \"Dark\" setting only changes the look and feel of apps that run on the desktop. \nIt does not change the colour of the desktop UI itself.\nTo fix this, install the User Themes GNOME Shell extension and GNOME Tweak Tool:\n\n    sudo apt install -y gnome-shell-extensions gnome-tweak-tool\n\nOpen GNOME Extensions app and slide the toggle next to \"User Themes\" to on.\n\nRestart GNOME Shell (Alt + F2, type r, hit enter)\n\nLastly, open the GNOME Tweaks tool and select \"Appearance\" in the sidebar, locate the Shell section and Select `Yaru Dark` from the menu adjacent.\n\n### Oracle Java\n\nDownload and install deb package from https://www.oracle.com/java/technologies/javase-jdk15-downloads.html\n\nAnd update alternatives\n\n    sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-15.0.1/bin/java 1\n    sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-15.0.1/bin/javac 1\n    sudo update-alternatives --config java\n\n### Wine\nTo run windows applications Wine is the best option. I often use HeidiSQL with Wine.\n\nEnable i386 architecture\n\n    sudo dpkg --add-architecture i386 \n\nDownload and add the repository key:\n    \n    wget -O - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -\n\nAdd the repository:\n    \n    sudo add-apt-repository -y 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main'\n    \nInstall:\n\n    sudo apt update \u0026\u0026 sudo apt install -y --install-recommends winehq-stable    \n    \n### Nautilus-Actions\nUse Nautilus-Actions to easily and graphically create custom context menu options for Ubuntu's Nautilus file manager.\n\n    sudo add-apt-repository -y ppa:daniel-marynicz/filemanager-actions\n    sudo apt install -y filemanager-actions-nautilus-extension\n\n\nAfter installing it, quit and restart the Nautilus file manager with the following command.\nYou can also press Alt+F2 and type this command instead of running it in a terminal.\n\n    nautilus -q\n\nAfter installation you can launch `fma-config-tool`.\n\nYou also can install some Nautilus extensions\n\n    sudo apt install -y nautilus-admin nautilus-meld nautilus-checksum-menu\n\n\n### Hardinfo\n\nHardinfo is a Everest/Aida alternative for Linux. Its shows system information\n\n    sudo apt install -y hardinfo\n\n\n### Caffeine\n\nCaffeine is a tool used to temporarily prevent the activation of the screensaver / lock screen / sleep mode,\nwhen using full-screen windows. The application is useful if you're using a video player that doesn't do this automatically,\nwhen listening to music, etc.\n\n    sudo apt install -y caffeine\n\n__Note__: After the installation, the command-line version of Caffeine is set to start automatically on login.\nIf you want the indicator to start automatically, you'll have to add \"caffeine-indicator\" to your startup applications.\n\n\n### GNU Screen\n\nScreen is a full-screen window manager that multiplexes a physical terminal between several processes, typically interactive shells.\nEach virtual terminal provides the functions of the DEC VT100 terminal and, in addition, several control functions from the ANSI X3.64 (ISO 6429) and ISO 2022 standards (e.g., insert/delete line and support for multiple character sets).\nThere is a scrollback history buffer for each virtual terminal and a copy-and-paste mechanism that allows the user to move text regions between windows.\nWhen screen is called, it creates a single window with a shell in it (or the specified command) and then gets out of your way so that you can use the program as you normally would.\nThen, at any time, you can create new (full-screen) windows with other programs in them (including more shells), kill the current window, view a list of the active windows, turn output logging on and off, copy text between windows, view the scrollback history, switch between windows, etc. All windows run their programs completely independent of each other.\nPrograms continue to run when their window is currently not visible and even when the whole screen session is detached from the users terminal.\n\n    sudo apt install -y screen\n\n\n### Neofetch\nA fast, highly customizable system info script\n\nNeofetch is a CLI system information tool written in BASH. \nNeofetch displays information about your system next to an image, your OS logo, or any ASCII file of your choice. \nThe main purpose of Neofetch is to be used in screenshots to show other users what OS/Distro you're running, what Theme/Icons you're using etc.\n\nInstallation:\n\n    sudo apt install -y neofetch\n\n### GParted\nPartition editor for graphically managing disk partitions https://gparted.sourceforge.io/\n\n    sudo apt install -y gparted\n\n### Firewall\n\n#### UFW\n\nUFW, or Uncomplicated Firewall, is an interface to iptables that is geared towards simplifying the process of configuring a firewall. \nWhile iptables is a solid and flexible tool, it can be difficult for beginners to learn how to use it to properly configure a firewall.\nUFW is installed by default on Ubuntu. If it has been uninstalled for some reason, you can install it with \n\n    sudo apt install -y ufw\n\nTo enable UFW, use this command:\n\n    sudo ufw enable\n\nConfiguring examples:\n\nTo configure your server to allow incoming SSH connections, you can use this command:\n\n    sudo ufw allow ssh\n    \nHowever, we can actually write the equivalent rule by specifying the port instead of the service name. For example, this command works the same as the one above:\n\n    sudo ufw allow 22    \n    \nFor example, to allow X11 connections, which use ports 6000-6007, use these commands:\n\n    sudo ufw allow 6000:6007/tcp\n    sudo ufw allow 6000:6007/udp\n    \n#### GUFW\n\nGUFW is a GUI for UFW\n\n    sudo apt install -y gufw\n\n### Geekbench\n\nDownload archive from https://www.geekbench.com/download/linux/ and extract.\n\nMove folder under /opt\n\n    sudo mv Geekbench-5.3.1-Linux /opt/geekbench5\n\nNow you can run benchmark\n\n    /opt/geekbench5/geekbench5\n\n### Clonezilla\nClonezilla is a partition and disk imaging/cloning program. It helps you to do system deployment, bare metal backup and recovery. \n\nDownload live USB image: https://clonezilla.org/downloads/download.php?branch=stable\n\nPrepare USB device\n    \n    mkfs.vfat -F 32 /dev/sd[1 letter]\n\nAnd [Write iso Image to USB](#write-iso-image-to-usb)\n\n### Screen Testing Soft\nThis is a program for testing the quality of CRT/LCD screens. It displays various patterns and allows you to estimate the quality of your CRT/LCD monitor.\n\n    sudo apt install -y screentest\n\n### Ventoy\n\n[Ventoy](https://www.ventoy.net/en/index.html) is an open source tool to create bootable USB drive for ISO/WIM/IMG/VHD(x)/EFI files.\nWith ventoy, you don't need to format the disk over and over, you just need to copy the ISO/WIM/IMG/VHD(x)/EFI files to the USB drive and boot them directly.\nYou can copy many files at a time and ventoy will give you a boot menu to select them.\n\nDownload the installation package, like ventoy-x.x.xx-linux.tar.gz from [here](https://github.com/ventoy/Ventoy/releases) and decompress it.\nRun the shell script as root, where XXX is the USB device, for example /dev/sdb:\n\n    sudo sh Ventoy2Disk.sh -i -L \"MY-USB\" /dev/XXX\n\n**Attention that the USB drive will be formatted and all the data will be lost after install.**\n\nYou just need to install Ventoy once, after that all the things needed is to copy the iso files to the USB.\nYou can also use it as a plain USB drive to store files and this will not affect Ventoy's function.\n\nYou can configure how Ventoy will work using configuration file `/ventoy/ventoy.json` on the USB drive.\n\nMy configuration file looks like:\n```json\n{\n    \"control\": [\n        { \"VTOY_DEFAULT_SEARCH_ROOT\": \"/install/iso\" }\n    ],\n    \"theme\": {\n        \"display_mode\": \"CLI\"\n    }\n}\n```\n\nFull documentation you can find [here](https://www.ventoy.net/en/plugin_control.html)\n\n***\n[(Back to top)](#table-of-contents)\n\n## Other Tools\n\n### Google Chrome\nAdd google chrome repository and install\n\n        sudo sh -c 'echo \"deb [arch=amd64] http://dl-ssl.google.com/linux/chrome/deb/ stable main\" \u003e\u003e /etc/apt/sources.list.d/google-chrome.list'\n        wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -\n        sudo apt update \u0026\u0026 sudo apt install -y google-chrome-stable\n\nThen launch it with `$ google-chrome` and you can pin it to a gnome bar.\n\n### Firefox\nInstall via snap:\n\n        sudo snap install firefox\n\n### PlayOnLinux\n\nInstallation\n\n    sudo apt install playonlinux\n    \n### Dropbox\n\nInstallation\n\n    sudo apt install nautilus-dropbox\n    \n### Sublime Text 3\nA sophisticated text editor for code, markup and prose\n\nAdd repository:\n\n    wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -\n    sudo apt install apt-transport-https\n    \nStable version:\n\n    echo \"deb https://download.sublimetext.com/ apt/stable/\" | sudo tee /etc/apt/sources.list.d/sublime-text.list\n    \nDev version:\n\n    echo \"deb https://download.sublimetext.com/ apt/dev/\" | sudo tee /etc/apt/sources.list.d/sublime-text.list    \n    \nInstall:\n    \n    sudo apt update \u0026\u0026 sudo apt install -y sublime-text\n    \nConfiguration of synchronization between devices explained [here](#sync-sublime-text)\n\n### Pidgin\n\nInstallation\n\n    sudo apt -y install pidgin\n\nConfiguring google talk account\n\nBasic\n\n- Protocol: XMPP\n- Username: [username without @]\n- Domain: [username domain after @]\n- Password: [account password]\n\nAdvanced\n\n- Connect Port: 5222 Connect Server: talk.google.com\n\n### DBeaver\n\nDownload from http://dbeaver.jkiss.org/download/\n\n### VirtualBox\nVirtualBox is a powerful x86 and AMD64/Intel64 virtualization product for enterprise as well as home use.\n\nCheck latest version number on https://www.virtualbox.org/wiki/Linux_Downloads\n\nDuring writing this manual, latest version was 7.0\n\nInstallation\n\n    sudo sh -c 'echo \"deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib\" \u003e\u003e /etc/apt/sources.list.d/virtualbox.list'\n    wget -O- https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --yes --output /usr/share/keyrings/oracle-virtualbox-2016.gpg --dearmor\n    sudo apt-get update\n    sudo apt-get install virtualbox-7.0\n\nIf you get error, first run: `sudo apt --fix-broken install`\n\nSuggested to [Enable Native Virtualization](#enable-native-virtualization)\n\nAlso, you can read [Virtual Machine Related](#virtual-machine-related)\n\n### Android Studio\n\nInstallation\n\nI recommend to install JetBrains Toolbox from https://www.jetbrains.com/toolbox-app/ and install Android Studio from toolbox. \n\nAfter downloading android sdk, update PATH variable:\n\n    vim ~/.bashrc\n\nadd lines:\n\n    export PATH=${PATH}:/path-to-android-sdk/tools\n    export PATH=${PATH}:/path-to-android-sdk/platform-tools\n\n### Smart Git\n\nDownload deb bundle from https://www.syntevo.com/smartgit/download/\n\n### FileZilla\n\nInstallation\n\n    sudo apt install -y filezilla\n\n### Spotify\n\nInstallation\n\n    sudo sh -c 'echo \"deb http://repository.spotify.com testing non-free\" \u003e\u003e /etc/apt/sources.list.d/spotify.list'\n    sudo apt update \u0026\u0026 sudo apt install -y spotify-client\n\n### TeamViewer\n\nDownload from http://www.teamviewer.com/en/download/linux.aspx\n\n### Meld Diff Tool\n\n    sudo apt install -y meld\n\n### Vagrant\n\nTo install Vagrant, you need to download and run the installation kit.\nBefore going further, be sure that you have dpkg and Virtual box installed:\n\n    sudo apt install -y dpkg-dev virtualbox-dkms\n\nMake sure linux headers already installed\n\n    sudo apt install -y linux-headers-$(uname -r)\n\nGo to the https://www.vagrantup.com/downloads.html page of Vagrant and check for the latest release.\nDuring writing this manual, last version was 2.0.1\n    \n    wget https://releases.hashicorp.com/vagrant/2.0.1/vagrant_2.0.1_x86_64.deb\n    sudo dpkg -i vagrant_2.0.1_x86_64.deb\n\nReconfigure the VirtualBox DKMS:\n\n    sudo dpkg-reconfigure virtualbox-dkms\n\n### Docker\n\nInstallation\n\n    wget -qO- https://get.docker.com/ | sh\n\nWorking with Docker is a pain if your user is not configured correctly, so add your user to the docker group with the following command.\n\n    sudo usermod -aG docker $(whoami)\n\nLog out and log in from your server to activate your new groups.\n\n    sudo apt install -y docker-compose\n\n### Audacious Audio Player\n\nInstallation\n\n    sudo apt install -y audacious\n\n### XnViewMP\n\nXnView MP is the enhanced version of XnView Classic.\nIt is a powerful cross-platform media browser, viewer and converter.\nCompatible with more than [500 formats](http://www.xnview.com/en/xnviewmp/#formats) such as PSD etc.\n\nDownload and install from http://www.xnview.com/en/xnviewmp/#downloads\n\n### Sticky Notes\nJust like Google Keep and Windows Sticky Notes, it allows you to jot down thoughts, lists, and reminders on desktop.\n\nInstallation\n\n    sudo apt-add-repository ppa:umang/indicator-stickynotes\n    sudo apt update \u0026\u0026 sudo apt install -y indicator-stickynotes\n\n### Guake\nGuake is a dropdown terminal made for the GNOME desktop environment.\nGuake's style of window is based on an FPS game, and one of its goals is to be easy to reach.\n\nInstallation\n\n    sudo apt install -y guake\n\n### Skype\n\nInstall using snap:\n\n    sudo snap install skype\n\n### Telegram\n\nInstall using snap:\n\n    sudo snap install telegram-desktop\n\n### Slack\n\nInstall using snap:\n\n    sudo snap install slack\n\n### Viber\n\nDownload AppImage from https://www.viber.com/en/download/\n\nCreate applications folder, if not exists: `mkdir ~/applications`\n\n    mv viber.AppImage ~/applications \u0026\u0026 chmod a+x ~/applications/viber.AppImage\n\nExecute `~/applications/viber.AppImage`\n\n\n### Gimp\n\nInstallation\n\n    sudo apt install -y gimp gimp-data gimp-plugin-registry gimp-data-extras\n\n### VLC Player\n\nVLC is a free and open source cross-platform multimedia player and framework that plays most multimedia files as well as DVDs, \nAudio CDs, VCDs, and various streaming protocols.\n\nInstallation\n\n    sudo apt install -y vlc\n\n### KDEnlive Video Editor\n\nInstall using snap:\n\n    sudo snap install kdenlive\n\n### Httpie\nYou can easily use httpie from terminal: `http get https://google.com`\n\nInstallation\n\n    sudo apt update \u0026\u0026 sudo apt install -y httpie\n\n### Peek\nSimple animated GIF screen recorder with an easy to use interface\n\nInstallation\n\n    sudo add-apt-repository -y ppa:peek-developers/stable\n    sudo apt update \u0026\u0026 sudo apt install -y peek\n\n### OBS\n\nFree and open source software for video recording and live streaming https://obsproject.com/.\n\nInstallation\n\n    sudo add-apt-repository -y ppa:obsproject/obs-studio\n    sudo apt update \u0026\u0026 sudo apt install -y obs-studio\n\n\n### USB Maker for Windows ISO on Linux\nYou can easily use `Startup Disk Creator` and `UNetbootin` to create Linux to USB. \nBut if you need to create Windows bootable USB from your Linux OS use woeusb:\n\n    sudo add-apt-repository -y ppa:tomtomtom/woeusb\n    sudo apt install -y woeusb-frontend-wxgtk\n\n### StarUML\n\nA sophisticated software modeler for agile and concise modeling (http://staruml.io/)\n\nYou can download .AppImage file from http://staruml.io/download\n\nMake downloaded file executable and run.\n\n### Gramps\n\nGramps is a free software project and community. \nIt is a genealogy program that is both intuitive for hobbyists and feature-complete for professional genealogists. \n\nTo install, run:\n\n    sudo apt install -y gramps\n\n### uGet\n\nuGet is a powerful download manager. \n\nTo install, run:\n\n    sudo add-apt-repository -y ppa:uget-team/ppa\n    sudo apt install -y uget uget-integrator\n\nYou can also install browser extensions for uGet integration: \n\n- Chrome: https://chrome.google.com/webstore/detail/uget-integration/efjgjleilhflffpbnkaofpmdnajdpepi\n\n### Xournal\n\nXournal is a GUI application primarily developed for note-taking and sketching use case. \nAs the name implies, Xournal is quite a handy tool when you are keeping a journal especially on a touchscreen-capable laptop. \nBeyond this use case, Xournal has in fact an excellent PDF editing capability, and can export a modified PDF file as well.\n\nTo install, run:\n\n    sudo apt install -y xournal\n\nIt's very useful tool for adding a Signature Image to a PDF Document with Xournal.\nThere are two ways to add your handwritten signature to a PDF document with Xournal. You can directly draw your signature using built-in Pen drawing. \nAlternatively, you can create an image file of your signature using another tool, and import the image into the PDF document using Xournal.\n\nTo hand-write your signature, click on `Pen` icon at the top-left of Xournal's GUI menu. You can also print and type anything (e.g., date) by clicking on `Text` icon.\nTo add an image of your signature on Xournal, click on `Image` icon at the top of Xournal's GUI menu, or go to `Tools` → `Image` in the menu option.\n\n### Transmission\n\nTransmission is designed for easy, powerful use. We've set the defaults to just work and it only takes a few clicks to configure advanced features like watch directories, bad peer blocklists, and the web interface. \nWhen Ubuntu chose Transmission as its default BitTorrent client, one of the most-cited reasons was its easy learning curve.\n\nTo install, run:\n\n    sudo apt install -y transmission\n\n### Timeshift\n\nTimeshift for Linux is an application that provides functionality similar to the System Restore feature in Windows and the Time Machine tool in Mac OS. Timeshift protects your system by taking incremental snapshots of the file system at regular intervals. \nThese snapshots can be restored at a later date to undo all changes to the system.\n\nTo install, run:\n\n    sudo apt install -y timeshift\n\n### LibreOffice\n\nLibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice).\nIts clean interface and feature-rich tools help you unleash your creativity and enhance your productivity.\n\nTo install, run:\n\n    sudo apt install -y libreoffice\n\n***\n[(Back to top)](#table-of-contents)\n\n## Development\n\n### LAMP\nLinux Apache MySQL PHP\n\n**- Installation for the following:**\n- PHP 5.6/7.0/7.4/8.0/8.1/8.2/8.3 (and Modules)\n- Apache 2 (and Modules + Dynamic hosts)\n- Nginx *(Optional)*\n- MySQL\n- Redis\n- and more.\n\n#### PHP\n\n##### PHP 5.6\nIt's important to install **php5.6-dev** if you want to compile any add-ons later.\n\n    sudo add-apt-repository -y ppa:ondrej/php\n    sudo apt update \u0026\u0026 sudo apt install -y php5.6 libpcre3-dev php5.6-cli php5.6-cgi php5.6-common php5.6-mysql php5.6-curl php5.6-gd php5.6-geoip php5.6-imagick php5.6-imap php5.6-json php5.6-ldap php5.6-mcrypt php5.6-memcache php5.6-memcached php5.6-tidy php5.6-xdebug php5.6-xmlrpc php5.6-xsl php5.6-dev\n\nIf you are looking for more PHP modules try:\n\n    sudo apt-cache search php5-\n\n\n##### PHP 7.0\nIt's important to install **php7.0-dev** if you want to compile any add-ons later.\n\n    sudo add-apt-repository -y ppa:ondrej/php\n    sudo apt update \u0026\u0026 sudo apt install -y php7.0-bz2 php7.0-cgi php7.0-cli php7.0-common php7.0-curl php7.0-dev php7.0-enchant php7.0-fpm php7.0-gd php7.0-gmp php7.0-imap php7.0-intl php7.0-json php7.0-ldap php7.0-mcrypt php7.0-mysql php7.0-odbc php7.0-opcache php7.0-pgsql php7.0-phpdbg php7.0-pspell php7.0-readline php7.0-recode php7.0-sybase php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-sqlite3 php7.0-mbstring php7.0-bcmath php7.0-soap php7.0-zip php-xdebug php-imagick\n\nIf you are looking for more PHP modules try:\n\n    sudo apt-cache search php7.0-\n\n##### PHP 7.4\nIt's important to install **php7.4-dev** if you want to compile any add-ons later.\n\n    sudo add-apt-repository -y ppa:ondrej/php\n    sudo apt update \u0026\u0026 sudo apt install -y php7.4-bz2 php7.4-cgi php7.4-cli php7.4-common php7.4-curl php7.4-dev php7.4-enchant php7.4-fpm php7.4-gd php7.4-gmp php7.4-imap php7.4-intl php7.4-json php7.4-ldap php7.4-mysql php7.4-odbc php7.4-opcache php7.4-pgsql php7.4-phpdbg php7.4-pspell php7.4-readline php7.4-sybase php7.4-tidy php7.4-xmlrpc php7.4-xsl php7.4-sqlite3 php7.4-mbstring php7.4-bcmath php7.4-soap php7.4-zip php7.4-xdebug php7.4-redis php7.4-igbinary php7.4-imagick php-sodium\n\nIf you are looking for more PHP modules try:\n\n    sudo apt-cache search php7.4-\n\n##### PHP 8.0\nIt's important to install **php8.0-dev** if you want to compile any add-ons later.\n\n    sudo add-apt-repository -y ppa:ondrej/php\n    sudo apt update \u0026\u0026 sudo apt install -y php8.0-bz2 php8.0-cgi php8.0-cli php8.0-common php8.0-curl php8.0-dev php8.0-enchant php8.0-fpm php8.0-gd php8.0-gmp php8.0-imap php8.0-intl php8.0-ldap php8.0-mysql php8.0-odbc php8.0-opcache php8.0-pgsql php8.0-phpdbg php8.0-pspell php8.0-readline php8.0-sybase php8.0-tidy php8.0-xmlrpc php8.0-xsl php8.0-sqlite3 php8.0-mbstring php8.0-bcmath php8.0-soap php8.0-zip php8.0-xdebug php8.0-redis php8.0-igbinary php8.0-imagick php-sodium\n\nIf you are looking for more PHP modules try:\n\n    sudo apt-cache search php8.0-\n\n##### PHP 8.1\nIt's important to install **php8.1-dev** if you want to compile any add-ons later.\n\n    sudo add-apt-repository -y ppa:ondrej/php\n    sudo apt update \u0026\u0026 sudo apt install -y php8.1-bz2 php8.1-cgi php8.1-cli php8.1-common php8.1-curl php8.1-dev php8.1-enchant php8.1-fpm php8.1-gd php8.1-gmp php8.1-imap php8.1-intl php8.1-ldap php8.1-mysql php8.1-odbc php8.1-opcache php8.1-pgsql php8.1-phpdbg php8.1-pspell php8.1-readline php8.1-sybase php8.1-tidy php8.1-xmlrpc php8.1-xsl php8.1-sqlite3 php8.1-mbstring php8.1-bcmath php8.1-soap php8.1-zip php8.1-xdebug php8.1-redis php8.1-igbinary php8.1-imagick\n\nIf you are looking for more PHP modules try:\n\n    sudo apt-cache search php8.1-\n\n##### PHP 8.2\nIt's important to install **php8.2-dev** if you want to compile any add-ons later.\n\n    sudo add-apt-repository -y ppa:ondrej/php\n    sudo apt update \u0026\u0026 sudo apt install -y php8.2-bz2 php8.2-cgi php8.2-cli php8.2-common php8.2-curl php8.2-dev php8.2-enchant php8.2-fpm php8.2-gd php8.2-gmp php8.2-imap php8.2-intl php8.2-ldap php8.2-mysql php8.2-odbc php8.2-opcache php8.2-pgsql php8.2-phpdbg php8.2-pspell php8.2-readline php8.2-sybase php8.2-tidy php8.2-xmlrpc php8.2-xsl php8.2-sqlite3 php8.2-mbstring php8.2-bcmath php8.2-soap php8.2-zip php8.2-xdebug php8.2-redis php8.2-igbinary php8.2-imagick\n\nIf you are looking for more PHP modules try:\n\n    sudo apt-cache search php8.2-\n\n##### PHP 8.3\nIt's important to install **php8.3-dev** if you want to compile any add-ons later.\n\n    sudo add-apt-repository -y ppa:ondrej/php\n    sudo apt install -y php8.3-bz2 php8.3-cgi php8.3-cli php8.3-common php8.3-curl php8.3-dev php8.3-enchant php8.3-fpm php8.3-gd php8.3-gmp php8.3-imap php8.3-intl php8.3-ldap php8.3-mysql php8.3-odbc php8.3-opcache php8.3-pgsql php8.3-phpdbg php8.3-pspell php8.3-readline php8.3-sybase php8.3-tidy php8.3-xmlrpc php8.3-xsl php8.3-sqlite3 php8.3-mbstring php8.3-bcmath php8.3-soap php8.3-zip php8.3-xdebug php8.3-redis php8.3-igbinary php8.3-imagick\n\nIf you get gpg warning, use this workaround to fix it: https://github.com/oerdnj/deb.sury.org/issues/1429#issuecomment-2180233990\n\nIf you are looking for more PHP modules try:\n\n    sudo apt-cache search php8.3-\n\n##### Switch PHP Versions\n\nFor example switch from 8.1 to 8.2\n\nApache:\n\n    sudo a2dismod php8.1\n    sudo a2enmod php8.2\n    sudo service apache2 restart\n\nMake sure, PHP module is installed via `sudo apt install -y libapache2-mod-php8.*`\n\nCommand Line:\n\n    sudo update-alternatives --set php /usr/bin/php8.2\n    sudo update-alternatives --set phar /usr/bin/phar8.2\n    sudo update-alternatives --set phar.phar /usr/bin/phar.phar8.2\n    sudo update-alternatives --set php-config /usr/bin/php-config8.2\n\n#### Composer\n\n    curl -sS https://getcomposer.org/installer | php \u0026\u0026 sudo mv composer.phar /usr/local/bin/composer\n\nDisable XDebug for composer\n\n    sudo phpdismod -s cli xdebug\n\nAnd add this lines in your .bashrc file:\n\n    # Load xdebug Zend extension with php command\n    alias php='php -dzend_extension=xdebug.so'\n    # PHPUnit needs xdebug for coverage. In this case, just make an alias with php command prefix.\n    alias phpunit='php $(which phpunit)'\n\n#### PHPUnit\n\n    wget https://phar.phpunit.de/phpunit.phar \u0026\u0026 chmod +x phpunit.phar \u0026\u0026 sudo mv phpunit.phar /usr/local/bin/phpunit\n\n#### Apache\n\n##### Apache: Installation\n\nFor PHP 5.6\n\n    sudo apt install -y apache2 libapache2-mod-php5.6\n\nFor PHP 7.*\n\n    sudo apt install -y apache2 libapache2-mod-php7.*\n\nFor PHP 8.*\n\n    sudo apt install -y apache2 libapache2-mod-php8.*\n\n##### Apache: Enable php-mcrypt \u0026 mod_rewrite\n\nEnable mod_rewrite\n\n    sudo a2enmod rewrite\n\nEnable php-mcrypt\n\nFor PHP 5\n\n    sudo php5enmod mcrypt \u0026\u0026 sudo service apache2 restart\n\nFor PHP 7 (if mcrypt is available)\n\n    sudo phpenmod mcrypt \u0026\u0026 sudo service apache2 restart\n\nIf you are looking for more Apache modules try:\n\n    sudo apt-cache search libapache2-mod\n\n##### Apache: Configure dynamic virtualhosts\n\nEnable module `vhost_alias`\n\n    sudo a2enmod vhost_alias\n\nNext, open /etc/apache2/apache2.conf\n\n    sudo vim /etc/apache2/apache2.conf\n\nand add the following lines before `IncludeOptional sites-enabled/*.conf` line.\n\n    UseCanonicalName Off\n\n    LogFormat \"%V %h %l %u %t \\\"%r\\\" %s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" dynamic_vhosts\n    CustomLog ${APACHE_LOG_DIR}/access.log dynamic_vhosts\n\n    \u003cVirtualHost *:80\u003e\n        VirtualDocumentRoot /var/www/domains/%-2+/public_html\n        VirtualScriptAlias  /var/www/domains/%-2+/cgi-bin\n\n        \u003cDirectory /var/www/domains\u003e\n                    DirectoryIndex index.html index.php\n                    Options Indexes FollowSymLinks MultiViews\n                    AllowOverride All\n                    Order allow,deny\n                    allow from all\n                    Require all granted\n        \u003c/Directory\u003e\n\n    \u003c/VirtualHost\u003e\n\n_Make sure apache user can access the folder. Ubuntu 24 has 750 permission on /home/user folder._\n\nIf you want to disable all configured virtual hosts, then comment this line in your config file:\n\n    #IncludeOptional sites-enabled/*.conf\n\nThis sets up a catch all for any domain coming in over port 80 (the default port for http traffic, if your using https you will need to use 443 - alternatively you could remove the port restriction).\nThe important line here is the VirtualDocumentRoot. The tells Apache where your files will reside on disk.\nThe %0 part takes the whole domain name and inserts it into the path. But I didn't want to have the `.test` part of the domain in my folders on disk, otherwise we use %-2+\nTo illustrate this if we went to a domain somesite.com.test the VirtualDocumentRoot would be:\n\n    /var/www/html/domains/somesite.com\n\nNow you have to add automatic `.test` domain resolving on your local machine:\n\nEdit the file `/etc/NetworkManager/NetworkManager.conf`, and add the line `dns=dnsmasq` to the [main] section, it will look like this:\n\n```\n[main]\nplugins=ifupdown,keyfile\ndns=dnsmasq\n\n[ifupdown]\nmanaged=false\n\n[device]\nwifi.scan-rand-mac-address=no\n```\n\nLet NetworkManager manage /etc/resolv.conf\n\n    sudo rm /etc/resolv.conf\n    sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf\n\nAdd custom tld:\n\n    echo 'address=/.test/127.0.0.1' | sudo tee /etc/NetworkManager/dnsmasq.d/test-tld\n\nReload NetworkManager:\n\n    sudo systemctl reload NetworkManager\n\nNow domain somesite.com.test should work.\n\n##### Apache: Configure SSL for dynamic virtualhosts\n\nFirst of all [Generate SSL certificates for local domains](#generate-ssl-certificates-for-local-domains)\n\nAfter you can use this small script, for generating SSL certificate for all virtual domains (folders).\n\n```bash\n#!/usr/bin/env bash\n\ncmd_array=( mkcert -key-file key.pem -cert-file cert.pem  )\nfor d in /var/www/html/domains/*/ ; do\n    cmd_array+=(`basename \"$d\"`.test)\ndone\n\n\"${cmd_array[@]}\"\n```    \n\nAnd add the generated cert.pem and key.pem to the apache configuration file, edit `/etc/apache2.conf`\n\nAdd new VirtualHost section:\n\n```\n\u003cVirtualHost *:443\u003e\n    VirtualDocumentRoot /var/www/html/domains/%-2+/public\n\n    SSLEngine on\n    SSLCertificateFile    /path/to/generated/certs/cert.pem\n    SSLCertificateKeyFile /path/to/generated/certs/key.pem\n\n    \u003cDirectory /var/www/html/domains\u003e\n                DirectoryIndex index.html index.php\n                Options Indexes FollowSymLinks MultiViews Includes\n                AllowOverride All\n                Order deny,allow\n                Allow from all\n                Require all granted\n    \u003c/Directory\u003e\n\n\u003c/VirtualHost\u003e\n```\n\nMake sure the mod_ssl is enabled and restart the apache.\n\n#### Nginx\nOr if you prefer to use nginx\n\nFor stable version\n\n    sudo add-apt-repository -y ppa:nginx/stable\n\nFor latest (recommended)\n\n    sudo add-apt-repository -y ppa:nginx/development\n\nAnd after install\n\n    sudo apt install -y nginx\n\n#### Generate SSL certificates for local domains\n\n`mkcert` automatically creates and installs a local CA in the system root store, and generates locally-trusted certificates.\n\nDownload [mkcert](https://github.com/FiloSottile/mkcert) precompiled binary\nfrom https://github.com/FiloSottile/mkcert/releases\n\n    wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64\n    chmod +x mkcert\n\nGenerate and install root certificates:\n\n    mkcert -install\n\nRoot certificates will be placed under `mkcert -CAROOT`. For Ubuntu its `/home/\u003cuser\u003e/.local/share/mkcert`\n\nAfter you can generate certificates for your domains:\n\n    mkcert -key-file key.pem -cert-file cert.pem example.test *.example.test example2.test *.example2.test\n\nNow you can add the generated cert.pem and key.pem to your webserver configuration.\n\nIf you use Apache Dynamic Virtualhosts, you can generate certs automatically. \nRead more in [Configure SSL for Dynamic Virtualhosts](#apache-configure-ssl-for-dynamic-virtualhosts)  \n\n#### MySQL\n\n##### Installation\n\nYou can get latest version number on https://dev.mysql.com/downloads/repo/apt\n\n    wget https://dev.mysql.com/get/mysql-apt-config_0.8.30-1_all.deb\n    sudo dpkg -i mysql-apt-config_0.8.30-1_all.deb\n    sudo apt update \u0026 sudo apt install -y mysql-server\n\nFor start configuring MySQL server, run:\n\n    sudo mysql_secure_installation\n\nIf you are not able to login with root user, run:\n\n    sudo mysql\n\nand run:    \n    \n    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword';\n\nIf even with sudo mysql not able to log in, try this:\n\nAdd --skip-grant-tables option to startup command:\n\n    sudo vim /usr/lib/systemd/system/mysql.service\n\nRun `FLUSH PRIVILEGES;` and after:\n\n    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';\n\n##### Allow remote access for root:\n\nLogin in MySQL shell and run:\n\n    CREATE USER 'root'@'%' IDENTIFIED BY 'secret';\n    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';\n\nAlso Update mysql server config:\n\nFor MySQL 5.*\n\n    sudo sed -i 's/bind-address/bind-address = 0.0.0.0#/' /etc/mysql/my.cnf\n\nFor MySQL 8.*\n\n    echo 'bind-address    = *' | sudo tee -a /etc/mysql/mysql.conf.d/mysqld.cnf\n\nRestart the service:\n\n    sudo service mysql restart\n\nCheck if mysql listens port correctly\n\n    sudo netstat -tulnp | grep mysql\n\nOutput should be something like:\n```\ntcp6       0      0 :::33060                :::*                    LISTEN      13143/mysqld        \ntcp6       0      0 :::3306                 :::*                    LISTEN      13143/mysqld\n```\n\nYou can also run the nmap command from a remote computer to check whether MySQL port 3306 is open to the remote host.\n\n    nmap {server-ip}\n\n#### Percona Toolkit\nPercona Toolkit is a collection of advanced open source command-line tools, developed and used by the Percona technical staff, \nthat are engineered to perform a variety of MySQL® and MongoDB® server and system tasks that are too difficult or complex \nto perform manually – freeing your DBAs for work that helps you achieve your business goals.\n\n    sudo apt install -y percona-toolkit\n\n#### MyCLI\nThis is a very nice utility [https://github.com/dbcli/mycli](https://github.com/dbcli/mycli)\n\n    pip install mycli\n\nUsage (See the documents from the git link above for more example):\n\n    mycli -h localhost -u root\n    mycli -h localhost -u root -p\n\n#### PostgreSQL\n\n    sudo apt install -y postgresql libpq-dev\n\n#### Memcached\n\n    sudo apt install -y memcached php-memcached\n\n#### Redis\nInstall redis latest stable version\n\n    curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg\n    echo \"deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main\" | sudo tee /etc/apt/sources.list.d/redis.list\n    sudo apt-get update\n    sudo apt-get install redis\n\nAdd to startup:\n\n    sudo systemctl enable redis-server.service\n\n##### Multiple Redis Instances\n\nDisable default instance\n\n    sudo systemctl stop redis-server\n    sudo systemctl disable redis-server\n\nRepeat these steps to configure a Redis instance for every instance you want to set up:\n\nIn this case we set up first instance called \"redis_1\"\n\nCreate folders and configs:\n\n    sudo mkdir /etc/redis/redis_1\n    sudo cp /etc/redis/redis.conf /etc/redis/redis_1/redis.conf \n    sudo chown -R redis:redis /etc/redis\n\nIn the config file edit lines:\n\n    daemonize no\n    supervised systemd\n    pidfile /run/redis/redis_1.pid\n    logfile /var/log/redis/redis_1.log\n    dir /var/lib/redis/redis_1/\n\nDefine a \"port\" number.\n\n    port 6379\n\n*Warning: Remember that each instance should be running on a different port.*\n\nCreate the database directories at the location given in the configuration file.\n\n    sudo mkdir /var/lib/redis/redis_1\n    sudo chown redis:redis /var/lib/redis/redis_1\n    sudo chmod 0750 /var/lib/redis/redis_1\n\nCreate the service unit file \"/etc/systemd/system/redis@.service\" with the following contents:\n\n\n```\n[Unit]\nDescription=Redis persistent key-value database\nAfter=network.target\n\n[Service]\nType=simple\nUser=redis\nGroup=redis\nExecStart=/usr/bin/redis-server /etc/redis/%i/redis.conf\nExecStop=/bin/kill -s TERM $MAINPID\nPrivateTmp=true\nPIDFile=/var/run/redis/%i.pid\nRuntimeDirectory=%i\nRuntimeDirectoryMode=2755\nLimitNOFILE=65536\nRestart=always\nTimeoutStopSec=0\n\nUMask=007\nPrivateDevices=yes\nProtectHome=yes\nReadOnlyDirectories=/\nReadWriteDirectories=-/var/lib/redis\nReadWriteDirectories=-/var/log/redis\nReadWriteDirectories=-/var/run/redis\n\nNoNewPrivileges=true\nCapabilityBoundingSet=CAP_SETGID CAP_SETUID CAP_SYS_RESOURCE\nRestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX\nMemoryDenyWriteExecute=true\nProtectKernelModules=true\nProtectKernelTunables=true\nProtectControlGroups=true\nRestrictRealtime=true\nRestrictNamespaces=true\n\n# redis-server can write to its own config file when in cluster mode so we\n# permit writing there by default. If you are not using this feature, it is\n# recommended that you replace the following lines with \"ProtectSystem=full\".\nProtectSystem=true\nReadWriteDirectories=-/etc/redis\n\n[Install]\nWantedBy=multi-user.target\n\n```\n\nStart the new redis instance:\n\n    sudo systemctl start redis@redis_1\n    sudo systemctl enable redis@redis_1\n\n#### ELK Stack\nInstall ELK stack: Elasticsearch, Logstash, and Kibana\n\n    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -\n    sudo apt install -y apt-transport-https\n    echo \"deb https://artifacts.elastic.co/packages/7.x/apt stable main\" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list\n    sudo apt update \u0026\u0026 sudo apt install -y elasticsearch\n\nTo configure Elasticsearch to start automatically when the system boots up, run the following commands:\n\n    sudo /bin/systemctl daemon-reload\n    sudo /bin/systemctl enable elasticsearch.service\n\n#### Letsencrypt\n\nInstall certbot (https://certbot.eff.org)\n\n    sudo snap install --classic certbot\n\nGenerating for nginx:\n    \n    sudo snap install certbot-nginx-unit\n    sudo certbot --nginx\n    \nGenerating for apache:\n    \n    sudo certbot --apache\n\nYou can test automatic renewal for your certificates by running this command:\n\n    sudo certbot renew --dry-run\n\n#### Java Runtime\n\n    sudo apt install -y default-jre\n\n#### Phalcon\n\n    sudo apt-add-repository ppa:phalcon/stable\n    sudo apt update\n    sudo apt install -y php5-phalcon\n\n#### Phalcon Dev Tools\nThis is an easy to use install script that will cleanup after itself. It can also be used for updating:\n\n    sudo bash install_phalcon_devtools.sh\n\nTo test it run: `$ phalcon`\n\n#### Secure Permissions\nWe will use the Access Control Lists (ACL) or (Filesystem Access Control List). We will use group permissions for folders so you don't have to make the public writable, because `777` is dangerous.\n\n    # Make sure you have ACL installed\n    sudo apt install -y acl\n\nLook for your main partition with:\n\n    $ df\n\n\nMine happens to be `dev/root`, yours may be `dev/sda` or something. Make sure to replace that below:\n\n    # T\n    sudo /sbin/tune2fs -o +acl /dev/root\n\nTo see what file system you are using `ext3`, `ext4`, etc, use the partition:\n\n    sudo file -sL /dev/root\n\nWe have to put the partition in read-only mode, then remount it:\n\n    sudo /bin/mount -o remount /dev/root\n\nApply Group\n\n    # This sets the Defaults\n    setfacl -Rd g:www-data:rw /var/www\n    # This sets future file\n    setfacl -Rm g:www-data:rw /var/www\n\nTo Modify\n\n    setfacl -Rm g:www-data:rw /var/www\n\nOtherwise you could always set up a crontab such as:\n\n    crontab -e\n\nThen append this to run every five minutes.\n\n    */5 * * * * /home/\u003cuser\u003e/backup.sh chgrp -R www-data /var/www \u0026\u0026 chmod g+rw /var/www\n\nLastly, you could have a deploy script that does this for you, such as Python `Fabfile`, but that's another topic.\n\n\n***\n\n[(Back to top)](#table-of-contents)\n\n### Python\n\n**- Installation packages:**\n    - Python3\n    - Virtualenv\n\nPython is installed by default on Ubuntu, version 3.12 is suitable. I strongly recommend installing `python-dev` for headers to compile certain PIP packages.\n\n    sudo apt install -y python3-dev python3-full libmysqlclient-dev\n    sudo pip install fabric virtualenv virtualenvwrapper django\n\nCheck the Python version installed, using below command\n\n    python3 -V\n\n#### Virtualenv\n[Virtualenv](#virtualenv) is a tool to create isolated Python environments. install the virtualenv package\n\n    pip install virtualenv\n\nCreate an Environment with virtualenv\n\n    virtualenv -p python3.5 --no-site-packages env\n\nActivate script\n\n    cd env\n    source bin/activate\n\nDeactivate\n\n    deactivate\n\n***\n[(Back to top)](#table-of-contents)\n\n\n### Go\nInstall Golang. You can check latest version of Golang here https://golang.org/dl/#featured\nWhile writing this article, lastest version was 1.9\n\n    sudo add-apt-repository -y ppa:gophers/archive\n    sudo apt -y update \u0026\u0026 sudo apt install golang-1.9\n\nAfter that your installation will be in the `/usr/lib/go-1.9`\nI recommend create symlink:\n\n    sudo ln -s /usr/lib/go-1.9 /usr/local/go\n\nAnd Add `/usr/local/go/bin` to the PATH environment variable. \nYou can do this by adding this line to your `/etc/profile` (for a system-wide installation) or `$HOME/.profile`:\n    \n    PATH=\"$PATH:/usr/local/go/bin\"\n\n\n***\n[(Back to top)](#table-of-contents)\n\n\n### Ruby\nInstall Ruby 2.X with header files in `ruby2.0-dev`, this will keep your gems from having issues.\n\n    sudo apt install -y ruby2.0 ruby2.0-dev\n\nFor Ruby RVM (Version Management)\n\n    gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3\n    \\curl -sSL https://get.rvm.io | bash -s stable\n\n***\n[(Back to top)](#table-of-contents)\n\n### NodeJS\nI recommend install NodeJS using [Node Version Manager](https://github.com/nvm-sh/nvm) \n    \n    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash\n\nTo download, compile, and install the latest release of node, do this:\n\n    nvm install node # \"node\" is an alias for the latest version\n\nTo install a specific version of node:\n\n    nvm install 6.14.4 # or 10.10.0, 8.9.1, etc\n\nTo install a latest LTS version of node:\n\n    nvm install --lts\n\nYou can list available versions using ls-remote:\n\n    nvm ls-remote\n\nAnd then in any new shell just use the installed version:\n\n    nvm use [version]\n\n***\n[(Back to top)](#table-of-contents)\n\n### Yarn\nFor installation Yarn package manager run:\n\n    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -\n    echo \"deb https://dl.yarnpkg.com/debian/ stable main\" | sudo tee /etc/apt/sources.list.d/yarn.list\n    sudo apt update \u0026\u0026 sudo apt install -y yarn\n\n***\n[(Back to top)](#table-of-contents)\n\n### Ansible\n\n    sudo apt install -y ansible\n\n***\n[(Back to top)](#table-of-contents)\n\n\n## Gaming\n\n### Steam\nUltimate entertainment platform. http://store.steampowered.com/\n\n    sudo apt install -y steam\n\n### PCSXR\nPCSX-Reloaded - PlayStation 1 Emulator. https://pcsxr.codeplex.com/\n\nInstall emulator:\n\n    sudo apt install -y pcsxr\n\npscxr can simulate a bios file. However if you need to use a bios, [download](files/pcsxr/SCPH1001.BIN?raw=1) and move the file into `~/.pcsx/bios/`.\n\nDownload games from http://redump.org/discs/system/psx/ or https://rutracker.org/forum/viewtopic.php?t=4496017 and put under `~/.pcsx/games/`\n\nAfter that run PCSX, configure and play\n\n# Customizations\n\n## System Tweaks\n\n### Increase Inotify Watches Limit\n\nOpen ```sysctl.conf```\n\n    sudo vim /etc/sysctl.conf\n\nAdd this line:\n\n    fs.inotify.max_user_watches = 524288\n\nAnd after run\n\n    sudo sysctl -p\n\n### Disable Git Certificate Verification\n\nNote: for security reasons, not recommended\n\n    sudo git config --global http.sslVerify false\n\n\n## Shortcuts\n\n- \"System Settings\" \u003e \"Keyboard\" \u003e \"Shortcuts\" \u003e \"Custom Shortcuts\" \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003er\u003c/kbd\u003e Terminal ```gnome-terminal```\n- \"System Settings\" \u003e \"Keyboard\" \u003e \"Shortcuts\" \u003e \"Custom Shortcuts\" \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003ee\u003c/kbd\u003e Files ```nautilus -w```\n\n## VIM Customization\n\n**Setup VIM**\n\n    git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim\n\nAnd copy [.vimrc](os/home/.vimrc) file in your home folder (/home/\u003cuser\u003e/.vimrc)\nAfter run\n\n    $ vim\n    :PluginInstall\n\n## Add Georgian Keyboard\n\nGo to System \"Settings\" \u003e \"Keyboard\" \u003e \"Text Entry\" and add Georgian layout. Also enable \"Allow different sources for each window\"\n\n\n## Touchpad Settings\n\n### Change Scroll Speed\n\nList input devices tofind the id\n\n    xinput --list\n\nYou have to find input device, like \"SynPS/2 Synaptics TouchPad\". In my case id was 12.\n\nTo list supported settings for device, run:\n\n    xinput list-props {id}\n\nTo change scroll speed, you have to update \"Synaptics Scrolling Distance\" setting. e.g.\n\n    xinput --set-prop {id} 'Synaptics Scrolling Distance' -200 200\n\nTo persist this setting you have to put command in the `/etc/X11/xinit/xinputrc` file.\n\nSometimes id can be changed between reboots, so, you have to update file with following lines:\n\n    idd=$(xinput --list | grep 'SynPS/2 Synaptics TouchPad' | awk '{print $6}'| cut -d'=' -f2)\n    xinput --set-prop $idd 'Synaptics Scrolling Distance' -200 200\n\n***\n[(Back to top)](#table-of-contents)\n\n\n# Ubuntu Fixes\nThese are solutions to fix problems I've encountered.\n\n## Ubuntu Infinite Login\n\nWhen you try to login to Ubuntu and it relogs you back into the login screen, this is an infinite loop. \nThe only way I was able to fix it despite all the guides was combining a few of these together.\n\nThe first step is to login to a terminal.\n\n    CTRL + ALT + F1  (Or F3)\n    \nNext, Login as your user who must be able to run sudo.    \n\n- **Home Folder Permissions**\n  - `ls -ld ~` should have these permission exactly as: `drwxr-xr-x`\n  - The user:group must be your, e.g. `john:john`\n  - To Fix: `sudo chmod 755 ~` and `sudo chown -R john:john ~`\n- **Temp Folder Permissions**\n  - `ls -ld /tmp` should have these permission exactly as: `drwxrwxrwt`\n  - The user:group must be `root:root` on `/tmp`\n  - To Fix: `sudo chmod a+wt /tmp`\n- **Xauthority Ownership**\n  - `ls -lta | grep .Xa` should be owned by your user, for example `john john`\n   - If it is `root root` or anything than your user/group it's wrong\n   - To Fix: `sudo chown john:john .Xauthority`\n- **Xsession Errors**\n  - This is just to make sure there are no syntax errors for your reference:\n    - To Check: `cat ~/.xsession-errors`\n    - You don't need to do anything if there are syntax errors, we will move the file\n- **Try Moving XAuthority**\n  - Sometimes it's as easy to moving Xauthority so a new is generated at login\n  - To Fix: `sudo ~/.Xauthority ~/.Xauthority.bak`\n- **Try Reconfiguring LightDM**\n  - Fix: `dpkg-reconfigure lightdm`, then select lightdm in the menu\n  - Lastly restart lightdm: `sudo service lightdm restart`\n- **Apt Auto Remove Problem**\n  - I read that it's possible `apt-autoremove` may accidentally remove `xubuntu-desktop`, `ubuntu-desktop` and LightDM reports no errors.\n    - The `ubuntu-desktop` will load the Gnome interface\n    - The `xubuntu-desktop` will load a different interface I'm not familiar with\n    - To Fix: `sudo apt install ubuntu-desktop`\n  - **If you are using Gnome**, try following the post at [OMGUbuntu](http://www.omgubuntu.co.uk/2016/05/install-gnome-3-20-ubuntu-16-04-lts)\n    - After the Above Try: `sudo apt autoremove gnome-software \u0026\u0026 sudo apt install gnome-software`\n    - I was able to get Gnome-Classic working but not Gnome\n- **How to Ensure it Works**\n  - You might be able to login after one of the steps above if you don't reboot. However, to be certain, \n    you want to reboot to ensure it is fixed, otherwise you'll be doing this over and over   \n\n## PCI Device Is Not Recognized Correctly\n\nIf your `lspci | grep \"VGA\"` output looks like this:\n\n    01:00.0 VGA compatible controller: NVIDIA Corporation Device 1f95 (rev a1)\n\nInstead of this:\n\n    01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU117M [GeForce GTX 1650 Ti Mobile] [10de:1f95] (rev a1)\n\nThen you're affected by the issue.\n\nThis can be caused by your `/usr/share/misc/pci.ids\\*` files being outdated and you can fix it by running:\n\n    sudo update-pciids\n\nIf the list is not updated even after running the command above, that means your PCI device is brand new, and no one has registered your device to the pci-ids repository.\n\nYou can submit an issue/contact us through gitter, or you can add it yourself to https://pci-ids.ucw.cz/. \nMake sure you have the right vendor ID and the device ID by checking `lspci -nn` and read the guidelines.\n\n## Restore Screen Brightness and Keyboard backlit on Reboot\n\nOn my device screen brightness and keyboard backlit always resets after reboot, so there is a fix.\n\nFirst, find config files where your brightness and keyboard backlit state is stored. In my case, it was `/sys/class/backlight/nvidia_0/brightness` and `/sys/class/leds/tpacpi\\:\\:kbd_backlight/brightness`\n\nTest your configs:\n\n    echo 1 \u003e /sys/class/leds/tpacpi\\:\\:kbd_backlight/brightness\n    echo 70 \u003e /sys/class/backlight/nvidia_0/brightness\n\nSettings should be changed. If not, check configuration files path.\n\nMax brightness you can check via `cat /sys/class/backlight/nvidia_0/max_brightness` and `cat /sys/class/leds/tpacpi\\:\\:kbd_backlight/max_brightness`\n\nCreate script under `/usr/local/bin/`\n\n    sudo vim /usr/local/bin/setup-brightness.sh\n\nAnd put the lines below:\n\n```bash\n#!/bin/bash\n\necho 0 \u003e /sys/class/leds/tpacpi\\:\\:kbd_backlight/brightness\necho 1 \u003e /sys/class/leds/tpacpi\\:\\:kbd_backlight/brightness\necho 70 \u003e /sys/class/backlight/nvidia_0/brightness\n```\n\nCreate systemd service file:\n\n    sudo vim /etc/systemd/system/setup-brightness.service\n\nAnd put content below:\n\n```\n[Unit]\nAfter=graphical.target\nDescription=Set up the screen and keyboard brightness\n\n[Service]\nType=simple\nExecStart=/usr/local/bin/setup-brightness.sh\n\n[Install]\nWantedBy=multi-user.target\n```\n\nSet proper permissions:\n\n    sudo chmod 744 /usr/local/bin/setup-brightness.sh\n    sudo chmod 664 /etc/systemd/system/setup-brightness.service\n\nTest your script by running:\n\n    sudo /usr/local/bin/setup-brightness.sh\n\nEnable the service unit:\n\n    sudo systemctl daemon-reload\n    sudo systemctl enable setup-brightness.service\n\n## Disable UEFI Choice Screen\nThe easiest solution is to define the undocumented `GRUB_RECORDFAIL_TIMEOUT` variable in `/etc/default/grub`. For example:\n\n    sudo vim /etc/default/grub\n\nand add variable:\n\n    GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT\n\nAlso set `GRUB_TIMEOUT` to `0`. After run:\n\n    sudo update-grub\n\nExample:\n\n    GRUB_HIDDEN_TIMEOUT=0\n    GRUB_HIDDEN_TIMEOUT_QUIET=true\n    GRUB_TIMEOUT=0\n    GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT\n\n## Disable Enhanced Tailing\nIn Ubuntu 24.04 where certain applications such as Firefox use the top bar as the title bar, whenever you accidentally touch the top bar and drag, it resizes the window, which can be quite frustrating. \n\nTo disable this behaviour, you have to disable \"Enhanced Tailing\" under `Settings` -\u003e `Ubuntu Desktop`.\n\nBeware that turning that feature off will also disable \u003ckbd\u003eSuper\u003c/kbd\u003e + \u003ckbd\u003eUp\u003c/kbd\u003e and \u003ckbd\u003eSuper\u003c/kbd\u003e + \u003ckbd\u003eDown\u003c/kbd\u003e to maximize and minimize windows.\n\n# GUI\n\n## Move Dock To Bottom\n\nI prefer dock like Mac. To do this, run commands:\n\n    gsettings set org.gnome.shell.extensions.dash-to-dock extend-height false\n    gsettings set org.gnome.shell.extensions.dash-to-dock dock-position BOTTOM\n    gsettings set org.gnome.shell.extensions.dash-to-dock transparency-mode FIXED\n    gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 48\n    gsettings set org.gnome.shell.extensions.dash-to-dock unity-backlit-items false\n    gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize'\n\n## Easy Window Resize\nYou can resize windows very nicely:\n- Focus on a window\n- Hold \u003ckbd\u003eALT\u003c/kbd\u003e + Middle Mouse Click + Drag\n- Note: Depending on where you position your mouse to will resize up/down/left/right\n\n## Left or Right Close Buttons\nRun this simple command in the terminal and you will see the positions change right away.\n\nMove to right (terminal)\n\n    gsettings set org.gnome.desktop.wm.preferences button-layout ':minimize,maximize,close'\n\nMove to left (terminal)\n\n    gsettings set org.gnome.desktop.wm.preferences button-layout 'close,minimize,maximize:'\n\n\n## Fix Gnome Lockscreen\nIn terminal make sure this is false, then try your hotkey `ctrl+alt+l` or if you set it like `super+l` in the settings:\n\n    gsettings set org.gnome.desktop.lockdown disable-lock-screen 'false'\n\n## Gnome Extensions\nYou can toggle these items at https://extensions.gnome.org\nI suggest creating an account so you have a record.\n\n- [Apps Menu](https://extensions.gnome.org/extension/6/applications-menu/) - Add a category-based menu for apps.\n- [Clipboard Indicator](https://extensions.gnome.org/extension/779/clipboard-indicator/) - The most popular clipboard manager for GNOME, with over 1M downloads.\n- [Date Menu Formatter](https://extensions.gnome.org/extension/4655/date-menu-formatter/) - Allows customization of the date display in the panel.\n- [Desktop Icons NG (DING)](https://extensions.gnome.org/extension/2087/desktop-icons-ng-ding/) - Adds icons to the desktop. Fork of the original Desktop Icons extension, with several enhancements.\n- [Grand Theft Focus](https://extensions.gnome.org/extension/5410/grand-theft-focus/) - Removes the 'Window is ready' notification and brings the window into focus instead.\n- [Notification Banner Position](https://extensions.gnome.org/extension/4105/notification-banner-position/) - Changes position of the notification banner from the default to the right side of the screen.\n- [OpenWeather Refined](https://extensions.gnome.org/extension/6655/openweather/) - Display weather for the current or a specified location. Fork of OpenWeather. Weather data is provided by OpenWeatherMap.org or WeatherAPI.com or VisualCrossing.com.\n- [Status Area Horizontal Spacing](https://extensions.gnome.org/extension/355/status-area-horizontal-spacing/) - Reduce the horizontal spacing between icons in the top-right status area.\n- [Todo.txt](https://extensions.gnome.org/extension/570/todotxt/) - A Gnome shell interface for todo.txt.\n- [User Themes](https://extensions.gnome.org/extension/19/user-themes/) - Load shell themes from user directory.\n- [Vitals](https://extensions.gnome.org/extension/1460/vitals/) - A glimpse into your computer's temperature, voltage, fan speed, memory usage, processor load, system resources, network speed and storage stats.\n- [Wiggle](https://extensions.gnome.org/extension/1460/vitals/) - Wiggle is a GNOME 45+ port/fix for the scaling effect from Jiggle with better performance. Wiggle magnifies your cursor when the mouse is moved rapidly.\n\n\n## Reload Gnome Freeze\nThis is a rare things, it happens much more in Gnome and requires a lot more \"damaging\" things. To fix a gnome that seems frozen do the following:\n\n\u003ckbd\u003eALT + F2\u003c/kbd\u003e enter in \u003ckbd\u003er\u003c/kbd\u003e (lowecase) and press \u003ckbd\u003eEnter\u003c/kbd\u003e\n\n\n## Create Desktop Launcher\n\nCreate a `AppName.desktop` file in `~/.local/share/applications` with content:\n\n```\n[Desktop Entry]\nVersion=0.1.1\nType=Application\nName=appName\nComment=Application Description\nTryExec=Path/to/AppImage\nExec=Path/to/AppImage\nIcon=Path/to/AppImage.icon\nActions=Editor\n```\n\n\n***\n[(Back to top)](#table-of-contents)\n\n# Virtual Machine Related\n\nThis has to do with VirtualBox\n\n## Fix Mouse Side Buttons in VMWare\nAppend the following to `yourbox.vmx` with the machine off.\n\n    mouse.vusb.enable = \"TRUE\"\n    mouse.vusb.useBasicMouse = \"FALSE\"\n    usb.generic.allowHID = \"TRUE\"\n\n## Vagrant VBGuest Fix:\n\n    vagrant plugin install vagrant-vbguest\n\n    vagrant ssh\n    sudo ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions /usr/lib/VBoxGuestAdditions\n\n\n## Windows 8 VirtualBox Fix\nRunning Windows 8 in Virtualbox has an odd error, run this in `cmd` or `powershell`, or `terminal` on linux.\n\n    vboxmanage list vms\n    vboxmanage setextradata \"The Box Name\" VBoxInternal/CPUM/CMPXCHG16B 1\n\n***\n\n[(Back to top)](#table-of-contents)\n\n\n# Synchronize Configurations\n\n## Sync Sublime Text\nI am using Dropbox for syncing configurations\n\nInstall Package Control https://packagecontrol.io/installation#st3\n\nAfter:\n\n    cd ~/.config/sublime-text/Packages/\n    rm -rf User\n    ln -s ~/Dropbox/workspace/appdata/sublime-text/Packages/User\n\n\n## Sync FileZilla\n\n    cd ~/.config/filezilla\n    rm -f sitemanager.xml\n    ln -s ~/Dropbox/workspace/appdata/filezilla/sitemanager.xml\n\n\n# Chrome Addons\n\n- [Advanced REST client](https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo)\n- [Card Color Titles for Trello](https://chrome.google.com/webstore/detail/card-color-titles-for-tre/hpmobkglehhleflhaefmfajhbdnjmgim)\n- [Chrome Apps \u0026 Extensions Developer Tool](https://chrome.google.com/webstore/detail/chrome-apps-extensions-de/ohmmkhmmmpcnpikjeljgnaoabkaalbgc)\n- [ColorZilla](https://chrome.google.com/webstore/detail/colorzilla/bhlhnicpbhignbdhedgjhgdocnmhomnp)\n- [Docs PDF/PowerPoint Viewer](https://chrome.google.com/webstore/detail/docs-pdfpowerpoint-viewer/nnbmlagghjjcbdhgmkedmbmedengocbn)\n- [Full Page Screen Capture](https://chrome.google.com/webstore/detail/full-page-screen-capture/fdpohaocaechififmbbbbbknoalclacl)\n- [goo.gl URL Shortener](https://chrome.google.com/webstore/detail/googl-url-shortener/iblijlcdoidgdpfknkckljiocdbnlagk)\n- [HTTP Archive Viewer](https://chrome.google.com/webstore/detail/http-archive-viewer/ebbdbdmhegaoooipfnjikefdpeoaidml)\n- [JSONView](https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc)\n- [LastPass: Free Password Manager](https://chrome.google.com/webstore/detail/lastpass-free-password-ma/hdokiejnpimakedhajhdlcegeplioahd)\n- [React Developer Tools](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi)\n- [Recently Closed Tabs](https://chrome.google.com/webstore/detail/recently-closed-tabs/opefiliglgllmponlmoajkfbcaigocfc)\n- [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo)\n- [User-Agent Switcher for Chrome](https://chrome.google.com/webstore/detail/user-agent-switcher-for-c/djflhoibgkdhkhhcedjiklpkjnoahfmg)\n- [WML](https://chrome.google.com/webstore/detail/wml/obhgkibgbjdfojpkmoaanffdkcfpdodb)\n- [Xdebug helper](https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc)\n\n***\n\n[(Back to top)](#table-of-contents)\n\n# Other Applications\n- [DragonDisk](http://www.dragondisk.com/) S3\n- Kazam (Screen Recorder)\n- Shutter\n- gnome-system-tools\n- Terminator\n- Gdeb\n- MySQL Workbench\n- Bleachbit (Trash Cleaner)\n- Preload (Intelligent Bootup Time)\n\n***\n\n[(Back to top)](#table-of-contents)\n\n# Clean System\n\nRemove not neccessary apps from startup\n\nShow system apps in Startup Applications\n\n    sudo sed -i 's/NoDisplay=true/NoDisplay=false/g' /etc/xdg/autostart/*.desktop\n\nOpen \"Startup Applications\" and uncheck apps: Chat, Orca Screen Reader, Zeitgest Datahub\n\nHide system apps\n\n    sudo sed -i 's/NoDisplay=false/NoDisplay=true/g' /etc/xdg/autostart/*.desktop\n\nRemove any unwanted applications.\n\n***\n\n[(Back to top)](#table-of-contents)\n\n\nBy [Avtandil Kikabidze aka LONGMAN](https://github.com/akalongman)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakalongman%2Fubuntu-configuration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakalongman%2Fubuntu-configuration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakalongman%2Fubuntu-configuration/lists"}