mirror of
https://github.com/ChrisTitusTech/linutil.git
synced 2024-12-23 20:09:44 +00:00
added tips. (#565)
Co-authored-by: Adam Perkowski <adas1per@protonmail.com>
This commit is contained in:
parent
ad03095f9d
commit
4d6d1b22f0
60
Cargo.lock
generated
60
Cargo.lock
generated
|
@ -120,6 +120,12 @@ version = "3.16.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
||||
|
||||
[[package]]
|
||||
name = "cassowary"
|
||||
version = "0.3.0"
|
||||
|
@ -306,6 +312,17 @@ version = "0.1.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.2.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"wasi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.14.5"
|
||||
|
@ -473,6 +490,7 @@ dependencies = [
|
|||
"linutil_core",
|
||||
"oneshot",
|
||||
"portable-pty",
|
||||
"rand 0.8.5",
|
||||
"ratatui",
|
||||
"tui-term",
|
||||
"unicode-width",
|
||||
|
@ -628,6 +646,15 @@ dependencies = [
|
|||
"winreg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ppv-lite86"
|
||||
version = "0.2.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
|
||||
dependencies = [
|
||||
"zerocopy",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.86"
|
||||
|
@ -659,6 +686,27 @@ dependencies = [
|
|||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core 0.6.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_chacha"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
|
||||
dependencies = [
|
||||
"ppv-lite86",
|
||||
"rand_core 0.6.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.3.1"
|
||||
|
@ -674,6 +722,15 @@ version = "0.4.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.6.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
|
||||
dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ratatui"
|
||||
version = "0.28.1"
|
||||
|
@ -933,7 +990,7 @@ version = "0.3.7"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"
|
||||
dependencies = [
|
||||
"rand",
|
||||
"rand 0.4.6",
|
||||
"remove_dir_all",
|
||||
]
|
||||
|
||||
|
@ -1291,6 +1348,7 @@ version = "0.7.35"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"zerocopy-derive",
|
||||
]
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ include = [
|
|||
"src/*.rs",
|
||||
"Cargo.toml",
|
||||
"build.rs",
|
||||
"cool_tips.txt",
|
||||
]
|
||||
build = "build.rs"
|
||||
|
||||
|
@ -23,6 +24,7 @@ portable-pty = "0.8.1"
|
|||
ratatui = "0.28.1"
|
||||
tui-term = "0.1.12"
|
||||
unicode-width = "0.1.13"
|
||||
rand = "0.8.5"
|
||||
linutil_core = { path = "../core", version = "24.9.19" }
|
||||
|
||||
[build-dependencies]
|
||||
|
|
239
tui/cool_tips.txt
Normal file
239
tui/cool_tips.txt
Normal file
|
@ -0,0 +1,239 @@
|
|||
ls: Lists files and directories in the current directory.
|
||||
cd: Changes the current directory.
|
||||
pwd: Prints the current working directory.
|
||||
mkdir: Creates a new directory.
|
||||
rmdir: Removes an empty directory.
|
||||
cp: Copies files or directories.
|
||||
mv: Moves or renames files or directories.
|
||||
rm: Removes files or directories.
|
||||
touch: Creates an empty file or updates the timestamp of an existing file.
|
||||
cat: Displays the content of a file.
|
||||
less: Views the content of a file, one page at a time.
|
||||
head: Displays the first few lines of a file.
|
||||
tail: Displays the last few lines of a file.
|
||||
find: Searches for files in a directory hierarchy.
|
||||
grep: Searches for a specific pattern in files.
|
||||
chmod: Changes file or directory permissions.
|
||||
chown: Changes file or directory ownership.
|
||||
ln: Creates hard or symbolic links to files.
|
||||
df: Displays disk space usage.
|
||||
du: Shows disk usage of files and directories.
|
||||
top: Displays real-time system processes.
|
||||
ps: Shows running processes.
|
||||
kill: Terminates a process by PID.
|
||||
man: Displays the manual page for a command.
|
||||
history: Shows the history of commands you've run.
|
||||
sudo: Executes a command with superuser privileges.
|
||||
apt-get: Installs, updates, or removes packages on Debian-based systems.
|
||||
yum: Installs, updates, or removes packages on Red Hat-based systems.
|
||||
wget: Downloads files from the web.
|
||||
curl: Transfers data from or to a server using various protocols.
|
||||
ssh: Connects to a remote machine securely via SSH.
|
||||
ping: Tests connectivity to a network host.
|
||||
ifconfig: Displays or configures network interfaces.
|
||||
ip: Displays and manages network interfaces, routing, and more.
|
||||
netstat: Displays network connections, routing tables, and interface statistics.
|
||||
echo: Prints text to the terminal or writes text to files.
|
||||
date: Displays or sets the system date and time.
|
||||
shutdown: Shuts down or reboots the system.
|
||||
reboot: Reboots the system.
|
||||
alias: Creates a shortcut for a command.
|
||||
diff: Compares the contents of two files line by line.
|
||||
cmp: Compares two files byte by byte.
|
||||
sort: Sorts the lines of a file alphabetically or numerically.
|
||||
uniq: Removes duplicate lines from a sorted file.
|
||||
wc: Counts words, lines, and characters in a file.
|
||||
cut: Cuts sections from each line of a file or output.
|
||||
tr: Translates or deletes characters from input.
|
||||
xargs: Builds and executes command lines from standard input.
|
||||
tee: Reads from standard input and writes to both standard output and files.
|
||||
basename: Strips directory and suffix from filenames.
|
||||
dirname: Extracts the directory path from a file path.
|
||||
read: Reads input from the user or file.
|
||||
tar: Archives and extracts files using tar format.
|
||||
zip: Compresses files into a zip archive.
|
||||
unzip: Extracts files from a zip archive.
|
||||
gzip: Compresses files using the gzip format.
|
||||
gunzip: Decompresses gzip-compressed files.
|
||||
rsync: Synchronizes files and directories between two locations.
|
||||
iptables: Configures the IP packet filter rules of the Linux kernel.
|
||||
ufw: Simplified firewall management tool (Uncomplicated Firewall).
|
||||
systemctl: Controls the systemd system and service manager.
|
||||
journalctl: Views systemd logs.
|
||||
dmesg: Displays kernel ring buffer messages.
|
||||
who: Shows who is logged into the system.
|
||||
last: Displays a list of last logged-in users.
|
||||
at: Schedules a one-time task to run at a specific time.
|
||||
awk: Pattern scanning and processing language used for text processing.
|
||||
sed: Stream editor for filtering and transforming text.
|
||||
chroot: Changes the root directory for a command or shell.
|
||||
lsof: Lists open files and the processes that opened them.
|
||||
nc: A versatile networking tool often used for testing and debugging.
|
||||
sftp: A secure file transfer program over SSH.
|
||||
ncdu: Disk usage analyzer with a user-friendly interface.
|
||||
dig: Performs DNS lookups.
|
||||
nslookup: Queries DNS information.
|
||||
hostname: Displays or sets the system’s hostname.
|
||||
curl ifconfig.me: Gets your public IP address.
|
||||
adduser: Adds a new user to the system.
|
||||
deluser: Removes a user from the system.
|
||||
groupadd: Adds a new group to the system.
|
||||
usermod: Modifies user account details.
|
||||
groups: Displays the groups the current user belongs to.
|
||||
sudo su: Switches to the root user.
|
||||
nohup: Runs a command that will continue running after logging out.
|
||||
jobs: Lists all active jobs in the current session.
|
||||
fg: Brings a background job to the foreground.
|
||||
bg: Resumes a stopped job in the background.
|
||||
ctrl + z: Pauses a foreground job, allowing it to run in the background.
|
||||
locate: Quickly finds files by name.
|
||||
updatedb: Updates the database used by the locate command.
|
||||
alias ll='ls -la': Creates an alias ll for a long-format list of files.
|
||||
unalias: Removes an alias for a command.
|
||||
export: Sets or exports environment variables.
|
||||
env: Displays the current environment variables.
|
||||
crontab: Manages cron jobs for automating tasks.
|
||||
watch: Repeatedly runs a command at regular intervals.
|
||||
vmstat: Reports virtual memory statistics.
|
||||
mpstat: Displays CPU usage statistics.
|
||||
htop: An interactive process viewer (more user-friendly than top).
|
||||
uptime: Displays the system uptime and load average.
|
||||
ulimit: Displays or sets resource limits for user processes.
|
||||
ip link: Manages network interfaces.
|
||||
ss: A faster alternative to netstat for displaying network connections.
|
||||
traceroute: Traces the route packets take to a network host.
|
||||
ping6: Tests connectivity to a network host using IPv6.
|
||||
scp: Securely copies files between hosts over SSH.
|
||||
bc: A command-line calculator.
|
||||
dd: Converts and copies files, useful for creating disk images.
|
||||
arp: Displays or modifies the system's ARP table.
|
||||
md5sum: Computes and verifies MD5 hashes.
|
||||
sha256sum: Computes and verifies SHA-256 hashes.
|
||||
hostnamectl: Controls the system's hostname.
|
||||
ip a: Displays IP addresses of the system's network interfaces.
|
||||
ip r: Displays the routing table.
|
||||
journalctl -f: Follows the system logs in real time.
|
||||
tshark: A command-line network packet analyzer.
|
||||
lspci: Lists PCI devices connected to the system.
|
||||
lsusb: Lists USB devices connected to the system.
|
||||
modprobe: Adds or removes modules from the Linux kernel.
|
||||
parted: A disk partitioning tool.
|
||||
mkfs: Creates a file system on a partition or device.
|
||||
fsck: Checks and repairs a file system.
|
||||
tune2fs: Adjusts tunable file system parameters on ext filesystems.
|
||||
swapoff: Disables swap space on a device.
|
||||
swapon: Enables swap space on a device.
|
||||
fuser: Identifies processes using files or sockets.
|
||||
nmcli: Command-line tool for managing NetworkManager.
|
||||
w: Displays logged-in users and their active processes.
|
||||
wall: Sends a message to all logged-in users.
|
||||
passwd: Changes user passwords.
|
||||
stat: Displays detailed information about a file or file system.
|
||||
chage: Changes user password expiration information.
|
||||
pmap: Reports memory map of a process.
|
||||
ionice: Sets or gets I/O scheduling class and priority.
|
||||
nc (netcat): Reads and writes data across network connections.
|
||||
dstat: Combines and displays system resource statistics, such as CPU, disk, and network usage.
|
||||
sar: Collects, reports, or saves system activity information.
|
||||
iostat: Reports CPU and I/O statistics for devices and partitions.
|
||||
iotop: Displays real-time disk I/O usage by processes.
|
||||
inotifywait: Waits for changes to files or directories using inotify.
|
||||
inotifywatch: Watches for changes in a file or directory using inotify.
|
||||
nice: Runs a command with a modified scheduling priority.
|
||||
renice: Alters the priority of running processes.
|
||||
lsblk: Lists information about block devices.
|
||||
hdparm: Configures and displays information about SATA/IDE devices.
|
||||
smartctl: Monitors the health of hard drives using SMART.
|
||||
fallocate: Preallocates space to a file.
|
||||
wipe: Securely erases files or partitions.
|
||||
file: Determines file type based on content.
|
||||
shred: Securely deletes a file by overwriting it.
|
||||
ncftpput: Uploads files to an FTP server.
|
||||
ncftpget: Downloads files from an FTP server.
|
||||
ufw: Simplified firewall utility for managing iptables rules.
|
||||
ethtool: Configures and displays Ethernet device settings.
|
||||
brctl: Manages Ethernet bridges.
|
||||
xkill: Terminates a window by clicking on it.
|
||||
xrandr: Configures display screen resolution, rotation, and reflection.
|
||||
xset: Manages X display settings.
|
||||
xdg-open: Opens a file or URL in the user's preferred application.
|
||||
apropos: Searches the manual page names and descriptions for keywords.
|
||||
systemd-analyze: Displays system boot performance statistics.
|
||||
timedatectl: Manages system time and date settings.
|
||||
fwupdmgr: Firmware update manager for updating hardware firmware.
|
||||
lscpu: Displays information about the CPU architecture.
|
||||
getfacl: Displays file access control lists (ACLs).
|
||||
setfacl: Sets file access control lists (ACLs).
|
||||
pv: Monitors the progress of data through a pipeline.
|
||||
logrotate: Manages the automatic rotation and compression of log files.
|
||||
xclip: Interfaces with the X clipboard from the command line.
|
||||
cups: Manages printers (Common Unix Printing System).
|
||||
lp: Sends a file to the printer.
|
||||
lprm: Removes print jobs from the queue.
|
||||
lpstat: Displays the status of the print system.
|
||||
strace: Traces system calls and signals.
|
||||
tcpdump: Captures network traffic for analysis.
|
||||
envsubst: Substitutes environment variables in shell commands.
|
||||
tput: Initializes terminal capabilities, such as clearing the screen.
|
||||
xargs: Builds and executes command lines from standard input.
|
||||
dmesg | tail: Displays recent kernel messages (useful for hardware or system errors).
|
||||
lsns: Lists all active Linux namespaces.
|
||||
ss -tuln: Lists open network ports (TCP and UDP).
|
||||
iptables-save: Outputs current iptables rules to a file.
|
||||
iptables-restore: Restores iptables rules from a file.
|
||||
tac: Displays a file in reverse line order (opposite of cat).
|
||||
nl: Numbers the lines of a file.
|
||||
yes: Repeatedly outputs a string until stopped (e.g., yes y).
|
||||
split: Splits a file into pieces.
|
||||
csplit: Splits a file into pieces based on context.
|
||||
paste: Merges lines of files side by side.
|
||||
comm: Compares two sorted files line by line.
|
||||
shuf: Shuffles lines of text in random order.
|
||||
factor: Prints the prime factors of a given number.
|
||||
seq: Prints numbers in a sequence.
|
||||
pr: Converts text files for printing, adding headers and footers.
|
||||
column: Formats output into columns.
|
||||
od: Displays files in octal, decimal, hexadecimal, or ASCII.
|
||||
hexdump: Displays files in hexadecimal format.
|
||||
xxd: Creates a hex dump of a file or converts a hex dump back to binary.
|
||||
watch: Runs a command repeatedly, displaying the output and updates.
|
||||
timeout: Runs a command with a time limit.
|
||||
stdbuf: Alters the buffering of input/output for a command.
|
||||
rename: Renames files using a regular expression.
|
||||
prlimit: Displays or modifies resource limits of running processes.
|
||||
uuidgen: Generates a new universally unique identifier (UUID).
|
||||
vipw: Safely edits the /etc/passwd file.
|
||||
vigr: Safely edits the /etc/group file.
|
||||
getent: Retrieves entries from databases like passwd, group, or hosts.
|
||||
addgroup: Creates a new user group.
|
||||
pwgen: Generates random passwords.
|
||||
expire: Forces a password change after a specific period.
|
||||
showmount: Displays information about an NFS server.
|
||||
exportfs: Maintains the NFS server's exported file systems.
|
||||
rpcinfo: Displays information about RPC services on a networked system.
|
||||
lsmod: Lists currently loaded kernel modules.
|
||||
insmod: Inserts a module into the Linux kernel.
|
||||
rmmod: Removes a module from the Linux kernel.
|
||||
depmod: Generates modules dependency and map files.
|
||||
kmod: Interfaces with kernel modules from the command line.
|
||||
e2fsck: Checks the integrity of an ext2/ext3/ext4 file system.
|
||||
blkid: Displays block device attributes, including UUID.
|
||||
mount: Mounts a file system.
|
||||
umount: Unmounts a file system.
|
||||
parted: A command-line partition editor.
|
||||
gparted: A graphical partition editor (based on parted).
|
||||
cryptsetup: Manages encrypted devices.
|
||||
losetup: Configures loopback devices.
|
||||
mkswap: Sets up a swap area on a device or file.
|
||||
tmux: Terminal multiplexer for managing multiple terminal sessions.
|
||||
finger: Displays user information (if installed).
|
||||
lastb: Shows failed login attempts.
|
||||
pidof: Finds the process ID (PID) of a running program.
|
||||
pgrep: Searches for processes by name.
|
||||
curl -I: Fetches the HTTP headers from a URL.
|
||||
chattr: Changes file attributes on a Linux file system.
|
||||
lsattr: Lists file attributes on a Linux file system.
|
||||
join: Joins lines of two files based on a common field.
|
||||
tree: Displays a directory structure in a tree-like format.
|
||||
col: Filters reverse line feeds from input.
|
||||
free: Displays memory usage.
|
|
@ -9,6 +9,7 @@ use crate::{
|
|||
use crossterm::event::{KeyCode, KeyEvent, KeyEventKind, KeyModifiers};
|
||||
use ego_tree::NodeId;
|
||||
use linutil_core::{Command, ListNode, Tab};
|
||||
use rand::Rng;
|
||||
use ratatui::{
|
||||
layout::{Alignment, Constraint, Direction, Layout},
|
||||
style::{Style, Stylize},
|
||||
|
@ -39,6 +40,7 @@ pub struct AppState {
|
|||
multi_select: bool,
|
||||
selected_commands: Vec<Command>,
|
||||
drawable: bool,
|
||||
tip: &'static str,
|
||||
}
|
||||
|
||||
pub enum Focus {
|
||||
|
@ -69,6 +71,7 @@ impl AppState {
|
|||
multi_select: false,
|
||||
selected_commands: Vec::new(),
|
||||
drawable: false,
|
||||
tip: get_random_line(include_str!("../cool_tips.txt").lines().collect()),
|
||||
};
|
||||
state.update_items();
|
||||
state
|
||||
|
@ -246,7 +249,12 @@ impl AppState {
|
|||
// Create the list widget with items
|
||||
let list = List::new(items)
|
||||
.highlight_style(style)
|
||||
.block(Block::default().borders(Borders::ALL).title(title))
|
||||
.block(
|
||||
Block::default()
|
||||
.borders(Borders::ALL)
|
||||
.title(title)
|
||||
.title_bottom(Line::from(self.tip.bold().blue()).right_aligned()),
|
||||
)
|
||||
.scroll_padding(1);
|
||||
frame.render_stateful_widget(list, chunks[1], &mut self.selection);
|
||||
|
||||
|
@ -525,3 +533,13 @@ impl AppState {
|
|||
self.update_items();
|
||||
}
|
||||
}
|
||||
|
||||
fn get_random_line(lines: Vec<&str>) -> &str {
|
||||
if lines.is_empty() {
|
||||
return "";
|
||||
}
|
||||
|
||||
let mut rng = rand::thread_rng();
|
||||
let random_index = rng.gen_range(0..lines.len());
|
||||
lines[random_index]
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user