Nwg-drawer is a golang replacement to the nwggrid command (a part of nwg-launchers).

nwg-drawer

This application is a part of the nwg-shell project.

Nwg-drawer is a golang replacement to the nwggrid command (a part of nwg-launchers). It's being developed with sway in mind, but should also work with other wlroots-based Wayland compositors. X Window System is not supported.

The nwg-drawer command displays the application grid. The search entry allows to look for installed applications, and for files in XDG user directories. The grid view may also be filtered by categories.

You may pin applications by right-clicking them. Pinned items will appear above the application grid. Right-click a pinned item to unpin it. The pinned items cache is shared with nwg-menu and nwggrid.

screenshot-01.png

more screenshots | see on YouTube

Packaging status

Installation

Dependencies

  • go 1.16 (just to build)
  • gtk3
  • gtk-layer-shell

Optional (recommended):

  • thunar
  • alacritty

You may use another file manager and terminal emulator (see command line arguments), but for now the program has only been tested with the two mentioned above.

Steps

  1. Clone the repository, cd into it.
  2. Install necessary golang libraries with make get.
  3. make build
  4. sudo make install

Building the gotk3 library takes quite a lot of time. If your machine is x86_64, you may skip steps 2-3, and install the provided binary by executing step 4.

Command line arguments

$ nwg-drawer -h
Usage of nwg-drawer:
  -c uint
    	number of Columns (default 6)
  -fm string
    	File Manager (default "thunar")
  -fscol uint
    	File Search result COLumns (default 2)
  -fslen int
    	File Search name length Limit (default 80)
  -is int
    	Icon Size (default 64)
  -lang string
    	force lang, e.g. "en", "pl"
  -o string
    	name of the Output to display the menu on (sway only)
  -ovl
    	use OVerLay layer
  -s string
    	Styling: css file name (default "drawer.css")
  -spacing uint
    	icon spacing (default 20)
  -term string
    	Terminal emulator (default "alacritty")
  -v	display Version information

Styling

Edit ~/.config/nwg-panel/drawer.css to your taste.

Credits

This program uses some great libraries:

  • gotk3 Copyright (c) 2013-2014 Conformal Systems LLC, Copyright (c) 2015-2018 gotk3 contributors
  • gotk3-layershell by @dlasky - many thanks for writing this software, and for patience with my requests!
  • go-sway Copyright (c) 2019 Joshua Rubin
  • go-singleinstance Copyright (c) 2015 Allan Simon
