I currently use Ubuntu OS on both my personal and work computers. However, I’m not a fan of GNOME, which led me to explore other OS options like Manjaro and Arch. These alternatives offered different desktop environments, but I still prefer Ubuntu due to its balance of simplicity and reliability.
After a year of using Arch-based distros, I decided to return to Ubuntu, but without GNOME. My goal is to create a fully customized, efficient desktop environment on Ubuntu that is easy to update and consistent across multiple machines.
In this proposal, I will outline the components of the v1 of my customized Ubuntu setup, or "rice," and the strategy for maintaining this configuration. This includes managing dotfiles and system requirements.
A complete v1 of my riced Ubuntu setup will feature a customized tiling window manager environment, with a working terminal emulator, a file manager, and text editor. The system will include necessary productivity tools, and all visual elements such as themes, icons, and fonts will be consistently applied. Custom keyboard shortcuts and panel layouts will be configured for efficiency.
Dotfiles will be managed using a Git repository, and an installation script will automate the setup process on new machines. Regular backups and a defined update process will ensure maintenance and consistency.
Once this is successfully achieved, I will test v1 for the minimum period of 6 months in all my machines.
- choice:
dwm
(dynamic window manager) - Rationale: Known for its simplicity, efficiency, and minimalism. Provides dynamic tiling, customization through patches, and extensibility through scripting.
- Choice:
alacritty
- Rationale: A fast, GPU-accelerated terminal emulator written in Rust. Known for its minimalism, performance, and configurability.
- Choice:
nautilus
(GNOME Files) - Rationale: A robust, user-friendly file manager that integrates well with the GNOME desktop environment. Provides essential file management features with a clean and intuitive interface.
- Choice:
vim
/neovim
- Rationale: A highly customizable, modal text editor with a strong focus on efficiency and productivity. Neovim is a modern fork of Vim with additional features and improvements.
- Launcher:
dmenu
- Rationale: dmenu is a fast and lightweight dynamic menu for X. It allows for quick and efficient launching of applications and execution of commands. Integrating dmenu into your workflow enhances the usability and productivity of your customized Ubuntu environment.
- Choice:
compton
- Rationale: A lightweight compositor for window effects, transparency, and desktop animations. Enhances the visual experience without sacrificing performance.
- Theme: Nord theme for a consistent and visually appealing look and feel.
- Icons: Font Awesome for a comprehensive set of icons.
- Fonts: JetBrains Mono font for code editing.
- Scripting: Utilize shell scripts for automation tasks, such as setting up the environment, managing configurations, and performing system maintenance.
- Choice: Git
- Rationale: Git is widely used for version control and allows you to manage and track changes to your dotfiles and other configuration files effectively.
To ensure system maintenance and consistency across multiple machines, the following strategies will be implemented:
All configuration files, commonly referred to as dotfiles, will be stored in a version control system using Git. This approach offers the following benefits:
- Version Control: Git allows for tracking changes to dotfiles over time, enabling easy rollback to previous configurations if needed.
- Synchronization: By maintaining dotfiles in a Git repository, configurations can be synchronized effortlessly across different machines, ensuring consistency.
- Collaboration: Git provides a centralized platform for collaboration, facilitating sharing and management of configurations with others.
- Backup: Dotfiles are effectively backed up in the Git repository, mitigating the risk of data loss due to system failures or accidental deletions.
An installation script will be created to automate the setup process on new machines or after a system reinstall. This script will encompass the following tasks:
- Package Installation: Necessary software packages and dependencies for the customized Ubuntu setup will be installed using the package manager (e.g., apt).
- Configuration Application: Customized configurations, including dotfiles, theme settings, keyboard shortcuts, and panel layouts, will be applied to ensure consistency across machines.
By implementing dotfile management and creating an installation script, a robust system maintenance strategy will be established. This ensures that the customized Ubuntu setup remains consistent, easily deployable, and well-maintained across all machines.
- Set up a development environment on your primary machine.
- Install necessary tools and dependencies for customization, including Git, Vim/Neovim, and relevant packages for your chosen window manager and terminal emulator.
- Create a Git repository to store your dotfiles.
- Start by adding essential dotfiles such as
.bashrc
,.vimrc
, and.config
files for your chosen applications. - Commit and push changes to the repository regularly to ensure version control.
- Customize configurations for your tiling window manager (dwm), terminal emulator (Alacritty), file manager (Nautilus), and text editor (Vim/Neovim).
- Experiment with themes, icons, fonts, and other visual elements to achieve the desired look and feel.
- Define keyboard shortcuts, panel layouts, and other efficiency-enhancing configurations.
- Write a shell script to automate the setup process on new machines.
- Include commands for installing necessary packages, applying configurations, and setting up essential tools and applications.
- Test the installation script thoroughly to ensure its reliability and effectiveness.
- Deploy your customized setup on multiple machines for testing.
- Validate configurations against common use cases and workflows to identify and address any issues or inconsistencies.
- Collect feedback from users and iterate on configurations as needed.
- Document your setup process, configurations, and customization choices.
- Create a user guide or README file to provide instructions for setting up and maintaining the customized Ubuntu environment.
- Include troubleshooting tips and common issues along with their solutions.
- Establish a routine for regular maintenance tasks, including system updates, backup procedures, and configuration adjustments.
- Monitor system performance and address any issues promptly to ensure optimal functionality.
- Keep the installation script and documentation up-to-date with any changes or improvements.
- Enhance multi-monitor support with advanced features such as independent workspace configurations, custom display arrangements, and optimized window management across screens.
- Develop a customizable taskbar and notification system to provide quick access to running applications and notifications without interrupting workflow.
- Implement a backup strategy to protect your data and configurations. Regularly back up critical files, including dotfiles, documents, and application settings. Consider using tools like rsync for incremental backups or automated backup solutions for convenience.
- Configuration Backup: Ensure that your installation script includes provisions for backing up existing configurations before applying new ones. This allows you to revert to a previous state if the new setup encounters issues.
- Test your setup thoroughly on different machines to ensure that configurations work as intended. Validate the setup against common use cases and workflows to identify and address any issues or inconsistencies.