pacsea 0.8.2

A fast, friendly TUI for browsing and installing Arch and AUR packages with built-in news and security scanning
Documentation
# Pacsea settings configuration
# Layout percentages for the middle row panes (must sum to 100)
layout_left_pct = 20
layout_center_pct = 60
layout_right_pct = 20
# Main vertical stack: comma-separated permutation of results, search, package_info
# Aliases: middle (search row), details (package_info)
main_pane_order = results, search, package_info
# Vertical row limits (semantic per pane; not tied to top/middle/bottom slot)
vertical_min_results = 3
vertical_max_results = 17
vertical_min_middle = 3
vertical_max_middle = 5
vertical_min_package_info = 3
# Default dry-run behavior when starting the app (overridden by --dry-run)
app_dry_run_default = false
# Middle row visibility (default true)
show_search_history_pane = true
show_install_pane = true
show_keybinds_footer = true

# Search input mode on startup
# Allowed values: insert_mode | normal_mode
# Default is insert_mode
search_startup_mode = insert_mode

# Fuzzy search mode
# When true, uses fuzzy matching (fzf-style) instead of substring search
# Default is false (normal substring search)
fuzzy_search = false

# Installed packages filter mode
# Controls which packages are shown when viewing installed packages
# Allowed values: leaf | all
# - leaf: Show only leaf packages (explicitly installed, nothing depends on them) - default
# - all: Show all explicitly installed packages (including those other packages depend on)
installed_packages_mode = leaf

# Results sorting
# Allowed values: alphabetical | aur_popularity | best_matches
sort_mode = best_matches

# Optional: hide packages from a custom repo filter defined in repos.conf (Phase 1).
# Canonical token matches repos.conf results_filter (non-alphanumeric folded to '_').
# Example when repos.conf maps a repo to results_filter "vendor_pkgs":
# results_filter_show_vendor_pkgs = false

# Clipboard
# Text appended when copying PKGBUILD to the clipboard
clipboard_suffix = Check PKGBUILD and source for suspicious and malicious activities

# Preflight modal / safety confirmation
# When true, Pacsea will bypass the Preflight confirmation modal and execute install/remove/downgrade actions immediately.
# Recommended to keep this false for safety unless you understand the risks of executing package operations directly.
skip_preflight = true

# Passwordless sudo
# When true, Pacsea will use passwordless sudo for install operations if configured on the system.
# When false (default), Pacsea will always show the password prompt even if passwordless sudo is available.
# This acts as an additional safety barrier requiring explicit opt-in.
# To use this feature, you must also have passwordless sudo configured in /etc/sudoers or /etc/sudoers.d/
use_passwordless_sudo = false

# Privilege tool
# Which privilege escalation tool to use for install/remove/downgrade operations.
# Allowed values: auto | sudo | doas
# - auto (default): prefer doas if available, fall back to sudo
# - sudo: always use sudo
# - doas: always use doas (requires opendoas package)
# Note: doas does not support in-app password prompts; the terminal handles password entry.
privilege_tool = auto

# Authentication mode
# How Pacsea handles authentication before privileged operations (works with both sudo and doas).
# Allowed values: prompt | passwordless_only | interactive
# - prompt (default): Pacsea captures your password and pipes it to the privilege tool
# - passwordless_only: skip password prompt only when the tool allows passwordless execution
# - interactive: let the privilege tool handle auth directly (supports fingerprint via PAM)
# Note: if you have fingerprint auth configured in PAM, use 'interactive' to enable it.
# Known limitation: 'prompt' mode uses sudo -S which may stall if pam_fprintd runs before
#   pam_unix in /etc/pam.d/sudo. If you experience stalls, switch to auth_mode = interactive.
# doas + interactive: works best with 'persist' enabled in /etc/doas.conf. Without 'persist',
#   each doas invocation re-prompts (the initial auth succeeds but PTY commands may re-prompt).
auth_mode = prompt

