AstraExt/astra-monitor

New enhancements

Closed this issue · 4 comments

Description

  1. Add the possibility to select what to show in the gnome-panel
  2. Add a warning threshold
  3. Add battery information
  4. In the Network menu add the Public IP + country's name/flag
  5. In the Network menu add the VPN status
  6. Add detailed Network info

Details

1. Add the possibility to select what to show in the gnome-panel:

In the CPU, Memory and Storage tabs it's only possible to enable/disable the percentage. Why not also add the possibility to show different values? Like the Sensor tab, the user can select what to show in the gnome-panel using the Source menu.
For the CPU could be the CPU freq (GHz). , for the Memory could be the memory used in GB as well as for the Storage etc

2. Add a warning threshold

Set a threshold (percentage or absolute number) for the sensor and change the color of the icon when the the value is reached. e.g.:
If the CPU percentage hits 80% change the color to red
If the Download speed reaches 10MB/s change to blue
etc

3. Add new tab Battery information

The output of upower -d is:

Device: /org/freedesktop/UPower/devices/line_power_AC
  native-path:          AC
  power supply:         yes
  updated:              dom 21 gen 2024, 11:03:51 (10 seconds ago)
  has history:          no
  has statistics:       no
  line-power
    warning-level:       none
    online:              yes
    icon-name:          'ac-adapter-symbolic'

Device: /org/freedesktop/UPower/devices/battery_BAT0
  native-path:          BAT0
  vendor:               SMP
  model:                01AV446
  serial:               3611
  power supply:         yes
  updated:              dom 21 gen 2024, 11:04:01 (0 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               charging
    warning-level:       none
    energy:              15,21 Wh
    energy-empty:        0 Wh
    energy-full:         41,73 Wh
    energy-full-design:  45,28 Wh
    energy-rate:         10,857 W
    voltage:             11,815 V
    charge-cycles:       263
    time to full:        2,4 hours
    percentage:          36%
    capacity:            92,1599%
    technology:          lithium-polymer
    icon-name:          'battery-good-charging-symbolic'
  History (charge):
    1705831415	36,000	discharging
    1705831329	35,000	discharging
  History (rate):
    1705831441	10,857	charging
    1705831431	0,000	charging
    1705831425	6,457	discharging
    1705831415	0,000	discharging
    1705831386	10,706	charging
    1705831375	0,000	charging
    1705831359	10,039	discharging
    1705831329	10,360	discharging

Device: /org/freedesktop/UPower/devices/line_power_ucsi_source_psy_USBC000o001
  native-path:          ucsi-source-psy-USBC000:001
  power supply:         yes
  updated:              dom 21 gen 2024, 11:03:52 (9 seconds ago)
  has history:          no
  has statistics:       no
  line-power
    warning-level:       none
    online:              yes
    icon-name:          'ac-adapter-symbolic'

Device: /org/freedesktop/UPower/devices/DisplayDevice
  power supply:         yes
  updated:              dom 21 gen 2024, 11:04:01 (0 seconds ago)
  has history:          no
  has statistics:       no
  battery
    present:             yes
    state:               charging
    warning-level:       none
    energy:              15,21 Wh
    energy-full:         41,73 Wh
    energy-rate:         10,857 W
    charge-cycles:       N/A
    time to full:        2,4 hours
    percentage:          36%
    icon-name:          'battery-good-charging-symbolic'

Daemon:
  daemon-version:  1.90.2
  on-battery:      no
  lid-is-closed:   no
  lid-is-present:  yes
  critical-action: HybridSleep

It is possible to parse all the above data to get e.g. Energy rate (power [W] charging/discharging) , time to full (that changes to time to empty when discharging) etc

4. In the Network menu add the Public IP + country's name/flag

  • Get public IP: curl https://ipinfo.io/ip or curl https://ipecho.net/plain or ...

  • Get country's name by IP: curl ipinfo.io/x.x.x.x (x.x.x.x is the public IP)
    e.g. with Google

curl ipinfo.io/8.8.8.8
{
  "ip": "8.8.8.8",
  "hostname": "dns.google",
  "anycast": true,
  "city": "Mountain View",
  "region": "California",
  "country": "US",
  "loc": "37.4056,-122.0775",
  "org": "AS15169 Google LLC",
  "postal": "94043",
  "timezone": "America/Los_Angeles",
  "readme": "https://ipinfo.io/missingauth"

Note: the above info should not be updated every 1-2 sec as the Network but at most once a minute or 30 sec to avoid unnecessary curl request ( I do not think my IP changes every 2 seconds) and the second curl should be execute only if the public IP changes

5. In the Network menu add the VPN status

Using the command nmcli con show --active it's possible to see all the active connection/s with details

  • VPN connection disable. The output of nmcli con show --active command is:
NAME UUID TYPE DEVICE
HUAWEI zzzzz-xxxx-yyyy-aaaa-1234567890 wifi wlp5s0
lo zzzzz-xxxx-yyyy-aaaa-1234567890 loopback lo
  • VPN connection enable. The output of nmcli con show --active command is:
NAME UUID TYPE DEVICE
ProtonVPN zzzzz-xxxx-yyyy-aaaa-1234567890 vpn wlp5s0
HUAWEI zzzzz-xxxx-yyyy-aaaa-1234567890 wifi wlp5s0
tun0 zzzzz-xxxx-yyyy-aaaa-1234567890 tun tun0
lo zzzzz-xxxx-yyyy-aaaa-1234567890 loopback lo
pvpn-killswitch-ipv6 zzzzz-xxxx-yyyy-aaaa-1234567890 dummy ipv6leakintrf0
pvpn-killswitch zzzzz-xxxx-yyyy-aaaa-1234567890 dummy pvpnksintrf0

Change the VPN icon color (e.g. to green) if the VPN is connected

6. Add detailed Network info

Add Network details about (Link speed, signal level, channel etc)

Using the command iwconfig (followed by the name of the network interface e.g. iwconfig wlan0 or iwlist (followed by the network interface and the parameter e.g. iwlist wlan0 bitrate

iwconfig wlp5s0 
wlp5s0    IEEE 802.11  ESSID:"HUAWEI"  
          Mode:Managed  Frequency:5.18 GHz  Access Point: 74:XX:XX:XX:XX:XX   
          Bit Rate=390 Mb/s   Tx-Power=22 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=47/70  Signal level=-63 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:123   Missed beacon:0

or get one by one used iwlist

Screenshots

Screenshot from 2024-01-21 10-51-48

ip

Thank you !

Very great suggestions, thank you! Some of them were already in the list for V7. Will update you further as these features are being implemented.

Adding some of my suggestions here:

  • Option to add arbitrary number of sensors
  • Sensor hooks for stuff not captured by lm-sensors. viz. nvidia-gpu. It may be prebuilt.
  • Option to capture sensor info through cli commands.

@sansmoraxz gpu data like amdgpu_top or nvidia-smi or intel_gpu_top will be added by default in the processor menu. Can't give an ETA right now.
As far as other sensor sources go, I am doing some evaluations to find out if it is possible to safely add customizable modules. Having the user create scripts to run in the shell, I don't know if that is allowed by EGO.

Most of the requests of the OP have been added in the last release or in the previous ones. For battery info, asp per our Roadmap, it will be added in April. I'm gonna close this issue, but feel free to add any other suggestion or ask for a reopen if you think some request is unfulfilled.