Skip to content

harilvfs/nitch

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

110 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

NiTch

incredibly fast system fetch written in nim๐Ÿ‘‘


Maintenance License GitHub release (latest by date)

Note

this is just a fork of nitch official repo to meet some of my needs. btw remember this has been abandoned years ago so no extra feature is here, you can just find the latest compiled binary in the release section. if you wanna contribute anyway and if you understand the code base you are welcome to contribute or fix anything.
also this is not a fork repo to maintain it onward, this is just to meet my needs, that's it.

Description ๐Ÿ“–

nitch is a small and incredibly fast system fetch written fully in nim๐Ÿ‘‘ without any dependencies, on my pc it executes in around 1.70 miliseconds.

The source code of nitch is highly documented and I hope it will act as a learning resource for nim and linux systems architecture

If anything in the source code is unclear or is lacking in its explanation, open an issue. Sometimes you get too close to something and you fail to see the "bigger picture"!

btw written in nim๐Ÿ‘‘

why nim๐Ÿ‘‘? because it's fast and simple


Installation โ˜๏ธ

wget https://raw.githubusercontent.com/harilvfs/nitch/main/setup.sh && sh setup.sh

Important

The setup script will ask whether you want nerd font symbols. If you have Nerd Font v3+ installed, select y. Otherwise select n to use the plain nitchNoNerd binary. You can also grab either binary directly from the releases page.

Usage ๐Ÿชจ

nitch

flags:

 -f --fetch   | return fetch about system
 -h --help    | return help message
 -v --version | return version of program

Configuration โš™๏ธ

nitch is configured by changing the source code

src/funcs/drawing.nim - config file

import std/terminal       # import standard terminal lib
import getDistroId        # import to get distro id through /etc/os-release
#import ../assets/logos   # uncomment if you use your own logo
import ../nitches/[getUser, getHostname,
                   getDistro, getKernel,
                   getUptime, getShell,
                   getPkgs, getRam,
                   getLogo, getLogoColor]  # import nitches to get info about user system

# the main function for drawing fetch
proc drawInfo*() =
  let  # distro id (arch, manjaro, debian)
    distroId: string = getDistroId()

  let  # logo and it color
    logoColor: ForegroundColor = getLogoColor(distroId)  # color for logo
    defaultLogo: string  = getLogo(distroId)             # default logo from nitch/src/assets/logos

  const  # icons before cotegores
    userIcon: string   = "๏€‡ "  # recomended: "๏€‡ " or "|>"
    hnameIcon: string  = "๎œ” "  # recomended: "๎œ” " or "|>"
    distroIcon: string = "๓ฐป€ "  # recomended: "๓ฐป€ " or "|>"
    kernelIcon: string = "๓ฐŒข "  # recomended: "๓ฐŒข " or "|>"
    uptimeIcon: string = "๏€— "  # recomended: "๏€— " or "|>"
    shellIcon: string  = "๏’‰ "  # recomended: "๏’‰ " or "|>"
    pkgsIcon: string   = "๓ฐ– "  # recomended: "๓ฐ– " or "|>"
    ramIcon: string    = "๓ฐ› "  # recomended: "๓ฐ› " or "|>"
    colorsIcon: string = "๓ฐ˜ "  # recomended: "๓ฐ˜ " or "->"
    # please insert any char after the icon
    # to avoid the bug with cropping the edge of the icon

    dotIcon: string = "๏‘„"  # recomended: "๏‘„" or "โ– "
    # icon for demonstrate colors

  const  # categories
    userCat: string   = " user   โ”‚ "  # recomended: " user   โ”‚ "
    hnameCat: string  = " hname  โ”‚ "  # recomended: " hname  โ”‚ "
    distroCat: string = " distro โ”‚ "  # recomended: " distro โ”‚ "
    kernelCat: string = " kernel โ”‚ "  # recomended: " kernel โ”‚ "-
    uptimeCat: string = " uptime โ”‚ "  # recomended: " uptime โ”‚ "
    shellCat: string  = " shell  โ”‚ "  # recomended: " shell  โ”‚ "
    pkgsCat: string   = " pkgs   โ”‚ "  # recomended: " pkgs   โ”‚ "
    ramCat: string    = " memory โ”‚ "  # recomended: " memory โ”‚ "
    colorsCat: string = " colors โ”‚ "  # recomended: " colors โ”‚ "

  let  # all info about system
    userInfo: string     = getUser()          # get user through $USER env variable
    hostnameInfo: string = getHostname()      # get Hostname hostname through /etc/hostname
    distroInfo: string   = getDistro()        # get distro through /etc/os-release
    kernelInfo: string   = getKernel()        # get kernel through /proc/version
    uptimeInfo: string   = getUptime()        # get Uptime through /proc/uptime file
    shellInfo: string    = getShell()         # get shell through $SHELL env variable
    pkgsInfo: string     = getPkgs(distroId)  # get amount of packages in distro
    ramInfo: string      = getRam()           # get ram through /proc/meminfo

  const  # aliases for colors
    color1: ForegroundColor = fgRed
    color2: ForegroundColor = fgYellow
    color3: ForegroundColor = fgGreen
    color4: ForegroundColor = fgCyan
    color5: ForegroundColor = fgBlue
    color6: ForegroundColor = fgMagenta
    color7: ForegroundColor = fgWhite
    color8: ForegroundColor = fgBlack
    color0: ForegroundColor = fgDefault

  # colored out
  stdout.styledWrite(styleBright, logoColor, defaultLogo)
  stdout.styledWrite(styleBright, "  โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n")
  stdout.styledWrite(styleBright, "  โ”‚ ", color1, userIcon, color0, userCat, color1, userInfo, "\n")
  stdout.styledWrite(styleBright, "  โ”‚ ", color2, hnameIcon, color0, hnameCat, color2, hostnameInfo, "\n")
  stdout.styledWrite(styleBright, "  โ”‚ ", color3, distroIcon, color0, distroCat, color3, distroInfo, "\n")
  stdout.styledWrite(styleBright, "  โ”‚ ", color4, kernelIcon, color0, kernelCat, color4, kernelInfo, "\n")
  stdout.styledWrite(styleBright, "  โ”‚ ", color5, uptimeIcon, color0, uptimeCat, color5, uptimeInfo, "\n")
  stdout.styledWrite(styleBright, "  โ”‚ ", color6, shellIcon, color0, shellCat, color6, shellInfo, "\n")
  stdout.styledWrite(styleBright, "  โ”‚ ", color1, pkgsIcon, color0, pkgsCat, color1, pkgsInfo, "\n")
  stdout.styledWrite(styleBright, "  โ”‚ ", color2, ramIcon, color0, ramCat, fgYellow, ramInfo, "\n")
  stdout.styledWrite(styleBright, "  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค\n")
  stdout.styledWrite(styleBright, "  โ”‚ ", color7, colorsIcon, color0, colorsCat, color7, dotIcon, " ", color1, dotIcon, " ", color2, dotIcon, " ", color3, dotIcon, " ", color4, dotIcon, " ", color5, dotIcon, " ", color6, dotIcon, " ", color8, dotIcon, "\n")
  stdout.styledWrite(styleBright, "  โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n\n")