# Mirrors
# Select one or more countries (comma-separated). Example: "Switzerland, Germany, Austria"
selected_countries = Worldwide
# Number of HTTPS mirrors to consider when updating
mirror_count = 20
# Available countries (commented list; edit selected_countries above as needed):
# Worldwide
# Albania
# Algeria
# Argentina
# Armenia
# Australia
# Austria
# Azerbaijan
# Belarus
# Belgium
# Bosnia and Herzegovina
# Brazil
# Bulgaria
# Cambodia
# Canada
# Chile
# China
# Colombia
# Costa Rica
# Croatia
# Cyprus
# Czechia
# Denmark
# Ecuador
# Estonia
# Finland
# France
# Georgia
# Germany
# Greece
# Hong Kong
# Hungary
# Iceland
# India
# Indonesia
# Iran
# Ireland
# Israel
# Italy
# Japan
# Kazakhstan
# Latvia
# Lithuania
# Luxembourg
# Malaysia
# Mexico
# Moldova
# Netherlands
# New Caledonia
# New Zealand
# Norway
# Peru
# Philippines
# Poland
# Portugal
# Romania
# Russia
# Serbia
# Singapore
# Slovakia
# Slovenia
# South Africa
# South Korea
# Spain
# Sweden
# Switzerland
# Taiwan
# Thailand
# Turkey
# Ukraine
# United Kingdom
# United States
# Uruguay
# Vietnam

# Scans
# Default scan configuration used when opening Scan Configuration
scan_do_clamav = true
scan_do_trivy = true
scan_do_semgrep = true
scan_do_shellcheck = true
scan_do_virustotal = true
scan_do_custom = true
scan_do_sleuth = true
# ShellCheck --exclude for in-app PKGBUILD static checks (comma-separated rule IDs; empty = no exclude)
pkgbuild_shellcheck_exclude = SC2034,SC2164,SC2148,SC2154
# When true, show the PKGBUILD static-checks "Raw output:" section when expanded (findings always shown)
pkgbuild_checks_show_raw_output = false

# News
# Symbols for read/unread indicators in the News popup
news_read_symbol = ✓
news_unread_symbol = ∘
# News feed filters (toggle visibility of sources)
news_filter_show_arch_news = true
news_filter_show_advisories = true
news_filter_show_pkg_updates = true
news_filter_show_aur_updates = true
news_filter_show_aur_comments = true
# When news_filter_show_advisories is true, this restricts advisories to only those affecting installed packages
news_filter_installed_only = false
news_max_age_days = 30

# Startup News Popup Configuration
# Whether startup news popup setup has been completed
startup_news_configured = false
# News sources to show in startup popup
startup_news_show_arch_news = true
startup_news_show_advisories = true
startup_news_show_aur_updates = true
startup_news_show_aur_comments = true
startup_news_show_pkg_updates = true
# Maximum age of news items in days for startup popup (7, 30, or 90)
startup_news_max_age_days = 7

# VirusTotal
# API key used for VirusTotal scans (optional)
virustotal_api_key = 

# Terminal
# Preferred terminal emulator binary (optional): e.g., alacritty, kitty, gnome-terminal
preferred_terminal = 

# Package selection marker
# Visual marker for packages added to Install/Remove/Downgrade lists.
# Allowed values: full_line | front | end
# - full_line: color the entire line
# - front: add marker at the front of the line (default)
# - end: add marker at the end of the line
package_marker = front

# Language / Locale
# Locale code for translations (e.g., "en-US", "de-DE").
# Leave empty to auto-detect from system locale (LANG/LC_ALL environment variables).
# Available locales: en-US, de-DE, hu-HU (more coming soon)
locale = 

# Updates refresh interval
# Time in seconds between pacman -Qu and AUR helper checks.
# Default is 30 seconds. Increase this value on systems with slow I/O or many packages to reduce resource usage.
# Minimum value is 1 second.
updates_refresh_interval = 30

# Terminal Theme
# When true, uses the terminal's theme colors instead of theme.conf via OSC 10/11 queries.
# When false (default), uses theme.conf colors.
# Note: Terminal theme is also used automatically when theme.conf is missing/invalid
# and the terminal is supported (alacritty, kitty, konsole, ghostty, xterm,
# gnome-terminal, xfce-terminal, tilix, mate-terminal, wezterm, wezterm-gui).
use_terminal_theme = false

# AUR Voting via SSH
# Vote/unvote AUR packages directly from Pacsea using SSH.
# Requires your SSH public key to be uploaded to your AUR account:
#   https://aur.archlinux.org/account
# Enable AUR voting (default: true)
aur_vote_enabled = true
# SSH connect timeout in seconds (default: 10)
aur_vote_ssh_timeout_seconds = 10
# SSH binary to use (default: ssh). Override for non-standard setups.
aur_vote_ssh_command = ssh