3.1 - Essential Tasks
3.1.1 - Tune the system to the fastest server
sudo pacman-mirrors --fasttrack
3.1.2 - Update the system
sudo pacman -Syyu; sudo pacman -S --needed --noconfirm yay; yay -Syu --devel --timeupdate --needed --noconfirm;
3.1.3 - Install Linux Kernel & Headers
Manjaro Settings Manager ➜ Kernels – Click Install
3.1.3 - Clean up the system
sudo paccache -rk0; sudo pacman -Scc --noconfirm; yay -Yc --noconfirm; yay -Sc --noconfirm;
3.1.4 - Install the below programs using the terminal
Programs
sudo pacman -S --needed --noconfirm aspnet-runtime bind-tools clamav clamtk composer dnscrypt-proxy docker docker-compose dotnet-runtime dotnet-sdk electron exa fastfetch fail2ban filezilla firefox firejail firetools foliate git gufw hardinfo2 inkscape jq kate kdesvn krita lshw msbuild mpv mono musescore nano neofetch nerd-fonts net-tools npm nvm obs-studio okular pandoc php qbittorrent ufw virtualbox virtualbox-ext-vnc virtualbox-guest-iso virtualbox-guest-utils virtualbox-sdk wine xclip yarn zsh
yay -S --needed --noconfirm gitfiend sublime-text-dev unityhub
Astral's UV For Python
curl -LsSf https://astral.sh/uv/install.sh | sh
task-master-ai
For AI Agents
- Official Website: https://www.task-master.dev/
npm install -g task-master-ai && task-master init
3.1.5 - Configure Konsole & Install starship
Step 1 - Install Zsh & Set The Default Shell:
sudo pacman -S --needed --noconfirm zsh && chsh -s /usr/bin/zsh
Step 2 - Install Nerd Fonts & Starship:
Installation:
sudo pacman -S --needed --noconfirm ttf-firacode-nerd && curl -sS https://starship.rs/install.sh | sh
Create Configuration File:
mkdir -p ~/.config && touch ~/.config/starship.toml
Step 3 - Configure Starship:
Open The File:
kate ~/.config/starship.toml
Delete Everything & Paste The Following:
"$schema" = 'https://starship.rs/config-schema.json'
format = """
[](red)\
$os\
$username\
[](bg:mauve fg:red)\
$hostname\
[](bg:peach fg:mauve)\
$directory\
[](bg:yellow fg:peach)\
$git_branch\
$git_status\
[](fg:yellow bg:green)\
$c\
$rust\
$golang\
$nodejs\
$php\
$java\
$kotlin\
$haskell\
$python\
$ruby\
$dotnet\
[](fg:green bg:sapphire)\
$conda\
$docker_context\
$kubernetes\
$terraform\
$vagrant\
$direnv\
$aws\
$gcloud\
$azure\
[](fg:sapphire bg:lavender)\
$time\
$package\
$jobs\
$battery\
[ ](fg:lavender)\
$cmd_duration\
$line_break\
$character"""
palette = 'catppuccin_mocha'
[os]
disabled = false
style = "bg:red fg:crust"
[os.symbols]
Windows = ""
Ubuntu = ""
SUSE = ""
Raspbian = ""
Mint = ""
Macos = ""
Manjaro = ""
Linux = ""
Gentoo = ""
Fedora = ""
Alpine = ""
Amazon = ""
Android = ""
Arch = ""
Artix = ""
CentOS = ""
Debian = ""
Redhat = ""
RedHatEnterprise = ""
[username]
show_always = true
style_user = "bg:red fg:crust"
style_root = "bg:red fg:crust bold"
format = '[ $user ]($style)'
[hostname]
ssh_only = false
style = "bg:mauve fg:crust"
format = '[ $hostname ]($style)'
disabled = false
[directory]
style = "bg:peach fg:crust"
format = "[ $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"
home_symbol = ""
read_only = " "
[directory.substitutions]
"Documents" = ""
"Downloads" = ""
"Music" = ""
"Pictures" = ""
"Developer" = ""
"Desktop" = ""
"Videos" = ""
[git_branch]
symbol = ""
style = "bg:yellow fg:crust"
format = '[ $symbol $branch ]($style)'
[git_status]
style = "bg:yellow fg:crust"
format = '[$all_status$ahead_behind ]($style)'
conflicted = "="
ahead = "⇡${count}"
behind = "⇣${count}"
diverged = "⇕⇡${ahead_count}⇣${behind_count}"
up_to_date = ""
untracked = "?${count}"
stashed = "$${count}"
modified = "!${count}"
staged = "+${count}"
renamed = "»${count}"
deleted = "✘${count}"
[nodejs]
symbol = ""
style = "bg:green fg:crust"
format = '[ $symbol ($version) ]($style)'
detect_extensions = ["js", "mjs", "cjs", "ts", "mts", "cts"]
detect_files = ["package.json", ".node-version", ".nvmrc"]
detect_folders = ["node_modules"]
[c]
symbol = ""
style = "bg:green fg:crust"
format = '[ $symbol ($version) ]($style)'
detect_extensions = ["c", "h"]
detect_files = ["Makefile", "CMakeLists.txt"]
[rust]
symbol = ""
style = "bg:green fg:crust"
format = '[ $symbol ($version) ]($style)'
detect_extensions = ["rs"]
detect_files = ["Cargo.toml"]
[golang]
symbol = ""
style = "bg:green fg:crust"
format = '[ $symbol ($version) ]($style)'
detect_extensions = ["go"]
detect_files = ["go.mod", "go.sum", "go.work"]
[php]
symbol = ""
style = "bg:green fg:crust"
format = '[ $symbol ($version) ]($style)'
detect_extensions = ["php"]
detect_files = ["composer.json", ".php-version"]
[java]
symbol = ""
style = "bg:green fg:crust"
format = '[ $symbol ($version) ]($style)'
detect_extensions = ["java", "class", "gradle", "jar", "cljs", "cljc"]
detect_files = ["pom.xml", "build.gradle.kts", "build.sbt", ".java-version", "deps.edn", "project.clj", "build.boot"]
[kotlin]
symbol = ""
style = "bg:green fg:crust"
format = '[ $symbol ($version) ]($style)'
detect_extensions = ["kt", "kts"]
[haskell]
symbol = ""
style = "bg:green fg:crust"
format = '[ $symbol ($version) ]($style)'
detect_extensions = ["hs", "cabal", "hs-boot"]
detect_files = ["stack.yaml", "cabal.project"]
[python]
symbol = ""
style = "bg:green fg:crust"
format = '[ $symbol ($version) (\($virtualenv\)) ]($style)'
pyenv_version_name = true
python_binary = ["python", "python3", "python2"]
detect_extensions = ["py"]
detect_files = [".python-version", "Pipfile", "__init__.py", "pyproject.toml", "requirements.txt", "setup.py", "tox.ini"]
[ruby]
symbol = ""
style = "bg:green fg:crust"
format = '[ $symbol ($version) ]($style)'
detect_extensions = ["rb"]
detect_files = ["Gemfile", ".ruby-version"]
detect_folders = []
detect_variables = ["RUBY_VERSION", "RBENV_VERSION"]
[dotnet]
symbol = ""
style = "bg:green fg:crust"
format = '[ $symbol ($version) ]($style)'
heuristic = true
detect_extensions = ["csproj", "fsproj", "xproj"]
detect_files = ["global.json", "project.json", "Directory.Build.props", "Directory.Build.targets", "Packages.props"]
[docker_context]
symbol = ""
style = "bg:sapphire fg:crust"
format = '[ $symbol $context ]($style)'
only_with_files = true
detect_files = ["docker-compose.yml", "docker-compose.yaml", "Dockerfile"]
[conda]
symbol = ""
style = "bg:sapphire fg:crust"
format = '[ $symbol $environment ]($style)'
ignore_base = false
[kubernetes]
symbol = ""
style = "bg:sapphire fg:crust"
format = '[ $symbol $context( \($namespace\)) ]($style)'
disabled = false
detect_files = ["k8s"]
[terraform]
symbol = ""
style = "bg:sapphire fg:crust"
format = '[ $symbol $workspace ]($style)'
detect_extensions = ["tf", "tfplan", "tfstate"]
detect_files = []
detect_folders = [".terraform"]
[vagrant]
symbol = "⍱"
style = "bg:sapphire fg:crust"
format = '[ $symbol ($version) ]($style)'
detect_files = ["Vagrantfile"]
[direnv]
symbol = ""
style = "bg:sapphire fg:crust"
format = '[ $symbol $loaded/$allowed ]($style)'
disabled = false
detect_files = [".envrc", ".env"]
[aws]
symbol = ""
style = "bg:sapphire fg:crust"
format = '[ $symbol ($profile )(\($region\)) ]($style)'
disabled = true
[gcloud]
symbol = ""
style = "bg:sapphire fg:crust"
format = '[ $symbol ($account@$domain )($project )(\($region\)) ]($style)'
disabled = true
[azure]
symbol = ""
style = "bg:sapphire fg:crust"
format = '[ $symbol ($subscription) ]($style)'
disabled = true
[time]
disabled = false
time_format = "%R"
style = "bg:lavender fg:crust"
format = '[ $time ]($style)'
use_12hr = false
[package]
symbol = ""
style = "bg:lavender fg:crust"
format = '[ $symbol $version ]($style)'
display_private = false
version_format = "v${raw}"
[jobs]
symbol = ""
style = "bg:lavender fg:crust"
format = '[ $symbol $number ]($style)'
number_threshold = 1
symbol_threshold = 1
[battery]
full_symbol = ""
charging_symbol = ""
discharging_symbol = ""
unknown_symbol = ""
empty_symbol = ""
format = "[ $symbol$percentage ]($style)"
[[battery.display]]
threshold = 10
style = "bg:lavender fg:red bold"
[[battery.display]]
threshold = 30
style = "bg:lavender fg:yellow"
[[battery.display]]
threshold = 100
style = "bg:lavender fg:crust"
[line_break]
disabled = false
[character]
success_symbol = '[❯](bold fg:green)'
error_symbol = '[❯](bold fg:red)'
vimcmd_symbol = '[❮](bold fg:green)'
vimcmd_replace_one_symbol = '[❮](bold fg:lavender)'
vimcmd_replace_symbol = '[❮](bold fg:lavender)'
vimcmd_visual_symbol = '[❮](bold fg:yellow)'
[cmd_duration]
min_time = 2_000
show_milliseconds = false
format = "took [$duration]($style) "
style = "fg:yellow"
show_notifications = true
min_time_to_notify = 45_000
notification_timeout = 5_000
[palettes.catppuccin_mocha]
rosewater = "#f5e0dc"
flamingo = "#f2cdcd"
pink = "#f5c2e7"
mauve = "#cba6f7"
red = "#f38ba8"
maroon = "#eba0ac"
peach = "#fab387"
yellow = "#f9e2af"
green = "#a6e3a1"
teal = "#94e2d5"
sky = "#89dceb"
sapphire = "#74c7ec"
blue = "#89b4fa"
lavender = "#b4befe"
text = "#cdd6f4"
subtext1 = "#bac2de"
subtext0 = "#a6adc8"
overlay2 = "#9399b2"
overlay1 = "#7f849c"
overlay0 = "#6c7086"
surface2 = "#585b70"
surface1 = "#45475a"
surface0 = "#313244"
base = "#1e1e2e"
mantle = "#181825"
crust = "#11111b"
Step 4 - Add catppucin
Preset:
starship preset catppuccin-powerline -o ~/.config/starship.toml
- Go to
Konsole > Settings > Edit Current Profile
>Appearance
tab. - Select the
Catppuccin Mocha
scheme from theColor Schemes & Background
pane.
3.1.6 – Extra Programs & Modules
megasync
rtl8852au-dkms-git
linux{VERSION}-virtualbox-guest-modules
linux{VERSION}-virtualbox-host-modules
3.1.7 – Install Snap Packages
yay -S snapd; sudo systemctl enable --now snapd.socket; sudo ln -s /var/lib/snapd/snap /snap
[Log Off then Log In again]
sudo snap install poedit;
3.1.8 – Adjust The Settings
- Auto-Install Proprietary Drivers.
- Install the newest Linux kernel + the latest LTS kernel.
- Install the latest linux kernel headers using the command:
yay -S linux??-headers
- Install the language packages.
- Change "Global Theme" to "Breeze".
- Tune Startup and Shutdown.
- Tune Default Applications.
- Tune Display & Monitor > Compositor > Instant Animation Speed.
- Tune Display & Monitor > Night Color > Constant (4200K).
- Tune Power Management Settings.
- Configure Digital Clock > dddd, MMMM - dd/MM/yyyy
- Tune the HiDPI.
- Add a “task manager” widget to the panel rather than the “icons-only” one.
- Configure Dolphin settings.
- Configure Sublime, VS Code, Opera, and Firefox.
- Activate the firewall gufw and configure the profile to public.
3.1.9 - Activate the Indexer (Baloo)
- Step 1: Check Baloo
balooctl6 enable && balooctl6 check && balooctl6 status
- Step 2: Configure Baloo
Path:
kate ~/.config/baloofilerc
Add the following code at the bottom of the file:
[Basic Settings]
Indexing-Enabled=true
3.1.10 - Configure & Secure The DNS
- Step 1: Install DNSCrypt
sudo pacman -S --needed --noconfirm dnscrypt-proxy
- Step 2: Edit The DNSCrypt Configuration File
2.1 - Open The File:
kate /etc/dnscrypt-proxy/dnscrypt-proxy.toml
2.2 - Configure the file as follows:
server_names = ['cloudflare']
listen_addresses = ['127.0.0.1:53', '[::1]:53']
dnscrypt_servers = true
doh_servers = true
require_dnssec = true
Note: You need to find the lines above, uncomment them, then replace them with the above values.
- Step 3: Enable the dnscrypt proxy service
sudo systemctl enable dnscrypt-proxy | sudo systemctl start dnscrypt-proxy
- Step 4: Configure The Network Settings
4.1 - Open the following network configuration file
kate /etc/resolv.conf
Then delete everything you find in that file and replace it with the following:
nameserver 127.0.0.1
nameserver ::1
options edns0
4.2 - Disable systemd-resolved
sudo systemctl disable systemd-resolved && sudo systemctl stop systemd-resolved
4.3 - Configure NetworkManager
- Create a configuration file for
NetworkManager
:
sudo nano /etc/NetworkManager/conf.d/dns.conf
- Add the following content to ensure
NetworkManager
usesdnscrypt-proxy
:
[main]
dns=none
4.4 - Check the network manager manually
- Go to the
System Settings > Wi-Fi & Networking
then select your connection. - Go to the IPv4 tab and set the method to
Automatic (Only addresses)
and the DNS Servers to:1.1.1.2,1.0.0.2
- Go to the IPv6 tab and set the method to
Automatic (Only addresses)
and the DNS Servers to:2606:4700:4700::1112,2606:4700:4700::1002
- Save the settings and close the network manager.
4.5 - Restart the network manager
Restart the network manager and test the dnscrypt proxy by typing the following command:
sudo systemctl restart NetworkManager | sudo systemctl status dnscrypt-proxy
4.7 - Verify Your Connection
Open your web browser, and test the connection using the following link:
- https://browserleaks.com/ip
- https://one.one.one.one/help/
- https://www.cloudflare.com/ssl/encrypted-sni/
4.8 - Lock & Unlock resolv.conf
Lock resolv.conf
:
sudo chattr +i /etc/resolv.conf
Unlock resolv.conf
:
sudo chattr -i /etc/resolv.conf