Skip to content

My configuration for Fedora i3 Spin with Gruvbox color scheme.

Notifications You must be signed in to change notification settings

hafiz-muhammad/fedora-i3-gruvbox-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My Configuration for Fedora i3 Spin Fedora Badge

Fedora i3 Spin screenshot
i3-1
Polybar
polybar
Rofi Neofetch
rofi neofetch

Documentations


Essential Software & Utilities

  • picom - picom is a compositor for X, and a fork of Compton.
  • Polybar - A fast and easy-to-use status bar.
  • Alacritty - A cross-platform, OpenGL terminal emulator.
  • Rofi - A window switcher, application launcher and dmenu replacement.
    • Rofimoji - Emoji, unicode and general character picker for rofi and rofi-likes.
    • Greenclip - Simple clipboard manager to be integrated with rofi - Static binary available
  • xfce4-power-manager - Xfce Power Manager uses the information and facilities provided by HAL to display icons and handle user callbacks in an interactive Xfce session. Xfce Power Preferences allows authorised users to set policy and change preferences.
  • Xbacklight - Xbacklight is used to adjust the backlight brightness where supported. It finds all outputs on the X server supporting backlight brightness control and changes them all in the same way.
  • NetworkManager - A system service that manages network interfaces and connections based on user or automatic configuration.
  • nm-connection-editor - A network connection configuration editor for NetworkManager.
  • nm-connection-editor-desktop - The desktop file for nm-connection-editor.
  • pavucontrol - PulseAudio Volume Control (pavucontrol) is a simple GTK based volume control tool ("mixer") for the PulseAudio sound server. In contrast to classic mixer tools this one allows you to control both the volume of hardware devices and of each playback stream separately.
  • Thunar - A modern file manager for the Xfce Desktop Environment.
    • gvfs - The gvfs package provides backend implementations for the gio framework in GLib. It includes ftp, sftp, cifs.
  • Flameshot - Powerful yet simple to use screenshot software.
  • SimpleScreenRecorder - SimpleScreenRecorder is a screen recorder for Linux.
  • Ristretto - Ristretto is an image viewer for the Xfce desktop environment. The Ristretto Image Viewer is an application that can be used to view and scroll through images, run a slideshow of images, open images with other applications like an image-editor or configure an image as the desktop wallpaper.
  • ARandR - ARandR is designed to provide a simple visual front end for XRandR 1.2/1.3. Relative monitor positions are shown graphically and can be changed in a drag-and-drop way.
  • GParted - GParted is a free partition editor for graphically managing your disk partitions.
  • GNOME Disks - GNOME Disks is a graphical front-end for udisks.
  • Fedora Media Writer - A tool to write images of Fedora media to portable drives like flash drives or memory cards.
  • Blueman - Blueman is a tool to use Bluetooth devices.
  • lxpolkit - LXPolkit is a minimalized policykit authentication agent for the LXDE desktop.
  • CUPS - CUPS printing system provides a portable printing layer for UNIX® operating systems. It has been developed by Apple Inc. to promote a standard printing solution for all UNIX vendors and users. CUPS provides the System V and Berkeley command-line interfaces.
  • system-config-printer - system-config-printer is a graphical user interface that allows the user to configure a CUPS printer server.
  • FFmpeg - FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata.
  • Xarchiver - Xarchiver is a lightweight GTK frontend for manipulating 7z, arj, bzip2, gzip, iso, rar, lha, tar, zip, RPM and deb files. It allows you to create archives and add, extract, and delete files from them. Password protected archives in the arj, 7z, rar, and zip formats are supported.
  • MPD - An MPD (Music Player Daemon) client library written in pure Python.
  • Git - Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals. The git rpm installs common set of tools which are usually using with small amount of dependencies. To install all git packages, including tools for integrating with other SCMs, install the git-all meta-package.
  • Pip - Pip is the package installer for Python. You can use pip to install packages from the Python Package Index and other indexes.
  • Ruby - A tool for translating text from source grammar to target grammar (context-free) with corresponding dictionary.
  • Node.js - Open-source cross-platform server-side JavaScript runtime environment.
  • i3lock - i3lock is a simple screen locker like slock. After starting it, you will see a white screen (you can configure the color/an image). You can return to your screen by entering your password.
  • scrot - scrot is a simple command line screen capture utility.
  • ImageMagick - ImageMagick is an image display and manipulation tool for the X Window System. ImageMagick can read and write JPEG, TIFF, PNM, GIF, and Photo CD image formats. It can resize, rotate, sharpen, color reduce, or add special effects to an image, and when finished you can either save the completed work in the original format or a different one. ImageMagick also includes command line programs for creating animated or transparent .gifs, creating composite images, creating thumbnail images, and more.
  • calcurse - Calcurse is a text-based calendar and scheduling application. It helps keep track of events, appointments, and everyday tasks.
  • wttr.in - wttr.in is a console-oriented weather forecast service that supports various information representation methods like terminal-oriented ANSI-sequences for console HTTP clients (curl, httpie, or wget), HTML for web browsers, or PNG for graphical viewers.

