mirror of
https://github.com/tomasriveral/nixos.git
synced 2026-08-12 02:28:37 +02:00
Worked on quickshell finalized module sysinfo
This commit is contained in:
@@ -21,8 +21,10 @@
|
||||
];
|
||||
|
||||
documentation.man.generateCaches = true; # used for the man script
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
|
||||
qt.enable = true;
|
||||
qt.enable = true;
|
||||
|
||||
# grub theme
|
||||
boot.loader.grub = {
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
../../modules/home-manager/neovim.nix # dont use nixvim. broken
|
||||
#../../modules/home-manager/neovim2.nix # ./neovim2.nix uses vim plug instead of the nix repository as with ./neovim.nix see the begining of neovim2 for an explanation
|
||||
../../modules/home-manager/rclone.nix
|
||||
#../../modules/home-manager/waybar.nix
|
||||
../../modules/home-manager/waybar.nix
|
||||
../../modules/home-manager/quickshell.nix # used for widgets, waybar and notifications
|
||||
#../../modules/home-manager/oh-my-posh.nix # zsh customizer
|
||||
../../modules/home-manager/oh-my-zsh.nix # another zsh customizer
|
||||
|
||||
@@ -1,20 +1,55 @@
|
||||
{
|
||||
writeShellApplication,
|
||||
ripgrep,
|
||||
gawkInteractive,
|
||||
...
|
||||
writeShellApplication,
|
||||
ripgrep,
|
||||
gawkInteractive,
|
||||
iproute2,
|
||||
coreutils,
|
||||
procps,
|
||||
upower,
|
||||
...
|
||||
}:
|
||||
writeShellApplication {
|
||||
name = "QS-sysinfo";
|
||||
runtimeInputs = [
|
||||
ripgrep
|
||||
gawkInteractive
|
||||
];
|
||||
text = ''
|
||||
Pad CPU, MEM, DISK to 2 chars (right-aligned)
|
||||
name = "QS-sysinfo";
|
||||
runtimeInputs = [
|
||||
ripgrep
|
||||
gawkInteractive
|
||||
iproute2
|
||||
coreutils
|
||||
procps
|
||||
upower
|
||||
];
|
||||
text = ''
|
||||
# Pad CPU, MEM, DISK to 2 chars (right-aligned)
|
||||
|
||||
cpu=$(awk '/^cpu /{printf("%.0f", ($2+$4)*100/($2+$4+$5))}' /proc/stat)
|
||||
cpu=$(printf "%2s" "$cpu")
|
||||
|
||||
sum=0
|
||||
count=0
|
||||
|
||||
for f in /sys/class/hwmon/hwmon*/temp*_input; do
|
||||
if [ -r "$f" ]; then
|
||||
val=$(cat "$f" 2>/dev/null) || continue
|
||||
sum=$((sum + val))
|
||||
count=$((count + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
temp=$(( sum / count / 1000 ))
|
||||
|
||||
sum=0
|
||||
count=0
|
||||
|
||||
for f in /sys/class/hwmon/hwmon*/fan*_input; do
|
||||
if [ -r "$f" ]; then
|
||||
val=$(cat "$f" 2>/dev/null) || continue
|
||||
sum=$((sum + val))
|
||||
count=$((count + 1))
|
||||
fi
|
||||
done
|
||||
fan=$(( sum / count / 1000 ))
|
||||
fan=$(printf "%4s" "$fan")
|
||||
|
||||
mem=$(free | awk '/Mem:/ {printf("%.0f",$3/$2*100)}')
|
||||
mem=$(printf "%2s" "$mem")
|
||||
|
||||
@@ -25,7 +60,21 @@ disk=$(printf "%2s" "$disk")
|
||||
power=$(upower -b | awk -F: '/energy-rate/ {gsub(/^[ \t]+/, "", $2); split($2,a," "); printf("%.2f", a[1])}')
|
||||
power=$(printf "%5s" "$power")
|
||||
|
||||
# network calculations
|
||||
iface=$(ip route get 1.1.1.1 | awk '{print $5; exit}')
|
||||
|
||||
rx1=$(cat "/sys/class/net/$iface/statistics/rx_bytes")
|
||||
tx1=$(cat "/sys/class/net/$iface/statistics/tx_bytes")
|
||||
|
||||
sleep 1
|
||||
|
||||
rx2=$(cat "/sys/class/net/$iface/statistics/rx_bytes")
|
||||
tx2=$(cat "/sys/class/net/$iface/statistics/tx_bytes")
|
||||
|
||||
down_speed=$(( (rx2 - rx1) / 1024 ))
|
||||
up_speed=$(( (tx2 - tx1) / 1024 ))
|
||||
|
||||
# Output JSON
|
||||
echo "{\"cpu\":\"$cpu\",\"mem\":\"$mem\",\"disk\":\"$disk\",\"power\":\"$power\"}"
|
||||
'';
|
||||
echo "{\"cpu\":\"$cpu\",\"temp\":\"$temp\",\"fan\":\"$fan\",\"mem\":\"$mem\",\"disk\":\"$disk\",\"power\":\"$power\",\"down\":\"$down_speed\",\"up\":\"$up_speed\"}"
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -107,46 +107,65 @@ PanelWindow {
|
||||
smooth: false
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id: sysinfo
|
||||
spacing: 10
|
||||
|
||||
property int cpu: 0
|
||||
property int mem: 0
|
||||
property int disk: 0
|
||||
property real power: 0
|
||||
|
||||
Timer {
|
||||
interval: 2000
|
||||
running: true
|
||||
repeat: true
|
||||
onTriggered: sysProcess.running = true
|
||||
}
|
||||
|
||||
Process {
|
||||
id: sysProcess
|
||||
command: ["QS-sysinfo"]
|
||||
|
||||
stdout: SplitParser {
|
||||
onRead: function(line) {
|
||||
try {
|
||||
var data = JSON.parse(line)
|
||||
sysinfo.cpu = data.cpu
|
||||
sysinfo.mem = data.mem
|
||||
sysinfo.disk = data.disk
|
||||
sysinfo.power = data.power
|
||||
} catch(e) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
id: infoText
|
||||
text: "CPU " + sysinfo.cpu + "% MEM " + sysinfo.mem + "% DSK " + sysinfo.disk + "% PWR " + sysinfo.power + "W"
|
||||
font.pixelSize: 18
|
||||
color: Theme.Colors.barColor8
|
||||
}
|
||||
}
|
||||
RowLayout {
|
||||
id: sysinfo
|
||||
spacing: 10
|
||||
|
||||
property int cpu: 0
|
||||
property int mem: 0
|
||||
property int disk: 0
|
||||
property real power: 0
|
||||
property int temp: 0
|
||||
property int fan: 0
|
||||
property int down: 0
|
||||
property int up: 0
|
||||
|
||||
Timer {
|
||||
interval: 2000
|
||||
running: true
|
||||
repeat: true
|
||||
onTriggered: sysProcess.running = true
|
||||
}
|
||||
|
||||
Process {
|
||||
id: sysProcess
|
||||
command: ["QS-sysinfo"]
|
||||
|
||||
stdout: SplitParser {
|
||||
onRead: function(line) {
|
||||
try {
|
||||
var data = JSON.parse(line)
|
||||
|
||||
sysinfo.cpu = parseInt(data.cpu)
|
||||
sysinfo.mem = parseInt(data.mem)
|
||||
sysinfo.disk = parseInt(data.disk)
|
||||
sysinfo.power = parseFloat(data.power)
|
||||
sysinfo.temp = parseInt(data.temp)
|
||||
sysinfo.fan = parseInt(data.fan)
|
||||
sysinfo.down = parseInt(data.down)
|
||||
sysinfo.up = parseInt(data.up)
|
||||
|
||||
} catch(e) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
spacing: 2
|
||||
|
||||
Text {
|
||||
text: "CPU " + sysinfo.cpu + "% | MEM " + sysinfo.mem + "% | PWR " + sysinfo.power.toFixed(1) + "W | UP " + sysinfo.up
|
||||
font.pixelSize: 18
|
||||
color: Theme.Colors.barColor8
|
||||
}
|
||||
|
||||
Text {
|
||||
text: "TMP " + sysinfo.temp + "°C | DSK " + sysinfo.disk + "% | FAN " + sysinfo.fan + " | DOWN " + sysinfo.down
|
||||
font.pixelSize: 18
|
||||
color: Theme.Colors.barColor8
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------- RIGHT MODULE ----------------
|
||||
|
||||
@@ -27,17 +27,16 @@ with quickshell:
|
||||
see all thoses waarnings and errors
|
||||
set keybinds. for screenshot
|
||||
fix screenshot (copy, write, etc.)
|
||||
fix battery icon
|
||||
fix player control icons
|
||||
remove unnecessary stuff
|
||||
|
||||
give battery percentage
|
||||
maybe modify some of the images (like the notification body)
|
||||
do a full bar (no ugly empty space at top)
|
||||
add brightness slider
|
||||
maybe change sound icon by volume level
|
||||
maybe incorpore the fast fourier transform code
|
||||
|
||||
add some modules to see system stats
|
||||
|
||||
|
||||
maybe write some notification center
|
||||
|
||||
|
||||
Reference in New Issue
Block a user