Dotfiles update 2025-12-24 22:47
This commit is contained in:
@@ -59,9 +59,7 @@ btrfs-usage() {
|
||||
_btrfs_check || return 1
|
||||
local mount="${1:-$BTRFS_DEFAULT_MOUNT}"
|
||||
|
||||
df_print_func_header "Btrfs Filesystem Usage:"
|
||||
#echo -e "${DF_BLUE}Btrfs Filesystem Usage: ${DF_YELLOW}${mount}${DF_NC}"
|
||||
echo ""
|
||||
df_print_func_name "Btrfs Filesystem Usage: ${mount}"
|
||||
|
||||
sudo btrfs filesystem usage "$mount" -h
|
||||
}
|
||||
@@ -71,9 +69,7 @@ btrfs-subs() {
|
||||
_btrfs_check || return 1
|
||||
local mount="${1:-$BTRFS_DEFAULT_MOUNT}"
|
||||
|
||||
df_print_func_name "Btrfs Subvolumes"
|
||||
#echo -e "${DF_BLUE}Btrfs Subvolumes"
|
||||
echo ""
|
||||
df_print_func_name "Btrfs Subvolumes"
|
||||
|
||||
echo -e "${DF_CYAN}Subvolume List:${DF_NC}"
|
||||
sudo btrfs subvolume list "$mount" | while read -r line; do
|
||||
@@ -93,7 +89,8 @@ btrfs-balance() {
|
||||
local mount="${1:-$BTRFS_DEFAULT_MOUNT}"
|
||||
local usage="${2:-50}" # Default: rebalance chunks with <50% usage
|
||||
|
||||
echo -e "${DF_BLUE}==>${DF_NC} Starting btrfs balance on ${mount}"
|
||||
df_print_func_name "Btrfs Balance"
|
||||
|
||||
echo -e "${DF_YELLOW}⚠${DF_NC} This may take a while and use significant I/O"
|
||||
echo ""
|
||||
|
||||
@@ -116,6 +113,8 @@ btrfs-balance-status() {
|
||||
_btrfs_check || return 1
|
||||
local mount="${1:-$BTRFS_DEFAULT_MOUNT}"
|
||||
|
||||
df_print_func_name "Btrfs Balance Status"
|
||||
|
||||
sudo btrfs balance status "$mount"
|
||||
}
|
||||
|
||||
@@ -132,9 +131,8 @@ btrfs-balance-cancel() {
|
||||
btrfs-scrub() {
|
||||
_btrfs_check || return 1
|
||||
local mount="${1:-$BTRFS_DEFAULT_MOUNT}"
|
||||
df_print_func_name "Btrfs Scrub"
|
||||
#echo -e "${DF_BLUE}Btrfs Scrub"
|
||||
echo ""
|
||||
|
||||
df_print_func_name "Btrfs Scrub"
|
||||
|
||||
# Check if scrub is already running
|
||||
local status=$(sudo btrfs scrub status "$mount" 2>/dev/null)
|
||||
@@ -165,6 +163,8 @@ btrfs-scrub-status() {
|
||||
_btrfs_check || return 1
|
||||
local mount="${1:-$BTRFS_DEFAULT_MOUNT}"
|
||||
|
||||
df_print_func_name "Btrfs Scrub Status"
|
||||
|
||||
sudo btrfs scrub status "$mount"
|
||||
}
|
||||
|
||||
@@ -187,15 +187,16 @@ btrfs-defrag() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo -e "${DF_BLUE}==>${DF_NC} Defragmenting: $target"
|
||||
df_print_func_name "Btrfs Defragment"
|
||||
|
||||
if [[ -d "$target" ]]; then
|
||||
echo -e "${DF_YELLOW}⚠${DF_NC} Recursive defrag on directory"
|
||||
echo -e "${DF_YELLOW}⚠${DF_NC} Recursive defrag on directory: $target"
|
||||
read -q "REPLY?Continue? [y/N]: "; echo
|
||||
[[ ! "$REPLY" =~ ^[Yy]$ ]] && return 0
|
||||
|
||||
sudo btrfs filesystem defragment -r -v "$target"
|
||||
else
|
||||
echo -e "${DF_BLUE}==>${DF_NC} Defragmenting: $target"
|
||||
sudo btrfs filesystem defragment -v "$target"
|
||||
fi
|
||||
|
||||
@@ -213,9 +214,7 @@ btrfs-compress() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
df_print_func_header "Btrfs Compression Statistics"
|
||||
#echo -e "${DF_BLUE}Btrfs Compression Statistics${FD_NC}"
|
||||
echo ""
|
||||
df_print_func_name "Btrfs Compression Statistics"
|
||||
|
||||
sudo compsize "$target"
|
||||
}
|
||||
@@ -228,10 +227,10 @@ btrfs-compress() {
|
||||
btrfs-info() {
|
||||
_btrfs_check || return 1
|
||||
local mount="${1:-$BTRFS_DEFAULT_MOUNT}"
|
||||
df_print_func_name "Btrfs Filesystem Information"
|
||||
#echo -e "${DF_BLUE}Btrfs Filesystem Information${DF_NC}"
|
||||
|
||||
echo -e "\n${DF_CYAN}Filesystem Show:${DF_NC}"
|
||||
df_print_func_name "Btrfs Filesystem Information"
|
||||
|
||||
echo -e "${DF_CYAN}Filesystem Show:${DF_NC}"
|
||||
sudo btrfs filesystem show "$mount"
|
||||
|
||||
echo -e "\n${DF_CYAN}Filesystem df:${DF_NC}"
|
||||
@@ -249,8 +248,6 @@ btrfs-health() {
|
||||
local mount="${1:-$BTRFS_DEFAULT_MOUNT}"
|
||||
|
||||
df_print_func_name "Btrfs Health Check"
|
||||
#echo -e "${DF_BLUE}Btrfs Health Check${DF_NC}"
|
||||
echo ""
|
||||
|
||||
local issues=0
|
||||
|
||||
@@ -322,15 +319,22 @@ btrfs-snap-usage() {
|
||||
_btrfs_check || return 1
|
||||
|
||||
df_print_func_name "Snapshot Disk Space Usage"
|
||||
#echo -e "${DF_BLUE}Snapshot Space Usage${DF_NC}"
|
||||
echo ""
|
||||
|
||||
if [[ -d "/.snapshots" ]]; then
|
||||
echo -e "${DF_CYAN}Snapshot Directory:${DF_NC}"
|
||||
sudo du -sh /.snapshots 2>/dev/null || echo " Unable to calculate"
|
||||
# Use timeout to prevent hanging, and run in background with wait
|
||||
local size
|
||||
size=$(timeout 10 sudo du -sh /.snapshots 2>/dev/null | cut -f1)
|
||||
if [[ -n "$size" ]]; then
|
||||
echo " $size"
|
||||
else
|
||||
echo " Unable to calculate (timeout or error)"
|
||||
fi
|
||||
|
||||
echo -e "\n${DF_CYAN}Individual Snapshots:${DF_NC}"
|
||||
sudo du -sh /.snapshots/*/ 2>/dev/null | sort -h | tail -10 | sed 's/^/ /'
|
||||
echo -e "\n${DF_CYAN}Individual Snapshots (top 10 by size):${DF_NC}"
|
||||
# List snapshots with timeout protection
|
||||
timeout 30 sudo du -sh /.snapshots/*/ 2>/dev/null | sort -h | tail -10 | sed 's/^/ /' || \
|
||||
echo " Unable to list snapshots"
|
||||
else
|
||||
echo -e "${DF_YELLOW}⚠${DF_NC} No /.snapshots directory found"
|
||||
fi
|
||||
@@ -348,8 +352,7 @@ btrfs-maintain() {
|
||||
local mount="${1:-$BTRFS_DEFAULT_MOUNT}"
|
||||
|
||||
df_print_func_name "Btrfs Maintenance Routine"
|
||||
#echo -e "${DF_BLUE}Btrfs Maintenance Routine${DF_NC}"
|
||||
echo ""
|
||||
|
||||
echo "This will perform:"
|
||||
echo " 1. Health check"
|
||||
echo " 2. Balance (low usage chunks)"
|
||||
@@ -391,7 +394,6 @@ alias btrc='btrfs-compress'
|
||||
|
||||
btrfs-help() {
|
||||
df_print_func_name "Btrfs Helper Commands"
|
||||
#echo -e "${DF_BLUE}Btrfs Helper Commands${DF_NC}"
|
||||
|
||||
cat << 'EOF'
|
||||
|
||||
|
||||
@@ -231,10 +231,10 @@ bookmark() {
|
||||
|
||||
case "$bm_name" in
|
||||
list|ls)
|
||||
df_print_func_name "Bookmarks"
|
||||
if [[ -s "$PALETTE_BOOKMARKS_FILE" ]]; then
|
||||
echo "Bookmarks:"
|
||||
while IFS='|' read -r stored_name stored_path || [[ -n "$stored_name" ]]; do
|
||||
[[ -n "$stored_name" ]] && echo " $stored_name → $stored_path"
|
||||
[[ -n "$stored_name" ]] && echo -e " ${DF_GREEN}●${DF_NC} $stored_name → $stored_path"
|
||||
done < "$PALETTE_BOOKMARKS_FILE"
|
||||
else
|
||||
echo "No bookmarks yet"
|
||||
@@ -251,7 +251,7 @@ bookmark() {
|
||||
local temp_file="${PALETTE_BOOKMARKS_FILE}.tmp.$$"
|
||||
grep -v "^${to_delete}|" "$PALETTE_BOOKMARKS_FILE" > "$temp_file" 2>/dev/null || true
|
||||
mv -f "$temp_file" "$PALETTE_BOOKMARKS_FILE"
|
||||
echo "Deleted: $to_delete"
|
||||
echo -e "${DF_GREEN}✓${DF_NC} Deleted: $to_delete"
|
||||
else
|
||||
echo "No bookmarks to delete"
|
||||
fi
|
||||
@@ -265,7 +265,7 @@ bookmark() {
|
||||
fi
|
||||
# Add new bookmark
|
||||
echo "${bm_name}|${bm_path}" >> "$PALETTE_BOOKMARKS_FILE"
|
||||
echo "Bookmarked: $bm_name → $bm_path"
|
||||
echo -e "${DF_GREEN}✓${DF_NC} Bookmarked: $bm_name → $bm_path"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -77,6 +77,7 @@ pw() {
|
||||
|
||||
case "$cmd" in
|
||||
list|ls|l)
|
||||
df_print_func_name "LastPass Vault"
|
||||
_lp_list
|
||||
;;
|
||||
|
||||
@@ -96,6 +97,7 @@ pw() {
|
||||
search|find|s)
|
||||
local query="$1"
|
||||
[[ -z "$query" ]] && { echo "Usage: pw search <query>"; return 1; }
|
||||
df_print_func_name "LastPass Search: $query"
|
||||
_lp_search "$query"
|
||||
;;
|
||||
|
||||
@@ -110,21 +112,20 @@ pw() {
|
||||
echo -n "$value" | xclip -selection clipboard 2>/dev/null || \
|
||||
echo -n "$value" | xsel --clipboard 2>/dev/null || \
|
||||
{ echo "Could not copy to clipboard"; return 1; }
|
||||
echo "Copied to clipboard"
|
||||
echo -e "${DF_GREEN}✓${DF_NC} Copied to clipboard"
|
||||
else
|
||||
echo "Item not found or empty"
|
||||
echo -e "${DF_RED}✗${DF_NC} Item not found or empty"
|
||||
return 1
|
||||
fi
|
||||
;;
|
||||
|
||||
lock)
|
||||
lpass logout -f 2>/dev/null
|
||||
echo "Logged out of LastPass"
|
||||
echo -e "${DF_GREEN}✓${DF_NC} Logged out of LastPass"
|
||||
;;
|
||||
|
||||
help|--help|-h|*)
|
||||
echo -e "${DF_BLUE}Password Manager CLI (LastPass)${DF_NC}"
|
||||
echo
|
||||
df_print_func_name "Password Manager CLI"
|
||||
echo "Usage: pw <command> [args]"
|
||||
echo
|
||||
echo "Commands:"
|
||||
@@ -190,7 +191,7 @@ if command -v fzf &>/dev/null; then
|
||||
if [[ -n "$otp" ]]; then
|
||||
echo -n "$otp" | xclip -selection clipboard 2>/dev/null || \
|
||||
echo -n "$otp" | xsel --clipboard 2>/dev/null
|
||||
echo "OTP copied: $otp"
|
||||
echo -e "${DF_GREEN}✓${DF_NC} OTP copied: $otp"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -18,9 +18,7 @@ snap-create() {
|
||||
local snap_config="root"
|
||||
local limine_conf="/boot/limine.conf"
|
||||
|
||||
echo -e "\n${DF_BLUE}╔════════════════════════════════════════════════════════════╗${DF_NC}"
|
||||
echo -e "${DF_BLUE}║${DF_NC} Snapper Snapshot Creation & Validation ${DF_BLUE}║${DF_NC}"
|
||||
echo -e "${DF_BLUE}╚════════════════════════════════════════════════════════════╝${DF_NC}\n"
|
||||
df_print_func_name "Snapper Snapshot Creation"
|
||||
|
||||
if [[ -z "$description" ]]; then
|
||||
echo -e "${DF_YELLOW}⚠${DF_NC} No description provided"
|
||||
@@ -90,21 +88,20 @@ snap-create() {
|
||||
validation_passed=false
|
||||
fi
|
||||
|
||||
echo -e "\n${DF_BLUE}╔════════════════════════════════════════════════════════════╗${DF_NC}"
|
||||
echo -e "${DF_BLUE}║${DF_NC} Summary ${DF_BLUE}║${DF_NC}"
|
||||
echo -e "${DF_BLUE}╚════════════════════════════════════════════════════════════╝${DF_NC}"
|
||||
echo -e "Snapshot Number: #$snapshot_num"
|
||||
echo -e "Description: \"$description\""
|
||||
echo -e "Config: $snap_config"
|
||||
echo -e "Before entries: $before_entries"
|
||||
echo -e "After entries: $after_entries"
|
||||
echo ""
|
||||
echo -e "${DF_CYAN}Summary:${DF_NC}"
|
||||
echo -e " Snapshot Number: #$snapshot_num"
|
||||
echo -e " Description: \"$description\""
|
||||
echo -e " Config: $snap_config"
|
||||
echo -e " Before entries: $before_entries"
|
||||
echo -e " After entries: $after_entries"
|
||||
|
||||
if [[ "$validation_passed" == true ]]; then
|
||||
echo -e "Status: ${DF_GREEN}✓ VALIDATED${DF_NC}"
|
||||
echo -e " Status: ${DF_GREEN}✓ VALIDATED${DF_NC}"
|
||||
echo -e "\n${DF_GREEN}✓${DF_NC} Snapshot created and limine.conf successfully updated!"
|
||||
return 0
|
||||
else
|
||||
echo -e "Status: ${DF_RED}✗ VALIDATION FAILED${DF_NC}"
|
||||
echo -e " Status: ${DF_RED}✗ VALIDATION FAILED${DF_NC}"
|
||||
echo -e "\n${DF_RED}✗${DF_NC} Snapshot created but limine.conf validation failed!"
|
||||
echo -e "${DF_YELLOW}⚠${DF_NC} Check if limine-snapper-sync service is running properly"
|
||||
echo -e "${DF_YELLOW}Run:${DF_NC} sudo systemctl status limine-snapper-sync.service"
|
||||
@@ -118,17 +115,20 @@ snap-create() {
|
||||
|
||||
snap-list() {
|
||||
local count="${1:-10}"
|
||||
echo -e "${DF_BLUE}Recent $count snapshots:${DF_NC}\n"
|
||||
|
||||
df_print_func_name "Snapper Snapshots (last $count)"
|
||||
|
||||
sudo snapper -c root list | tail -n "$((count + 1))"
|
||||
}
|
||||
|
||||
snap-show() {
|
||||
[[ -z "$1" ]] && { echo -e "${DF_RED}✗${DF_NC} Usage: snap-show <snapshot_number>"; return 1; }
|
||||
|
||||
echo -e "${DF_BLUE}Snapshot #$1 details:${DF_NC}\n"
|
||||
df_print_func_name "Snapshot #$1 Details"
|
||||
|
||||
sudo snapper -c root list | grep "^\s*$1\s"
|
||||
|
||||
echo -e "\n${DF_BLUE}In limine.conf:${DF_NC}"
|
||||
echo -e "\n${DF_CYAN}In limine.conf:${DF_NC}"
|
||||
if sudo grep -qP "^\\s*///$1\\s*│" /boot/limine.conf; then
|
||||
local entry_line=$(sudo grep -nP "^\\s*///$1\\s*│" /boot/limine.conf | head -n 1 | cut -d: -f1)
|
||||
[[ -n "$entry_line" ]] && sudo sed -n "${entry_line}p; $((entry_line+1))p" /boot/limine.conf
|
||||
@@ -143,7 +143,7 @@ snap-delete() {
|
||||
local snapshot_num="$1"
|
||||
local limine_conf="/boot/limine.conf"
|
||||
|
||||
echo -e "${DF_BLUE}==>${DF_NC} Deleting snapshot #$snapshot_num"
|
||||
df_print_func_name "Delete Snapshot #$snapshot_num"
|
||||
|
||||
local before_entries=$(sudo grep -cP "^\\s*///\\d+\\s*│" "$limine_conf" || echo "0")
|
||||
|
||||
@@ -178,16 +178,14 @@ snap-delete() {
|
||||
snap-check-limine() {
|
||||
local limine_conf="/boot/limine.conf"
|
||||
|
||||
echo -e "${DF_BLUE}╔════════════════════════════════════════════════════════════╗${DF_NC}"
|
||||
echo -e "${DF_BLUE}║${DF_NC} Limine Snapshot Entries ${DF_BLUE}║${DF_NC}"
|
||||
echo -e "${DF_BLUE}╚════════════════════════════════════════════════════════════╝${DF_NC}\n"
|
||||
df_print_func_name "Limine Snapshot Entries"
|
||||
|
||||
[[ ! -f "$limine_conf" ]] && { echo -e "${DF_RED}✗${DF_NC} Limine config not found: $limine_conf"; return 1; }
|
||||
|
||||
local latest_snapshot=$(sudo snapper -c root list | tail -n +3 | grep -v "^\s*0\s" | tail -n 1 | awk '{print $1}')
|
||||
[[ -z "$latest_snapshot" ]] && { echo -e "${DF_YELLOW}⚠${DF_NC} No snapshots found in snapper"; return 1; }
|
||||
|
||||
echo -e "${DF_BLUE}Latest snapshot:${DF_NC} #$latest_snapshot"
|
||||
echo -e "${DF_CYAN}Latest snapshot:${DF_NC} #$latest_snapshot"
|
||||
|
||||
echo -e "${DF_BLUE}==>${DF_NC} Checking if latest snapshot is in limine.conf"
|
||||
|
||||
@@ -199,16 +197,18 @@ snap-check-limine() {
|
||||
|
||||
echo -e "\n${DF_BLUE}==>${DF_NC} Counting snapshot entries"
|
||||
local entry_count=$(sudo grep -cP "^\\s*///\\d+\\s*│" "$limine_conf" || echo "0")
|
||||
echo -e "${DF_BLUE}Total snapshot entries:${DF_NC} $entry_count\n"
|
||||
echo -e "${DF_CYAN}Total snapshot entries:${DF_NC} $entry_count"
|
||||
}
|
||||
|
||||
snap-sync() {
|
||||
df_print_func_name "Limine-Snapper-Sync"
|
||||
|
||||
echo -e "${DF_BLUE}==>${DF_NC} Manually triggering limine-snapper-sync..."
|
||||
|
||||
if sudo systemctl start limine-snapper-sync.service; then
|
||||
echo -e "${DF_GREEN}✓${DF_NC} Service triggered successfully"
|
||||
sleep 2
|
||||
echo -e "\n${DF_BLUE}Service status:${DF_NC}"
|
||||
echo -e "\n${DF_CYAN}Service status:${DF_NC}"
|
||||
sudo systemctl status limine-snapper-sync.service --no-pager -l | tail -n 10
|
||||
else
|
||||
echo -e "${DF_RED}✗${DF_NC} Failed to trigger service"
|
||||
@@ -217,9 +217,7 @@ snap-sync() {
|
||||
}
|
||||
|
||||
snap-validate-service() {
|
||||
echo -e "${DF_BLUE}╔════════════════════════════════════════════════════════════╗${DF_NC}"
|
||||
echo -e "${DF_BLUE}║${DF_NC} Limine-Snapper-Sync Service Validation ${DF_BLUE}║${DF_NC}"
|
||||
echo -e "${DF_BLUE}╚════════════════════════════════════════════════════════════╝${DF_NC}\n"
|
||||
df_print_func_name "Limine-Snapper-Sync Service Validation"
|
||||
|
||||
echo -e "${DF_BLUE}==>${DF_NC} Checking service unit"
|
||||
|
||||
|
||||
@@ -82,10 +82,7 @@ ssh-save() {
|
||||
ssh-list() {
|
||||
_ssh_init_profiles
|
||||
|
||||
echo -e "${DF_BLUE}╔════════════════════════════════════════════════════════════╗${DF_NC}"
|
||||
echo -e "${DF_BLUE}║${DF_NC} SSH Connection Profiles ${DF_BLUE}║${DF_NC}"
|
||||
echo -e "${DF_BLUE}╚════════════════════════════════════════════════════════════╝${DF_NC}"
|
||||
echo
|
||||
df_print_func_name "SSH Connection Profiles"
|
||||
|
||||
local has_profiles=false
|
||||
while IFS='|' read -r name connection port key options description; do
|
||||
@@ -205,7 +202,7 @@ ssh-sync-dotfiles() {
|
||||
local dotfiles_dir="${DOTFILES_DIR:-$HOME/.dotfiles}"
|
||||
[[ ! -d "$dotfiles_dir" ]] && { _ssh_print_error "Dotfiles directory not found"; return 1; }
|
||||
|
||||
_ssh_print_step "Syncing dotfiles to: $connection"
|
||||
df_print_func_name "Sync Dotfiles to: $connection"
|
||||
|
||||
local rsync_cmd="rsync -avz --exclude='.git' --exclude='*.local'"
|
||||
[[ -n "$port" && "$port" != "22" ]] && rsync_cmd="$rsync_cmd -e 'ssh -p $port'"
|
||||
|
||||
@@ -97,7 +97,7 @@ sclog() {
|
||||
sclogs() {
|
||||
local service="$1"
|
||||
local lines="${2:-50}"
|
||||
[[ -z "$service" ]] && { echo "Usage: sclog <service> [lines]"; return 1; }
|
||||
[[ -z "$service" ]] && { echo "Usage: sclogs <service> [lines]"; return 1; }
|
||||
|
||||
sudo journalctl -xeu "$service" -n "$lines" --no-pager
|
||||
}
|
||||
@@ -108,11 +108,9 @@ sclogs() {
|
||||
|
||||
# Show failed services (system and user)
|
||||
sc-failed() {
|
||||
echo -e "${DF_BLUE}╔════════════════════════════════════════════════════════════╗${DF_NC}"
|
||||
echo -e "${DF_BLUE}║${DF_NC} Failed Services ${DF_BLUE}║${DF_NC}"
|
||||
echo -e "${DF_BLUE}╚════════════════════════════════════════════════════════════╝${DF_NC}"
|
||||
df_print_func_name "Failed Services"
|
||||
|
||||
echo -e "\n${DF_CYAN}System Services:${DF_NC}"
|
||||
echo -e "${DF_CYAN}System Services:${DF_NC}"
|
||||
local sys_failed=$(systemctl --failed --no-pager --no-legend 2>/dev/null)
|
||||
if [[ -z "$sys_failed" ]]; then
|
||||
echo -e " ${DF_GREEN}✓${DF_NC} No failed system services"
|
||||
@@ -133,11 +131,9 @@ sc-failed() {
|
||||
|
||||
# Show active timers
|
||||
sc-timers() {
|
||||
echo -e "${DF_BLUE}╔════════════════════════════════════════════════════════════╗${DF_NC}"
|
||||
echo -e "${DF_BLUE}║${DF_NC} Active Timers ${DF_BLUE}║${DF_NC}"
|
||||
echo -e "${DF_BLUE}╚════════════════════════════════════════════════════════════╝${DF_NC}"
|
||||
df_print_func_name "Active Timers"
|
||||
|
||||
echo -e "\n${DF_CYAN}System Timers:${DF_NC}"
|
||||
echo -e "${DF_CYAN}System Timers:${DF_NC}"
|
||||
systemctl list-timers --no-pager | head -20
|
||||
|
||||
echo -e "\n${DF_CYAN}User Timers:${DF_NC}"
|
||||
@@ -150,11 +146,9 @@ sc-timers() {
|
||||
sc-recent() {
|
||||
local count="${1:-15}"
|
||||
|
||||
echo -e "${DF_BLUE}╔════════════════════════════════════════════════════════════╗${DF_NC}"
|
||||
echo -e "${DF_BLUE}║${DF_NC} Recent Service Activity ${DF_BLUE}║${DF_NC}"
|
||||
echo -e "${DF_BLUE}╚════════════════════════════════════════════════════════════╝${DF_NC}"
|
||||
df_print_func_name "Recent Service Activity"
|
||||
|
||||
echo -e "\n${DF_CYAN}Recently Started:${DF_NC}"
|
||||
echo -e "${DF_CYAN}Recently Started:${DF_NC}"
|
||||
systemctl list-units --type=service --state=running --no-pager --no-legend | \
|
||||
head -"$count" | awk '{print " " $1}'
|
||||
|
||||
@@ -166,11 +160,9 @@ sc-recent() {
|
||||
|
||||
# Boot time analysis
|
||||
sc-boot() {
|
||||
echo -e "${DF_BLUE}╔════════════════════════════════════════════════════════════╗${DF_NC}"
|
||||
echo -e "${DF_BLUE}║${DF_NC} Boot Time Analysis ${DF_BLUE}║${DF_NC}"
|
||||
echo -e "${DF_BLUE}╚════════════════════════════════════════════════════════════╝${DF_NC}"
|
||||
df_print_func_name "Boot Time Analysis"
|
||||
|
||||
echo -e "\n${DF_CYAN}Boot Summary:${DF_NC}"
|
||||
echo -e "${DF_CYAN}Boot Summary:${DF_NC}"
|
||||
systemd-analyze
|
||||
|
||||
echo -e "\n${DF_CYAN}Slowest Services (top 10):${DF_NC}"
|
||||
@@ -191,8 +183,7 @@ sc-search() {
|
||||
local query="$1"
|
||||
[[ -z "$query" ]] && { echo "Usage: sc-search <query>"; return 1; }
|
||||
|
||||
echo -e "${DF_BLUE}==>${DF_NC} Searching for services matching: ${query}"
|
||||
echo ""
|
||||
df_print_func_name "Service Search: $query"
|
||||
|
||||
systemctl list-unit-files --type=service --no-pager | grep -i "$query"
|
||||
}
|
||||
@@ -202,11 +193,9 @@ sc-info() {
|
||||
local service="$1"
|
||||
[[ -z "$service" ]] && { echo "Usage: sc-info <service>"; return 1; }
|
||||
|
||||
echo -e "${DF_BLUE}╔════════════════════════════════════════════════════════════╗${DF_NC}"
|
||||
echo -e "${DF_BLUE}║${DF_NC} Service Info: ${service}"
|
||||
echo -e "${DF_BLUE}╚════════════════════════════════════════════════════════════╝${DF_NC}"
|
||||
df_print_func_name "Service Info: $service"
|
||||
|
||||
echo -e "\n${DF_CYAN}Status:${DF_NC}"
|
||||
echo -e "${DF_CYAN}Status:${DF_NC}"
|
||||
systemctl status "$service" --no-pager -l 2>/dev/null || \
|
||||
sudo systemctl status "$service" --no-pager -l
|
||||
|
||||
@@ -305,9 +294,7 @@ alias jctlerr='journalctl -p err -b'
|
||||
# ============================================================================
|
||||
|
||||
sc-help() {
|
||||
echo -e "${DF_BLUE}╔════════════════════════════════════════════════════════════╗${DF_NC}"
|
||||
echo -e "${DF_BLUE}║${DF_NC} Systemd Helper Commands ${DF_BLUE}║${DF_NC}"
|
||||
echo -e "${DF_BLUE}╚════════════════════════════════════════════════════════════╝${DF_NC}"
|
||||
df_print_func_name "Systemd Helper Commands"
|
||||
|
||||
cat << 'EOF'
|
||||
|
||||
@@ -318,7 +305,7 @@ sc-help() {
|
||||
sce <service> Enable and start (--now)
|
||||
scd <service> Disable and stop (--now)
|
||||
sclog <service> Follow journal logs (-f)
|
||||
scogs <service> Show recent logs (no follow)
|
||||
sclogs <service> Show recent logs (no follow)
|
||||
|
||||
Status Commands:
|
||||
sc-failed Show failed services
|
||||
|
||||
@@ -100,10 +100,7 @@ EOF
|
||||
tw-templates() {
|
||||
_tw_init_templates
|
||||
|
||||
echo -e "${DF_BLUE}╔════════════════════════════════════════════════════════════╗${DF_NC}"
|
||||
echo -e "${DF_BLUE}║${DF_NC} Available Tmux Templates ${DF_BLUE}║${DF_NC}"
|
||||
echo -e "${DF_BLUE}╚════════════════════════════════════════════════════════════╝${DF_NC}"
|
||||
echo
|
||||
df_print_func_name "Available Tmux Templates"
|
||||
|
||||
for template in "$TW_TEMPLATES_DIR"/*.tmux; do
|
||||
[[ ! -f "$template" ]] && continue
|
||||
@@ -200,10 +197,7 @@ tw-attach() {
|
||||
tw-list() {
|
||||
_tw_check_tmux || return 1
|
||||
|
||||
echo -e "${DF_BLUE}╔════════════════════════════════════════════════════════════╗${DF_NC}"
|
||||
echo -e "${DF_BLUE}║${DF_NC} Active Tmux Workspaces ${DF_BLUE}║${DF_NC}"
|
||||
echo -e "${DF_BLUE}╚════════════════════════════════════════════════════════════╝${DF_NC}"
|
||||
echo
|
||||
df_print_func_name "Active Tmux Workspaces"
|
||||
|
||||
local has_workspaces=false
|
||||
|
||||
|
||||
Reference in New Issue
Block a user