Autotiling

  • autotiling - Script for sway and i3 to automatically switch the horizontal / vertical window split orientation
pip install autotiling

Web Browsers

  • Firefox - A free and open-source web browser developed by the Mozilla Foundation. No shady privacy policies or back doors for advertisers. Just a lightning fast browser that doesn’t sell you out.

Text Editors & IDEs

  • nano - GNU nano is a small editor for on the terminal.
  • VSCodium - Binary releases of VS Code without MS branding/telemetry/licensing.
  • Geany - Geany is a small and fast integrated development environment with basic features and few dependencies to other packages or Desktop Environments.

Optimization

  • auto-cpufreq - Automatic CPU speed & power optimizer for, Linux based on active monitoring of a laptop's battery state, CPU usage, CPU temperature and system load. Ultimately allowing you to improve battery life without making any compromises.
  • ZRAM - ZRAM is a Linux block device that can be used for compressed swap in memory. It's useful in memory constrained devices. This provides a service to setup ZRAM as a swap device based on criteria such as available memory.
  • profile-sync-daemon - Symlinks and syncs browser profile dirs to RAM thus reducing HDD/SDD calls and speeding-up browsers.

Essential Security Utilities

  • UFW - Ufw stands for Uncomplicated Firewall, and is program for managing a netfilter firewall. It provides a command line interface and aims to be uncomplicated and easy to use.
  • ClamAV - ClamAV® is an open source antivirus engine for detecting trojans, viruses, malware & other malicious threats.
  • chkrootkit - chkrootkit is a tool to locally check for signs of a rootkit.
  • Lynis - Lynis - Security auditing tool for Linux, macOS, and UNIX-based systems. Assists with compliance testing (HIPAA/ISO27001/PCI DSS) and system hardening. Agentless, and installation optional.
  • rkhunter - Rootkit Hunter, security monitoring and analyzing tool.
  • Fail2Ban - Fail2Ban scans log files and bans IP addresses that makes too many password failures. It updates firewall rules to reject the IP address. These rules can be defined by the user. Fail2Ban can read multiple log files such as sshd or Apache web server ones.
  • Firejail - Firejail is a SUID sandbox program that reduces the risk of security breaches by restricting the running environment of untrusted applications using Linux namespaces. It includes a sandbox profile for Mozilla Firefox.

Customization

  • LXAppearance - LXAppearance is a new GTK+ theme switcher developed for LXDE, the Lightweight X11 Desktop Environment.

    Default font:

    • Family: FiraCode Nerd Font
    • Size: 10
    • Style: Regular
  • gruvbox-plus-icon-pack - Gruvbox Plus icon pack for Linux desktops based on Gruvbox color theme.

  • Gruvbox Plus theme for GTK2 and GTK3 - Gruvbox+ dark theme for GTK2 and GTK3.

  • feh - feh is a light-weight, configurable and versatile image viewer.

  • Nitrogen - Background browser and setter for X windows.

  • Nerd Fonts - Iconic font aggregator, collection, & patcher.

  • Oh My Posh - A prompt theme engine for any shell.


System Monitoring and Information Utilities

  • htop - An interactive process viewer.
  • btop - A monitor of resources
  • nmon - nmon is a systems administrator, tuner, benchmark tool, which provides information about CPU, disks, network, etc., all in one view.
  • lm_sensors - The lm_sensors package includes a collection of modules for general SMBus access and hardware monitoring.
  • collectl - A utility to collect Linux performance data.
  • Smartctl - This is a fault monitoring and testing interface that can be quite useful, both as a way to monitor the health of your disks and test them.
  • Neofetch - A command-line system information tool written in bash 3.2+

