A Shell Script that Configures the GNOME Desktop Programmatically

The jc-gnome-settings repository provides the jc-gnome-settings.sh script, which holds James Cherti's settings to customize the GNOME desktop environment, including window management, notifications, desktop behavior, keyboard settings, and more, to enhance the user experience. Requirements gsettings Usage Clone the repository: git clone https://github.com/jamescherti/jc-gnome-settings Navigate to the repository directory: cd jc-gnome-settings Run the script to configure GNOME: ./jc-gnome-settings.sh Author and License The jc-gnome-settings tool has been written by James Cherti and is distributed under terms of the MIT license. Links jc-gnome-settings @GitHub Other projects by the same author: jc-dotfiles @GitHub: A collection of UNIX/Linux configuration files. You can either install them directly … Continue reading

A Shell Script that Automates XFCE Desktop Configuration

The jc-xfce-settings project provides the jc-xfce-settings.sh script, which holds James Cherti's settings to customize the XFCE desktop environment, including window management, notifications, desktop behavior, keyboard settings, and more, to enhance the user experience. (The jc-xfce-settings.sh script was created with the help of watch-xfce-xfconf) Requirements The XFCE Desktop Environment, and xfconf-query utility that is part of XFCE. Usage Clone the repository: git clone https://github.com/jamescherti/jc-xfce-settings Navigate to the repository directory: cd jc-xfce-settings Run the script to configure XFCE: ./jc-xfce-settings.sh Features Title Bar Customization: Simplifies button layout for easier window management. Font and Display Settings: Enables anti-aliasing, hinting, and configures RGBA rendering. File … Continue reading

update-iptables - A low-level Linux firewall for advanced users

The update-iptables script implements a firewall for managing network traffic and routing. It supports a modular configuration model through drop-in scripts located in /etc/update-iptables.d/. Each file is a shell script executed sequentially during firewall initialization. This low-level firewall script is intended for Linux system administrators who require precise control over packet states, network address translation, and custom routing chains. Rules are defined directly through iptables without the abstraction layers commonly introduced by modern firewall management tools. If this low-level firewall proves useful, please support the project by ⭐ starring update-iptables on GitHub, helping more developers discover it. Requirements bash iptables … Continue reading

bash-stdops - A collection of Bash helper scripts that facilitate operations

The bash-stdops project is a collection of helpful Bash scripts, written by James Cherti, that simplify various operations, including file searching, text replacement, and content modification. The author uses these scripts in conjunction with text editors like Emacs and Vim to automate tasks, including managing Tmux sessions, replacing text across a Git repository, securely copying and pasting from the clipboard by prompting the user before executing commands in Tmux, fix permissions, among other operations. Install bash-stdops scripts System-wide installation To install bash-stdops scripts system-wide, use the following command: git clone https://github.com/jamescherti/bash-stdops cd bash-stdops sudo ./make.sh install Alternative installation: Install in … Continue reading

Bash shell: Interactive Menu to Insert any String from the Tmux Scrollback Buffer Into the Shell Prompt

Imagine you're working in a tmux session, navigating logs, editing config files, or running commands, and you suddenly need to reuse a path, a variable name, or a keyword that appeared earlier on the tmux scrollback buffer. Instead of scrolling back or retyping it manually, you press Ctrl-n, type a few fuzzy letters, press enter, and the desired string from the tmux scrollback is instantly inserted at your cursor. The tmux scrollback buffer is the internal history of terminal output that tmux maintains for each pane. It consists of the lines that have scrolled off the visible screen but are … Continue reading

jc-dotfiles - James Cherti's Dotfiles

The jc-dotfiles repository houses James Cherti's dotfiles and configuration scripts: Shell Configuration (.bashrc, .profile, and .bash_profile): Optimized Bash shell settings for efficient command execution and interactive sessions. Terminal Multiplexer (.tmux.conf): Configuration for Tmux, enhancing terminal session management and productivity. Readline configuration (.inputrc): Inputrc configuration that also allows using Alt-h, Alt-j, Alt-k, and Alt-l as a way to move the cursor. Other: .gitconfig (with support for difftastic), ranger, .ignore, .wcalcrc, mpv, picom, feh, and various scripts and configuration files for managing system settings, aliases, and more. Here are additional dotfiles and configuration files maintained by the same author: jc-dotfiles @GitHub: A … Continue reading

bash-stdops - A collection of useful Bash Shell Scripts

The jamescherti/bash-stdops project is a collection of helpful Bash scripts that simplify various operations, including file searching, text replacement, and content modification. I use these scripts in conjunction with text editors like Emacs and Vim to automate tasks, including managing Tmux sessions, replacing text across a Git repository, securely copying and pasting from the clipboard by prompting the user before executing commands in Tmux, fix permissions, among other operations. The bash-stdops Script Collection Overview Files, Paths, and Strings Git SSH Tmux X11/Wayland Misc Conclusion The jamescherti/bash-stdops scripts provide a variety of tasks, including file manipulation, Git management, and SSH automation, … Continue reading

Making 'cron' notify the user about a failed command by redirecting its output to stderr only when it fails (non-zero exit code)

Monitoring the success or failure of cron jobs can be challenging, especially when multiple jobs cause cron to send emails even when they don't fail. A more effective approach to handling cron job errors is to use a Bash script that directs the output to stderr only if the job fails, causing cron to notify the user about the error only when the script fails. Script overview The script provided below ensures that any command passed to it will redirect its output to a temporary file. If the command fails (i.e., returns a non-zero exit code), the script sends the … Continue reading

Arch Linux: Preserving the kernel modules of the currently running kernel during and after an upgrade

One potential issue when upgrading the Arch Linux kernel is that the modules of the currently running kernel may be deleted. This can lead to a number of problems, including unexpected behavior, system crashes, or the inability to mount certain file systems (e.g. the kernel fails to mount a vfat file system due to the unavailability of the vfat kernel module). The Arch Linux package linux-keep-modules (also available on AUR: linux-keep-modules @AUR), written by James Cherti, provides a solution to ensure that the modules of the currently running Linux kernel remain available until the operating system is restarted. Additionally, after … Continue reading

vim-client - send commands to the Vim editor

The vim-client command-line tools vim-client-edit, vim-client-diff and the Python module vim_client will allow you to connect to a Vim server and make it: - Edit files or directories in new tabs, - Compare files (similar to vimdiff), - Evaluate expressions and return their result, - Send commands to Vim. It will allow you, for example, to make Vim edit or diff files from outside of Vim (e.g. from a shell like Bash, Zsh, etc.). License Copyright (C) 2022-2026 James Cherti. Distributed under terms of the MIT license. Requirements Python >= 3.0 The Vim editor ('vim' or 'gvim' in $PATH. Vim … Continue reading