Owner
Piotr Miller
After hours developer, Linux fan, Arch Linux user
Piotr Miller
Comments
  • Drawer becomes unresponsive for some inputs

    Drawer becomes unresponsive for some inputs

    I'm using nwg-drawer 0.2.8 on NxOS 22.05.

    How to reproduce

    1. Use NixOS?
    2. Install Tor Browser.
    3. Launch nwg-drawer, start typing tor-

    In my setup, the program just freezes and freezes my entire Sway desktop. If I hit Escape, the nwg-drawer exits and my desktop is back to normal after some time (around 10 s).

    I don't know why Tor Browser in particular triggers this behavior. I have also noticed that nwg-drawer is not very responsive in general. Response to keypresses takes always takes at least half a second.

    nwg-drawer output:

    time="2022-08-03T23:50:40+02:00" level=info msg="term: foot"
    time="2022-08-03T23:50:40+02:00" level=info msg="lang: fr_FR"
    time="2022-08-03T23:50:40+02:00" level=info msg="Config dir: /home/olivier/.config/nwg-drawer"
    time="2022-08-03T23:50:40+02:00" level=info msg="Copying file: /home/olivier/.config/nwg-drawer/drawer.css"
    time="2022-08-03T23:50:40+02:00" level=info msg="Found 0 pinned items"
    time="2022-08-03T23:50:40+02:00" level=info msg="Found 136 desktop files"
    time="2022-08-03T23:50:40+02:00" level=info msg="Skipped 3 duplicates; 46 .desktop entries hidden by \"NoDisplay=true\""
    time="2022-08-03T23:50:40+02:00" level=info msg="/home/olivier/.config/nwg-drawer/preferred-apps.json file not found"
    time="2022-08-03T23:50:40+02:00" level=info msg="/home/olivier/.config/nwg-drawer/excluded-dirs file not found"
    
    (nwg-drawer:2624720): dbind-WARNING **: 23:50:40.107: AT-SPI: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
    time="2022-08-03T23:50:40+02:00" level=error msg="ERROR: /home/olivier/.config/nwg-drawer/drawer.css css file not found or erroneous. Using GTK styling."
    time="2022-08-03T23:50:40+02:00" level=error msg="<broken file>:1:0Failed to import: Erreur lors de l’ouverture du fichier /home/olivier/.config/nwg-drawer/drawer.css\u00a0: No such file or directory"
    time="2022-08-03T23:50:40+02:00" level=warning msg="Undefined icon for "
    
    (nwg-drawer:2624720): Gtk-WARNING **: 23:50:40.370: Found an icon but could not load it. Most likely gdk-pixbuf does not provide SVG support.
    time="2022-08-03T23:50:40+02:00" level=info msg="Using XDG user dirs from /home/olivier/.config/user-dirs.dirs"
    
    ** (nwg-drawer:2624720): WARNING **: 23:50:40.431: gtk-layer-shell v0.6.0 may not work on GTK v3.24.34. If you experience crashes, check https://github.com/wmww/gtk-layer-shell/blob/master/compatibility.md
    time="2022-08-03T23:50:40+02:00" level=info msg="UI created in 390 ms. Thank you for your patience."
    time="2022-08-03T23:50:44+02:00" level=warning msg="Undefined icon for "
    time="2022-08-03T23:50:46+02:00" level=warning msg="Undefined icon for "
    time="2022-08-03T23:50:46+02:00" level=warning msg="Undefined icon for "
    time="2022-08-03T23:51:08+02:00" level=warning msg="Undefined icon for "
    
  • I hide the apps without icons and It does not detect `~/.local/share/applications/*.desktop` files

    I hide the apps without icons and It does not detect `~/.local/share/applications/*.desktop` files

    Hello,

    I want to hide these apps without icon:

    imagem

    And it does not detect the desktop configuration files from ~/.local/share/applications where VSCode desktop files are located and are not found in the nwg-drawer.

  • Categories not showing

    Categories not showing

    First thank you for making so many great tools. I am using SwayWM on Arch and nwg-drawer is exactly what I am looking for.

    I have installed nwg-drawer on two of my machines, both have same set up (Arch+Sway). However, on my laptop (thinkpad), nwg-drawer does not have any categories, other than "All". On the other machine (thinkcentre), all categories (including icons) showed up correctly.

    I checked /usr/share/nwg-drawer and I do have all the necessary files in the desktop-directories directory. On both machines, I use default settings without any modification.

    I also noticed that on thinkcentre, nwg-drawer automatically copies drawer.css to my local config folder, even after I try to delete it. This was not the case on my thinkpad.

    All packages are latest., installed from official repo.

    The only difference I can think of is that Thinkcentre used to have Gnome installed, and then I uninstalled it to switch to Sway. On Thinkpad, I started fresh with Sway. I wonder if there is any on Gnome that made nwg-drawer categories working properly?

    Thank you!

  • Launched applications are not detached from the launcher process when resident

    Launched applications are not detached from the launcher process when resident

    As per the title, applications are not detached from the launcher process when the drawer instance is resident.

    screenshot_2022-01-04_20-22-08_311654307

    Normally this goes unnoticed, but if SIGKILL is sent to the launcher, all child processes are terminated as well. Probably related, in the screenshot it's also possible to notice gimp as a zombie process; this happened after quitting gimp.

    It would be better instead if processes were left to the init system to handle, similarly as it happens when a standalone instance of the drawer executes an app, then quits.

  • Touch swiping results in a mouse click at the end of the action

    Touch swiping results in a mouse click at the end of the action

    Describe the bug

    When swiping up/down on a touchscreen enabled device the drawer does scroll down while the scrolling action is in progress but immediately exits upon lifting the finger from the touchscreen. Essentially, at the point where the pointer is at the end of the touch action a mouse click is done, which either opens the app the pointer is on or quits the drawer.

    To Repoduce

    Steps to reproduce the behavior:

    • Install package from AUR
    • Run nwg-drawer

    Expected behavior

    A swiping action should not result in a mouse click. I realize this might be difficult to reproduce without a touch device so i'd happily help to debug this if you are interested in making this work on a touchscreen.

    Incidentally, the nwggrid works as expected

    Desktop (please complete the following information):

    • Device: Acer Switch Alpha 12 (2in1)
    • Arch Linux
    • Go version: go version go1.17.5 linux/amd64
    • gtk-layer-shell version: gtk-layer-shell 0.6.0-1

    Additional context

    $ nwg-drawer -d    
    INFO[0000] term: xterm-kitty                            
    INFO[0000] lang: en_US                                  
    INFO[0000] Config dir: /home/user/.config/nwg-drawer   
    INFO[0000] Found 0 pinned items                         
    INFO[0000] Found 89 desktop files                       
    INFO[0000] Skipped 0 duplicates; 23 .desktop entries hidden by "NoDisplay=true" 
    INFO[0000] /home/user/.config/nwg-drawer/preferred-apps.json file not found 
    INFO[0000] /home/user/.config/nwg-drawer/excluded-dirs file not found 
    INFO[0000] Using style from /home/user/.config/nwg-drawer/drawer.css 
    WARN[0000] Undefined icon for XDvi                      
    WARN[0000] /home/user/.config/user-dirs.dirs file not found, using defaults 
    
    ** (nwg-drawer:148169): WARNING **: 23:04:00.285: gtk-layer-shell v0.6.0 may not work on GTK v3.24.31. If you experience crashes, check https://github.com/wmww/gtk-layer-shell/blob/master/compatibility.md
    INFO[0000] UI created in 423 ms. Thank you for your patience. 
    ERRO[0000] ERROR%!(EXTRA syscall.Errno=no such file or directory) 
    
  • Panic when run `pkill -USR1 nwg-drawer`

    Panic when run `pkill -USR1 nwg-drawer`

    Description

    I have a nwg-drawer process in background, and when i run the command pkill -USR1 nwg-drawer, nwg-drawer panic.

    Actual result

    • Run the command nwg-drawer -fm nautilus -nocats -nofs -o 1 -ovl -r in a first terminal
    • In another terminal run pkill -USR1 nwg-drawer
    • See nwg-drawer panic.

    Log

    INFO[0000] term: foot-direct                            
    INFO[0000] lang: fr_FR                                  
    INFO[0000] Config dir: /home/gouvinb/.config/nwg-drawer 
    INFO[0000] Found 0 pinned items                         
    INFO[0000] Found 279 desktop files                      
    INFO[0000] Skipped 86 duplicates; 73 .desktop entries hidden by "NoDisplay=true" 
    INFO[0000] /home/gouvinb/.config/nwg-drawer/preferred-apps.json file not found 
    INFO[0000] /home/gouvinb/.config/nwg-drawer/excluded-dirs file not found 
    
    (nwg-drawer:30966): Gtk-WARNING **: 09:20:51.269: Unknown key gtk-monospace-font-name in /home/gouvinb/.config/gtk-3.0/settings.ini
    INFO[0000] Using style from /home/gouvinb/.config/nwg-drawer/drawer.css 
    WARN[0000] Undefined icon for XDvi                      
    INFO[0000] Using XDG user dirs from /home/gouvinb/.config/user-dirs.dirs 
    
    ** (nwg-drawer:30966): WARNING **: 09:20:51.909: gtk-layer-shell v0.6.0 may not work on GTK v3.24.31. If you experience crashes, check https://github.com/wmww/gtk-layer-shell/blob/master/compatibility.md
    INFO[0000] UI created in 807 ms. Thank you for your patience. 
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x55cd4496c7e4]
    
    goroutine 1 [running]:
    main.main.func6()
    	./main.go:498 +0x64
    reflect.Value.call({0x55cd44a25e60, 0xc0000d5490, 0xc0001cd7e0}, {0x55cd449a4250, 0x4}, {0x0, 0x0, 0xc000080400})
    	reflect/value.go:556 +0x845
    reflect.Value.Call({0x55cd44a25e60, 0xc0000d5490, 0x81}, {0x0, 0x0, 0x0})
    	reflect/value.go:339 +0xc5
    github.com/gotk3/gotk3/glib.sourceFunc(0xc0000001a0)
    	github.com/gotk3/[email protected]/glib/glib.go:324 +0xb2
    github.com/gotk3/gotk3/gtk._Cfunc_gtk_main()
    	_cgo_gotypes.go:17413 +0x45
    github.com/gotk3/gotk3/gtk.Main(...)
    	github.com/gotk3/[email protected]/gtk/gtk.go:1241
    main.main()
    	./main.go:531 +0x1b05
    
  • Allow specifying settings in a config file

    Allow specifying settings in a config file

    Hi, would it be possible to specify launch settings in a config file as well? I think it would be of help in standardizing systemd user units and xdg autostart desktop files.

    Ideally, nwg-drawer could try to read something like "$XDG_CONFIG_DIR/nwg-drawer/settings" at startup. For those use-cases where "-r" is specified, the launched instance could first try to trigger the background one, if it exists (kind of like it already does). If no background instance is running instead, it just starts as that.

    Of course, cli arguments should still have precedence over the config file, to allow overriding the default behaviour when needed.

  • Catergory Buttons Styling Does Not Work

    Catergory Buttons Styling Does Not Work

    The styling for category buttons does not work. The buttons continue to take the styling from the buttons. nwg-drawer version 0.1.3

    DRAWER.CSS

    window {
        background-color: rgba (36, 47, 79, 0.95);
        color: #eeeeee
    }
    
    entry {
       box-shadow: 0 0 6 5 #2e3440;
       background-color: #3b4252;
       border: none;
       border-radius:10px;
    }
    
    button {
        box-shadow: 0 0 6 5 #2e3440;
        background-color: #3b4252;
        border: none;
        border-radius:5px;
        margin: 4px;
    }
    
    category-button {
        background-color: transparent;
        padding: 1px;
    }    
        
    
    button:hover {
        background-color: rgba(129,161,193,0.7);
    }
    
    button:focus {
        background-color: #5e81ac;
    }
    
    #pinned-box {
        padding-bottom: 10px;
        border-bottom: 1px dotted gray
    }
    
    #files-box {
        padding: 10px;
        border: 1px dotted gray;
    }    
    
    
  • Cannot launch chrome apps

    Cannot launch chrome apps

    Description

    When I launch a chrome app like Stadia or Youtube Music via nwg-drawer, I get a panic error.

    System informations

    OS: Arch Linux x86_64
    Host: 20HFCTO1WW ThinkPad T470s
    Kernel: 5.13.9-arch1-1
    Shell: zsh 5.8
    Resolution: 1920x1080
    WM: sway
    Terminal: alacritty
    CPU: Intel i7-7500U (4) @ 3.500GHz
    GPU: Intel HD Graphics 620
    Memory: 15901MiB
    

    Step to reproduce

    Preparation

    1. Launch Chrome
    2. Install an PWA like Stadia or Youtube Music

    Reproduce error

    1. Run nwg-drawer (I tested with these 2 commands: nwg-drawer and nwg-drawer -o 1 -fm nautilus -ovl)
    2. Select a chrome app

    Log

    lang: fr_FR
    Found 0 pinned items
    Found 221 desktop files
    Skipped 49 duplicates; 63 .desktop entries hidden by "NoDisplay=true"
    
    UI created in 444 ms. Thank you for your patience.
    panic: runtime error: slice bounds out of range [4:3] [recovered]
    	panic: closure error: unexpected panic caught: runtime error: slice bounds out of range [4:3]
    
    Closure added at:
    	main.flowBoxButton at command-line-arguments/uicomponents.go:254
    	main.setUpAppsFlowBox at command-line-arguments/uicomponents.go:202
    	main.main at command-line-arguments/main.go:326
    
    goroutine 1 [running]:
    github.com/gotk3/gotk3/internal/closure.FuncStack.Panicf(0x557c20bad580, 0xc0001443c0, 0x13, 0xc000121de8, 0x3, 0x3, 0x557c20b265fd, 0x1b, 0xc00021f260, 0x1, ...)
    	github.com/gotk3/[email protected]/internal/closure/funcstack.go:116 +0xb1f
    github.com/gotk3/gotk3/internal/closure.FuncStack.TryRepanic(0x557c20bad580, 0xc0001443c0, 0x13, 0xc000121de8, 0x3, 0x3)
    	github.com/gotk3/[email protected]/internal/closure/funcstack.go:134 +0xfb
    panic(0x557c20bcf4c0, 0xc000148150)
    	runtime/panic.go:965 +0x1b9
    main.launch(0xc0002aa06c, 0x66, 0x0)
    	command-line-arguments/tools.go:599 +0x80a
    main.flowBoxButton.func1(0xc000119290, 0xc00014a5f8, 0x0)
    	command-line-arguments/uicomponents.go:257 +0xb0
    reflect.Value.call(0x557c20bad580, 0xc0001443c0, 0x13, 0x557c20b20223, 0x4, 0xc000144b10, 0x2, 0x2, 0x16, 0x7f331effc678, ...)
    	reflect/value.go:476 +0x8e7
    reflect.Value.Call(0x557c20bad580, 0xc0001443c0, 0x13, 0xc000144b10, 0x2, 0x2, 0xc00014a5f8, 0x16, 0x0)
    	reflect/value.go:337 +0xb9
    github.com/gotk3/gotk3/glib.goMarshal(0x7f3314e49350, 0x7f331effc600, 0x2, 0x7f331effc660, 0x7f331effc5e0, 0x0)
    	github.com/gotk3/[email protected]/glib/glib.go:271 +0xb71
    github.com/gotk3/gotk3/gtk._Cfunc_gtk_main()
    	_cgo_gotypes.go:17413 +0x3e
    github.com/gotk3/gotk3/gtk.Main(...)
    	github.com/gotk3/[email protected]/gtk/gtk.go:1241
    main.main()
    	command-line-arguments/main.go:363 +0x1330
    
  • [CHANGED BEHAVIOR] New installation opens default list differently, can't fix

    [CHANGED BEHAVIOR] New installation opens default list differently, can't fix

    This is less a glitch or bug I believe but my hard drive recently failed and I was without nwg for around a month. Instead of copying a snapshot over I decided to just throw together a whole fresh install. I'm still back with nwg of course lol. But now when I open the drawer, it selects the first icon in the alphabetical list is selected, where previously it selected the first application in my favorited list at the top. Is there a setting I am missing somewhere? I have been looking for any positional options but I haven't seen any yet.

  • How to add icons to categories?

    How to add icons to categories?

    I love this new launcher, a huge improvement to nwggrid! I love the fact that it works with my GTK theme, so I don't need to use hacks to make it work in light mode :)

    I see in your screenshots that you have icons for the categories, how do I add those? I'm guessing they should be provided by the GTK theme?

  • Spaces in command are not being processed correctly.

    Spaces in command are not being processed correctly.

    Commands with spaces (in file names for example) won't run no matter what.

    Suppose I want to run the following command

    retroarch Chrono Trigger.smc

    In which "Chrono Trigger.smc" is the name of the file. In standard bash we can express the middle space by two different ways (that I know of):

    • Backslashs: retroarch Chrono\ Trigger.smc
    • Double Quotes: retroarch "Chrono Trigger.smc"

    Ideally they would both work in nwg-drawer but it seems that none of these does.

    I tried to go through the source code but couldn't find a clear path to fix it.

  • Custom categories

    Custom categories

    Adding Custom Categories

    The changes in this pull request add the ability for the dynamic creating of categories, allow of user defined categories to be user by nwg-drawer

    Spiel

    I want to spend some time convincing you that this changes are not only something necessary to cover my "very specific use case", I also think that the changes make the code simpler and easier to maintain. I have deleted more lines than I have added.

    The current category code is using a case by case basis which imply that any modification or addition of categories means the developer have to modify the code in multiple sections, increasing work load and margin for error. My changes try to parametrize the process making it more dynamic and easier to deal with (in my opinion).

    Changes

    Brief explanation of the modification in each file.

    main.go

    The main change here is the exclusion of the listCategory* global variables, this is replaced by a new property in the category struct: Apps. That is what was previously saved in listUtility is now saved in categories[0].Apps.

    The second change is the modification of the global variable categoryNames to categoryMatches. In the current code multiple entries' category are grouped in the same umbrella category by using a list of hardcoded matches. I moved the parametrization from the assignToList function to categoryMatches.

    tools.go

    I will start on the end of the File. assignToList function was rewritten and now it uses two for loops to go through all the possible categories and assigning the desktop entries to cat.App if the categories on the entry matches cat.Matches. (I just noticed I am not checking if the entry is not already on the category, have to fix that).

    The other change is the introduction of the JSON configuration file. The program looks for $XDG_CONFIG_HOME/nwd-drawer/categories.json and adds any categories defined there, an example of a configuration file is:

    [
      {
        "Name": "Retroarch",
        "DisplayName": "Retroarch",
        "Icon": "applications-games",
        "Matches": ["Retroarch"],
      }
    ]
    

    Which creates a Category named Retrorarch.

    To be honest I dislike the fact that this method of creating categories is different from the current one. But I think that using one file to create all user defined categories is more friendly and have to user define multiple *.directory file, also JSON is more well known and widely used which also contributes to user friendliness. I tried transforming the current *.directory files to JSON file(s) but that proved hard to do. I am looking forward for you opinion on the subject.

    uicomponents.go

    There is not much to talk about here, all references to listCategory* are changed to cat.Apps.

    Sorry to give you trouble. Take your time going though this. I have tested this and it looks to be working nicely. I will keep using it though to see if I notice any hidden problems.

  • Add User Defined Application Directory Flag

    Add User Defined Application Directory Flag

    This commit mimics the behaviour of nwggrid in which the "-d" flag ("--dir" in our case) override the directory in which we search for applications.

    Ex: nwg-drawer --dir $XDG_DATA_HOME/application/games

    Will display only the applications found in '$XDG_DATA_HOME/application/games' and nothing else.

    This makes reference to issue #34 in which I was hoping to achieve the same behavior but using a different strategy. At the time you proposed a solution which worked fine but ended up not meeting my needs due to other problems. It seems however the branch with the solution was never merged and is now dropped. I believe this to be an overall better way to deal with the problem because has a more direct and intuitive approach providing much power to the user select what application he wants to show up.

    I must do a disclaimer that I am not in any way an experience Go programmer, in fact I mostly only work with much higher level languages (like Julia and R) and for Data Science purposes. That said I did spend a fair amount of hours reading your code and think this solution is particularly innocuous. As you may attest.

    I have also tackled the other problem I had in issue #34: Adding Custom Categories and if you are receptive I am willing to make another pull request. That, however, is a much more consequential change.

  • Add Filter / Source Selection

    Add Filter / Source Selection

    Is it possible to add filters to nwg-drawer?

    Example: I would like to create a key bind to open a menu that only displays Games application.

    In nwggrid I do this by a different feature. There I can select the source folder for the .desktop files. To be honest this is not always exactly what I am looking for since I have to manually maintain all the desktop files. But it is also a good feature to have, for example using it I can not display some useless shortcut that is automatically create under /usr/share/applications.

  • nwg-drawer does not start when running a second wayfire session under same user

    nwg-drawer does not start when running a second wayfire session under same user

    While running some tests I started a second wayfire session under my regular id from a linux console/tty.

    In that second session I try to launch the drawer via the usual key combo and nothing happens.

    So I fire up a terminal and I see this message:

    INFO[0000] Showing resident instance (PID 2200)

    Now I have made nwg-drawer resident so that there is no delay when I invoke it in the course of my wayfire session and It looks like a side-effect of this approach is that I can no longer invoke in it in a second wayfire session.

    Is this to be expected... or is it a case of my not doing it right?

    Among my wayfire session 'autostart commands' I have:

    nwg-drawer -r

    As to my wayfire bindings I have:

    <Ctrl> <Alt> KEY_Y nwg-drawer

    Not really relevant but the reason I'm doing this is that I'm trying to hunt down the applications that are not 'native-wayland-enabled' and have disabled XWayland before launching the second session (and I'm too lazy to clone my setup to another id :)

go:embed and the golang-standards project layout

An example of using the golang-standards project layout and the go:embed directive.

May 17, 2022
Epitech BSQ in Golang
Epitech BSQ in Golang

EPITECH BSQ in Golang BSQ GO What is BSQ ? The goal of the project is to find the biggest square on a map while avoiding obstacles. The file map is pa

Mar 7, 2022
Simple scaffolding for board or turn based games in Golang

Go-boardgame Go-boardgame is a simple Go package that can be used as the scaffolding to write the game logic for any board or turn based game. Status

May 26, 2022
This repository contains my Golang practice

Golang Practice Repository This repository contains my practice code for Golang. Each exercise includes a README for running the application. NOTE: TH

Nov 28, 2021
Golang Demo - simple API to get top ranking repos from online csv file

README Generator Description A Demo Golang project, topics : Simple Http Server Get csv from endpoint Convert csv to struct sort slice of struct filte

Dec 3, 2021
A set of example golang code to start learning Go

Working with Go View online at: https://mkaz.blog/working-with-go/ Working with Go is a set of examples for Go (golang) to help an experienced program

Dec 23, 2022
Partially golang implement of openstack keystone client.

Keystone client Introduction The openapi folder is generated from keystone.yaml(i.e. the OAS) using openapi-generator-cli. Another OAS token.json is n

Jan 6, 2022
MenuStart plugin to nwg-panel, also capable of working standalone
MenuStart plugin to nwg-panel, also capable of working standalone

nwg-menu This code provides the MenuStart plugin to nwg-panel. It also may be used standalone, however, with a little help from command line arguments

Sep 9, 2022
Replacement of ApacheBench(ab), support for transactional requests, support for command line and package references to HTTP stress testing tool.

stress stress is an HTTP stress testing tool. Through this tool, you can do a stress test on the HTTP service and get detailed test results. It is ins

Aug 23, 2022
A Golang library for text processing, including tokenization, part-of-speech tagging, and named-entity extraction.

prose is a natural language processing library (English only, at the moment) in pure Go. It supports tokenization, segmentation, part-of-speech tagging, and named-entity extraction.

Jan 4, 2023
:book: A Golang library for text processing, including tokenization, part-of-speech tagging, and named-entity extraction.

prose prose is a natural language processing library (English only, at the moment) in pure Go. It supports tokenization, segmentation, part-of-speech

Jan 4, 2023
A Go Template Library. A bunch of utils and collections that are not part of the Golang standard library.

gotl A Go Template Library. A bunch of utils and collections that are not part of the Golang standard library. Prerequisites This library is using ext

Dec 15, 2021
Tugas Alta Immersive Backend Golang Basic Programming Part 2(Input/Output, Branching, Looping)
Tugas Alta Immersive Backend Golang Basic Programming Part 2(Input/Output, Branching, Looping)

Tatacara Melakukan Setup Tugas clone project ini dengan cara git clone https://github.com/Immersive-Backend-Resource/Basic-Programming-Part2.git sete

Jan 9, 2022
Tugas Alta Immersive Backend Golang Basic Programming Part 4(Complexity Analysis, Array, Slice, Function)
Tugas Alta Immersive Backend Golang Basic Programming Part 4(Complexity Analysis, Array, Slice, Function)

Tatacara Melakukan Setup Tugas clone project ini dengan cara git clone https://github.com/Immersive-Backend-Resource/Basic-Programming-Part4.git sete

Jan 9, 2022
Tugas Alta Immersive Backend Golang Basic Programming Part 3(Array, Slice, Function)
Tugas Alta Immersive Backend Golang Basic Programming Part 3(Array, Slice, Function)

Tatacara Melakukan Setup Tugas clone project ini dengan cara git clone https://github.com/Immersive-Backend-Resource/Basic-Programming-Part3.git sete

Jan 9, 2022
Run a real Postgres database locally on Linux, OSX or Windows as part of another Go application or test
Run a real Postgres database locally on Linux, OSX or Windows as part of another Go application or test

embedded-postgres Run a real Postgres database locally on Linux, OSX or Windows as part of another Go application or test. When testing this provides

Dec 27, 2022
Check if an IP address is part of an Azure Service Tag
Check if an IP address is part of an Azure Service Tag

Cloud IP Checker This service will help you determine whether an IP address is within one of the Azure Service Tag network ranges. If it is found, it

Nov 13, 2022
This slide deck and supporting material is part of the Introduction to Go training course by Dave Cheney

This slide deck and supporting material is part of the Introduction to Go training course by Dave Cheney.

Nov 14, 2022
Act as part of the business code and will report aqua scan report after application installed
Act as part of the business code and will report aqua scan report after application installed

starboard-report This repo aim to enrich the functionality of starboard. Starboard integrates security tools into the Kubernetes environment, so that

Nov 25, 2021