Media Players & Utilities

  • VLC - VLC is a free and open source cross-platform multimedia player and framework that plays most multimedia files, and various streaming protocols.
  • Lollypop - A GNOME music playing application.
  • Playerctl - Playerctl is a command-line utility and library for controlling media players that implement the MPRIS D-Bus Interface Specification.

Wine

  • Wine - Wine (originally an acronym for "Wine Is Not an Emulator") is a compatibility layer capable of running Windows applications on several POSIX-compliant operating systems, such as Linux, macOS, & BSD. Instead of simulating internal Windows logic like a virtual machine or emulator, Wine translates Windows API calls into POSIX calls on-the-fly, eliminating the performance and memory penalties of other methods and allowing you to cleanly integrate Windows applications into your desktop.
  • Winetricks - Winetricks is an easy way to work around problems in Wine.

Other Software & Utilities

  • KeePassXC - A Cross-Platform Password Manager
  • VeraCrypt - VeraCrypt is a free open source disk encryption software for Windows, Mac OSX and Linux.
  • Cryptomator - Encrypt Dropbox, Google Drive, and any other cloud. Cryptomator is free and open source.
  • Syncthing - A continuous file synchronization program. It synchronizes files between two or more computers in real time, safely protected from prying eyes.
  • Authenticator - Simple application for generating Two-Factor Authentication Codes.
    • gnome-keyring - The gnome-keyring session daemon manages passwords and other types of secrets for the user, storing them encrypted with a main password. Applications can use the gnome-keyring library to integrate with the keyring.
  • Thunderbird - Mozilla Thunderbird is a standalone mail and newsgroup client.
  • Ferdium - All your services in one place, built by the community
  • VirtualBox - Oracle VM VirtualBox is a type-2 hypervisor for x86 virtualization developed by Oracle Corporation.
  • Ranger - A VIM-inspired filemanager for the console.
  • AppImageLauncher - Helper application for Linux distributions serving as a kind of "entry point" for running and integrating AppImages.
  • GIMP - A free and open-source raster graphics editor.
  • Inkscape - A free and open-source vector graphics editor used to create vector images.
  • Krita - A free and open source painting program.
  • BleachBit - Delete traces of your computer activity and other junk files to free disk space and maintain privacy.
  • PeaZip - PeaZip is free file archiver utility, based on Open Source technologies of 7-Zip, p7zip, Brotli, FreeArc, PAQ, Zstandard, and PEA projects. Cross-platform, full-featured but user-friendly alternative to WinRar, WinZip and similar general purpose archive manager applications, open and extract 200+ archive formats: 001, 7Z, ACE, ARC, ARJ, BR, BZ2, CAB, DMG, GZ, ISO, LHA, PAQ, PEA, RAR, TAR, UDF, WIM, XZ, ZIP, ZIPX, ZST - view full list of supported archive file formats for archiving and for extraction.
  • Joplin - A free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks.
  • Metadata Cleaner - View and clean metadata in files.
  • qBittorrent - A Bittorrent client using rb_libtorrent and a Qt6 Graphical User Interface. It aims to be as fast as possible and to provide multi-OS, unicode support.
  • GitHub Desktop - This version of GitHub Desktop is a fork that adds support for Linux.
  • LibreOffice - LibreOffice is an Open Source, community-developed, office productivity suite. It includes the key desktop applications, such as a word processor, spreadsheet, presentation manager, formula editor and drawing program, with a user interface and feature set similar to other office suites. Sophisticated and flexible, LibreOffice also works transparently with a variety of file formats, including Microsoft Office File Formats.
  • prename - Prename renames the file names supplied according to the rule specified as the first argument. The argument is a Perl expression which is expected to modify the $_ string for at least some of the file names specified.

Enable RPM Fusion Repositories

Free Repository

sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm -y && dnf upgrade -y

Nonfree Repository

sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm -y && dnf upgrade -y

Howto/NVIDIA - RPM Fusion

Install NVIDIA driver on Fedora


Enable Flathub on Fedora

dnf install flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Thunar and GVFS Installation

sudo dnf install thunar*
sudo dnf install gvfs*

FFmpeg Installation

This will also fix laggy video playback in Firefox.

sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install ffmpeg ffmpeg-libs

CUPS Installation and Enabling Service

You can directly access the Administration section of the web browser interface by going to http://localhost:631/admin.

sudo dnf install cups*
sudo dnf install system-config-printer
sudo systemctl start cups.service
sudo systemctl enable cups.service

ZRAM Installation and Enabling Service

sudo dnf install zram zram-generator-defaults zram-generator
sudo systemctl start zram-swap.service
sudo systemctl start zram-swap.service
sudo systemctl enable zram-swap.service
reboot

Install and Apply Default Restrictive Policy for UFW

sudo dnf install ufw
sudo systemctl start ufw.service
sudo systemctl enable ufw.service
sudo ufw enable
sudo ufw default deny incoming

ClamAV Installation and Enabling Service

How to Install ClamAV on Fedora Linux

sudo dnf upgrade --refresh
sudo dnf install clamav clamd clamav-update -y
sudo systemctl stop clamav-freshclam
sudo systemctl enable clamav-freshclam --now

Fail2Ban Installation and Enabling Service

sudo dnf install fail2ban
sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Enable auto-cpufreq Service

git clone https://github.com/AdnanHodzic/auto-cpufreq.git
cd auto-cpufreq && sudo ./auto-cpufreq-installer
sudo auto-cpufreq --install
sudo systemctl start auto-cpufreq
sudo systemctl enable auto-cpufreq

Prerequisites

Procedure

  • Use the dnf utility to install packages that provide multimedia libraries:
sudo dnf install gstreamer1-plugins-{bad-\*,good-\*,base} gstreamer1-plugin-openh264 gstreamer1-libav --exclude=gstreamer1-plugins-bad-free-devel
sudo dnf install lame\* --exclude=lame-devel
sudo dnf group upgrade --with-optional Multimedia

Intel - Screen Tearing Fix

More information on the ArchWiki.
Create a configuration file in /etc/X11/xorg.conf.d named 20-intel.conf

sudo touch /etc/X11/xorg.conf.d/20-intel.conf

Add the following to the new configuration file:

Section "Device"
  Identifier "Intel Graphics"
  Driver "Intel"
  Option "TearFree" "true"
EndSection

TearFree may not work when SwapbuffersWait is false.
For Intel UHD 620 or 630 add Option "TripleBuffer" "true" to make TearFree work.

Then reboot.


NVIDIA - Screen Tearing Fix

Install nvidia-settings and run it as sudo.

sudo dnf install nvidia-settings && nvidia-settings
  • Go to X Server Display Configuration > Advanced
  • Enable Force Full Composition Pipeline
  • Apply and Save to Configuration File.
  • Reboot

How To Speed Up DNF Package Manager

1. Update Fedora and installed packages. Install dnf-plugins-core.

sudo dnf upgrade --refresh -y
sudo dnf install dnf-plugins-core -y

2. Edit the DNF configuration file. You can use whatever text editor you'd like, it doesn't have to be nano.

sudo nano /etc/dnf/dnf.conf

3. Add the following to dnf.conf:

Enable the fastest mirror: fastestmirror=True

Set the maximum number of simultaneous package downloads: max_parallel_downloads=10

4. Run the following command in the terminal:

sudo dnf upgrade --refresh -y

Force ALSA to Detect All Available Audio Devices

1. Open a terminal and run the following command to check the name of the sound card driver.

cat /proc/asound/modules 

2. Open a terminal and type the following command:

sudo nano /etc/modprobe.d/alsa-base.conf

3. Add the following line at the end of the file: options <driver_name> probe_mask=1. Replace <driver_name> with the name of your sound card driver.

4. Save the file and exit the editor.

5. Reboot the system.


How to Install and Configure profile-sync-daemon

More information on the ArchWiki and OSTechNix.

1. Install profile-sync-daemon:

sudo dnf install profile-sync-daemon

2. Create Psd configuration file by running the following command:

psd

3. Edit psd configuration file:

nano ~/.config/psd/psd.conf

Look for the line labeled BROWSERS in the configuration file, remove the # symbol to uncomment it, and then include your browsers separated by spaces. Example: BROWSERS=(chromium firefox)

4. Enable and Start psd Service:

systemctl --user enable psd 
reboot
systemctl --user start psd

5. Verify psd Service is Started or Not:

systemctl --user status psd