• thingsiplay ( thingsiplay@lemmy.ml ) 
    link
    fedilink
    arrow-up
    9
    ·
    edit-2
    10 hours ago

    That’s really cute. I personally won’t use it (don’t even use Fish), but wanted to give some tips. First, the code is intended to run each time a new terminal (more accurately a new instance of Fish is run) is opened up, right? If so, then I suggest to optimize a bit for performance, so opening a terminal stays snappy.

    There are parts that do not change usually, so running and grabbing the content each time is a bit of waste. I’ll suggest creating a single cache file with all the content that stays the same. In example following lines

    awk -F'"' '/PRETTY_NAME/ {print $2}' /etc/os-release
    awk '/cpu cores/{c=1} c{ print $4; if (/cpu cores/) exit }' /proc/cpuinfo
    

    need to run only once, if the cache file doesn’t exist already. At start of script check if the cache file exists, and read the file once only. The file could be in /tmp/ directory, so it gets deleted with reboot and should run once and always up to date. There is also a file cat /proc/loadavg, which you could use instead using uptime | awk. So instead you could just have a more simple sed or grep command. Instead:

    uptime | awk '{ print substr($(NF-2), 1, length($(NF-2)) - 1)"% Load" }'
    

    do

    grep -o '^[^ ]*' /proc/loadavg
    

    Note my code examples are in Bash syntax, not sure if there are differences that matters here. I see you like awk a lot BTW.

    Edit: Changed the line with uptime | awk from your code, as I copy pasted the wrong line by accident before.

    • lilith267 ( lilith267@lemmy.blahaj.zone ) OP
      link
      fedilink
      English
      arrow-up
      2
      ·
      6 hours ago

      Thanks a lot for the advice!

      Grabbing the content each time is a bit of a waste

      In practice fish is extremely more efficient then bash with the script profiling at 9ms. Not amazing but since this will only run once when opening the shell its small enough to not be noticeable

      There is also a file cat /proc/loadavg

      So thats where it was! My original script tried to loop over all the cpu max and mins and calculate the percentage before deciding uptime was just more practical. Thanks for the info!

      I see you like awk a lot BTW

      Its just so damn easy to grab the piece of info you want with lol

      Really thanks for all the feedback Ill have to work some of your advice in when I get back to my computer