Building ๐Ÿ“ฆ

0) install nim

1) clone repo

git clone https://github.com/unxsh/nitch.git

2) change dir to nitch

cd nitch/

3) build program with nimble

nimble build

After that you will get a ready-made binary file in the root directory of the project.


File architecture ๐Ÿ“

nitch
  โ”œโ”€โ”€ LICENSE
  โ”œโ”€โ”€ nitch.nimble
  โ”œโ”€โ”€ README.md
  โ”œโ”€โ”€ src
  โ”‚   โ”œโ”€โ”€ assets
  โ”‚   โ”‚   โ”œโ”€โ”€ assets.nim
  โ”‚   โ”‚   โ””โ”€โ”€ logos.nim
  โ”‚   โ”œโ”€โ”€ flags
  โ”‚   โ”‚   โ””โ”€โ”€ argParser.nim
  โ”‚   โ”œโ”€โ”€ funcs
  โ”‚   โ”‚   โ”œโ”€โ”€ drawing.nim
  โ”‚   โ”‚   โ”œโ”€โ”€ packages
  โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ getPacmanPkgs.nim
  โ”‚   โ”‚   โ””โ”€โ”€ perform.nim
  โ”‚   โ”œโ”€โ”€ nitches
  โ”‚   โ”‚   โ”œโ”€โ”€ getDistro.nim
  โ”‚   โ”‚   โ”œโ”€โ”€ getHostname.nim
  โ”‚   โ”‚   โ”œโ”€โ”€ getKernel.nim
  โ”‚   โ”‚   โ”œโ”€โ”€ getPkgs.nim
  โ”‚   โ”‚   โ”œโ”€โ”€ getRam.nim
  โ”‚   โ”‚   โ”œโ”€โ”€ getShell.nim
  โ”‚   โ”‚   โ”œโ”€โ”€ getUptime.nim
  โ”‚   โ”‚   โ””โ”€โ”€ getUser.nim
  โ”‚   โ”œโ”€โ”€ nitch.nim
  โ”‚   โ””โ”€โ”€ nitch.nim.cfg
  โ””โ”€โ”€ templates
      โ”œโ”€โ”€ cfgParser
      โ”œโ”€โ”€ cfgParser.nim
      โ”œโ”€โ”€ data.dat
      โ”œโ”€โ”€ listFiles.nim
      โ”œโ”€โ”€ readLine.nim
      โ”œโ”€โ”€ refTest.nim
      โ”œโ”€โ”€ shellCheck.nim
      โ”œโ”€โ”€ test.cfg
      โ”œโ”€โ”€ testFile
      โ””โ”€โ”€ testProc.nim

  7 directories, 30 files

Thanks for ideas & examples ๐Ÿ’ฌ

About

nitch - incredibly fast system fetch written in nim (fork)

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages

  • Nim 67.3%
  • Shell 32.7%