From ef0d4c346c5c80d66eec86d5ae5edab7ea20f221 Mon Sep 17 00:00:00 2001 From: Sarthak Jain Date: Sun, 15 Mar 2026 10:53:30 +0530 Subject: [PATCH] Add more --- .config/btop/btop.conf | 224 ++++++++++++++++++++++++++++++++ .config/ghostty/config | 62 +++++++++ README.md | 9 ++ scripts/install_dependencies.sh | 93 +++++++++++++ 4 files changed, 388 insertions(+) create mode 100644 .config/btop/btop.conf create mode 100644 .config/ghostty/config create mode 100755 scripts/install_dependencies.sh diff --git a/.config/btop/btop.conf b/.config/btop/btop.conf new file mode 100644 index 0000000..daa7685 --- /dev/null +++ b/.config/btop/btop.conf @@ -0,0 +1,224 @@ +#? Config file for btop v. 1.4.5 + +#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. +#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" +color_theme = "Default" + +#* If the theme set background should be shown, set to False if you want terminal background transparency. +theme_background = False + +#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. +truecolor = True + +#* Set to true to force tty mode regardless if a real tty has been detected or not. +#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. +force_tty = False + +#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. +#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. +#* Use whitespace " " as separator between different presets. +#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" +presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" + +#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. +#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. +vim_keys = False + +#* Rounded corners on boxes, is ignored if TTY mode is ON. +rounded_corners = True + +#* Default symbols to use for graph creation, "braille", "block" or "tty". +#* "braille" offers the highest resolution but might not be included in all fonts. +#* "block" has half the resolution of braille but uses more common characters. +#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. +#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. +graph_symbol = "braille" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_cpu = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_mem = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_net = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_proc = "default" + +#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. +shown_boxes = "cpu mem net proc" + +#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. +update_ms = 2000 + +#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", +#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. +proc_sorting = "cpu lazy" + +#* Reverse sorting order, True or False. +proc_reversed = False + +#* Show processes as a tree. +proc_tree = False + +#* Use the cpu graph colors in the process list. +proc_colors = True + +#* Use a darkening gradient in the process list. +proc_gradient = True + +#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. +proc_per_core = False + +#* Show process memory as bytes instead of percent. +proc_mem_bytes = True + +#* Show cpu graph for each process. +proc_cpu_graphs = True + +#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) +proc_info_smaps = False + +#* Show proc box on left side of screen instead of right. +proc_left = False + +#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). +proc_filter_kernel = False + +#* In tree-view, always accumulate child process resources in the parent process. +proc_aggregate = False + +#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_upper = "Auto" + +#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_lower = "Auto" + +#* Toggles if the lower CPU graph should be inverted. +cpu_invert_lower = True + +#* Set to True to completely disable the lower CPU graph. +cpu_single_graph = False + +#* Show cpu box at bottom of screen instead of top. +cpu_bottom = False + +#* Shows the system uptime in the CPU box. +show_uptime = True + +#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo. +show_cpu_watts = True + +#* Show cpu temperature. +check_temp = True + +#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. +cpu_sensor = "Auto" + +#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. +show_coretemp = True + +#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. +#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. +#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. +#* Example: "4:0 5:1 6:3" +cpu_core_map = "" + +#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". +temp_scale = "celsius" + +#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. +base_10_sizes = False + +#* Show CPU frequency. +show_cpu_freq = True + +#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. +#* Special formatting: /host = hostname | /user = username | /uptime = system uptime +clock_format = "%X" + +#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. +background_update = True + +#* Custom cpu model name, empty string to disable. +custom_cpu_name = "" + +#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". +#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user" +disks_filter = "" + +#* Show graphs instead of meters for memory values. +mem_graphs = True + +#* Show mem box below net box instead of above. +mem_below_net = False + +#* Count ZFS ARC in cached and available memory. +zfs_arc_cached = True + +#* If swap memory should be shown in memory box. +show_swap = True + +#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. +swap_disk = True + +#* If mem box should be split to also show disks info. +show_disks = True + +#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. +only_physical = True + +#* Read disks list from /etc/fstab. This also disables only_physical. +use_fstab = True + +#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) +zfs_hide_datasets = False + +#* Set to true to show available disk space for privileged users. +disk_free_priv = False + +#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. +show_io_stat = True + +#* Toggles io mode for disks, showing big graphs for disk read/write speeds. +io_mode = False + +#* Set to True to show combined read/write io graphs in io mode. +io_graph_combined = False + +#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". +#* Example: "/mnt/media:100 /:20 /boot:1". +io_graph_speeds = "" + +#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. +net_download = 100 + +net_upload = 100 + +#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. +net_auto = True + +#* Sync the auto scaling for download and upload to whichever currently has the highest scale. +net_sync = True + +#* Starts with the Network Interface specified here. +net_iface = "" + +#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes. +base_10_bitrate = "Auto" + +#* Show battery stats in top right if battery is present. +show_battery = True + +#* Which battery to use if multiple are present. "Auto" for auto detection. +selected_battery = "Auto" + +#* Show power stats of battery next to charge indicator. +show_battery_watts = True + +#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". +#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. +log_level = "WARNING" diff --git a/.config/ghostty/config b/.config/ghostty/config new file mode 100644 index 0000000..b4d9ff9 --- /dev/null +++ b/.config/ghostty/config @@ -0,0 +1,62 @@ +# This is the configuration file for Ghostty. +# +# This template file has been automatically created at the following +# path since Ghostty couldn't find any existing config files on your system: +# +# /Users/jsarthak/Library/Application Support/com.mitchellh.ghostty/config +# +# The template does not set any default options, since Ghostty ships +# with sensible defaults for all options. Users should only need to set +# options that they want to change from the default. +# +# Run `ghostty +show-config --default --docs` to view a list of +# all available config options and their default values. +# +# Additionally, each config option is also explained in detail +# on Ghostty's website, at https://ghostty.org/docs/config. +# +# Ghostty can reload the configuration while running by using the menu +# options or the bound key (default: Command + Shift + comma on macOS and +# Control + Shift + comma on other platforms). Not all config options can be +# reloaded while running; some only apply to new windows and others may require +# a full restart to take effect. + +# Config syntax crash course +# ========================== +# # The config file consists of simple key-value pairs, +# # separated by equals signs. +font-family = "Iosevka Nerd Font" +font-size = 14 +# window-padding-x = 2 + +# # Spacing around the equals sign does not matter. +# # All of these are identical: +# key=value +# key= value +# key =value +# key = value +# +# # Any line beginning with a # is a comment. It's not possible to put +# # a comment after a config option, since it would be interpreted as a +# # part of the value. For example, this will have a value of "#123abc": +# background = #000000 +background-opacity = 0.9 +background-blur-radius = 10 +# +# # Empty values are used to reset config keys to default. +# key = +# +# # Some config options have unique syntaxes for their value, +# # which is explained in the docs for that config option. +# # Just for example: +# resize-overlay-duration = 4s 200ms + + +# Config generated by Ghostty Config + +clipboard-read = allow +clipboard-write = allow +copy-on-select = false +bold-is-bright = true + +theme =TokyoNight Night diff --git a/README.md b/README.md index 3988f30..239a6e6 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,15 @@ Using `stow` ensures that all configuration files are cleanly symlinked into you ## Requirements +A script is provided to help install the core dependencies across macOS and common Linux distributions (Ubuntu/Debian, Arch, Fedora). + +To run the installation script: +```bash +./scripts/install_dependencies.sh +``` + +Alternatively, you can manually install the required tool: + - [GNU Stow](https://www.gnu.org/software/stow/) To install Stow on macOS, use [Homebrew](https://brew.sh/): diff --git a/scripts/install_dependencies.sh b/scripts/install_dependencies.sh new file mode 100755 index 0000000..00b3603 --- /dev/null +++ b/scripts/install_dependencies.sh @@ -0,0 +1,93 @@ +#!/usr/bin/env bash + +# Exit immediately if a command exits with a non-zero status +set -e + +echo "Starting dependency installation..." + +# Define the common packages +PACKAGES=( + "stow" + "git" + "curl" + "wget" + "neovim" + "tmux" + "zsh" + "bash" + "starship" + "alacritty" + "kitty" + # "picom" + # "polybar" + # "rofi" + # "awesome" + # "wezterm" + # "geany" +) + +# Function to check if a command exists +command_exists() { + command -v "$1" >/dev/null 2>&1 +} + +# Determine the OS and package manager +if [ "$(uname)" == "Darwin" ]; then + echo "Detected macOS" + if ! command_exists brew; then + echo "Installing Homebrew..." + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + fi + echo "Updating Homebrew..." + brew update + echo "Installing packages via Homebrew..." + for pkg in "${PACKAGES[@]}"; do + brew install "$pkg" || echo "Failed to install $pkg (or already installed)" + done + +elif [ "$(uname)" == "Linux" ]; then + echo "Detected Linux" + if command_exists apt-get; then + echo "Detected Debian/Ubuntu base" + echo "Updating apt..." + sudo apt-get update + echo "Installing packages via apt..." + for pkg in "${PACKAGES[@]}"; do + # Note: Package names might differ slightly on apt (e.g., neovim vs nvim). + # This script uses common names, but some manual adjustment may be needed. + sudo apt-get install -y "$pkg" || echo "Failed to install $pkg (or not found in apt)" + done + + # Starship CLI usually has its own install script on Linux if not in apt + if ! command_exists starship; then + echo "Installing starship via official script..." + curl -sS https://starship.rs/install.sh | sh -s -- -y + fi + + elif command_exists pacman; then + echo "Detected Arch Linux base" + echo "Updating pacman..." + sudo pacman -Syu --noconfirm + echo "Installing packages via pacman..." + for pkg in "${PACKAGES[@]}"; do + sudo pacman -S --noconfirm "$pkg" || echo "Failed to install $pkg (or not found in pacman)" + done + elif command_exists dnf; then + echo "Detected Fedora/RHEL base" + echo "Updating dnf..." + sudo dnf check-update || true + echo "Installing packages via dnf..." + for pkg in "${PACKAGES[@]}"; do + sudo dnf install -y "$pkg" || echo "Failed to install $pkg (or not found in dnf)" + done + else + echo "Unsupported Linux package manager. Please install dependencies manually:" + echo "${PACKAGES[*]}" + exit 1 + fi +else + echo "Unsupported Operating System: $(uname)" + exit 1 +fi + +echo "Dependency installation complete!"