Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

NODE : Launcher.. and more.


  • Please log in to reply
374 replies to this topic
Drugwash
  • Members
  • 1078 posts
  • Last active: May 24 2016 04:20 PM
  • Joined: 07 Sep 2008

Thanks, bro, but I'm just passing by. Just found out about FileDen minutes ago and this brought me down, as I had my tools there for my blog friends to grab. The world is spinning in the wrong direction and I can't follow. I'll be there for you if you need me, but otherwise I do not exist anymore.

Take care, my friend!


(AHK 1.0.48.05 and Win98SE) forever | My scripts are here


Rajat
  • Members
  • 1904 posts
  • Last active: Jul 17 2015 07:45 AM
  • Joined: 28 Mar 2004

I did some folder cleanup, removed redundant files etc. I hope it helps.


MIA

CleanNews.in : Bite sized latest news headlines from India with zero bloat


robertcollier4
  • Members
  • 141 posts
  • Last active: Jun 28 2019 01:05 AM
  • Joined: 11 Nov 2012

Thanks Rajat for sharing Node source and thanks Drugwash for sending me FileFindFilter DLL source (mirror of Drugwash's FileFindFilter DLL source here for posterity).

 

My next project is that I want to try to get Node to look and behave like Humanized Enso, i.e.:

 

1. Transparent gray background box with white text (which I know is already possible with AutoHotkey).

 

2. The Enso "quasi-modal" behavior is something I fell in love with back when Enso was still being developed (unfortunately it was abandoned). You hold down "Caps Lock" - type in your command while keeping "Caps Lock" pressed and then release "Caps Lock" to launch the top command.

 

http://www.humanized.com/support/
http://humanized.com...quicksilver.php

The Obvious Differences

The first new thing you'll notice about Enso is that, by default, it is "quasimodal." This means that you hold down the activation key while you type the name of a command, and release the key to execute the command.

 

HumanizedEnso.png



Rajat
  • Members
  • 1904 posts
  • Last active: Jul 17 2015 07:45 AM
  • Joined: 28 Mar 2004

Sure Robert, please feel free to modify/improve upon the existing code.

 

I've added the latest FileFindFilter code to the repo, Thanks Drugwash.


MIA

CleanNews.in : Bite sized latest news headlines from India with zero bloat


Drugwash
  • Members
  • 1078 posts
  • Last active: May 24 2016 04:20 PM
  • Joined: 07 Sep 2008

You're both welcome.


(AHK 1.0.48.05 and Win98SE) forever | My scripts are here


robertcollier4
  • Members
  • 141 posts
  • Last active: Jun 28 2019 01:05 AM
  • Joined: 11 Nov 2012
Been studying this code - have learned a lot from it - thanks again to the developers for releasing their code to show me how to put this all together. I was wanting to see how fast I could make it by using no Regex. So I came up with the idea to use index-based arrays so that could create pre-parsed arrays where only the corresponding array index is stored in the ListView which should be much faster than having the ListView contain the entire unparsed link target.
 
I stripped everything out of Node to understand it and so far have the following proof-of-concept speed test in which you can see the speed and tell me what you think of the results scoring algorithm (which uses NO regex at all, only native string operations).

The goal is so that there can be no possibility of mistypes. The problem I had in Executor was that even though it was coded in Delphi - it used a lot of Regex fuzzy matching and would sometimes take a second to show results. So if I were to type "aaaa bbbbb{Enter}" really fast then it would load the result of "aaaa" since the list did not have enough time to update before the {Enter}. With this script - try to type your search terms and hit {Enter} as fast as you can - and the script should always give the correct result.

The activation hotkey for below no-regex proof-of-concept code is Ctrl+` (i.e., Ctrl and the key to the left of the 1).

Launcher-ArrayIndexesNoRegex-ProofOfConcept.ahk
Spoiler


Rajat
  • Members
  • 1904 posts
  • Last active: Jul 17 2015 07:45 AM
  • Joined: 28 Mar 2004

That is a very minimalistic and stripped down version of Node, if we can even call it that. I see it as a completely new product, with probably a better approach to saving the database internally and searching it. Though the internal result ranking in Node is what probably is a significant overhead, but is perfectly justified by its efficiency - though I would really like if it can be made faster keeping its existing features.

Thank you for posting this, have you done a speed comparison to see if objects provide a performance efficiency? This would typically require side by side automated searches with each having the same pool of DB entries to search from,  preferably several thousands.


MIA

CleanNews.in : Bite sized latest news headlines from India with zero bloat


robertcollier4
  • Members
  • 141 posts
  • Last active: Jun 28 2019 01:05 AM
  • Joined: 11 Nov 2012
Hi guys, for those wanting an even more superfast launcher, without any icons, and without any flickering - I found out that the performance is even better by using a ListBox rather than a ListView. A ListBox is 1-dimensional (only one column, only supports a static list of entries) whereas a ListView is multi-dimensional (multiple columns support). A ListView is actually a subclass of the more native ListBox object. The ListBox turns out to be faster for those who care about millisecond-precision performance and no flickering. Instead of using singular LV_Add() entries, in a Listbox you just supply it one singular delimited string that contains all the entries at once.

The main difference why I like Listbox over ListView is because it does not flicker.

Try this to see the flicker-free performance for yourself:
Launcher-Listbox-ProofOfConcept.ahk
Spoiler


Rajat
  • Members
  • 1904 posts
  • Last active: Jul 17 2015 07:45 AM
  • Joined: 28 Mar 2004

Oh I actually started my launcher programming with a fuzzy search function that I wrote for someone else, and used it on a ListBox initially. It was blazingly fast, and I made a whole launcher around it that initially had ListBox, before users asked for ListView and I upgraded it. 320mph, I called it. Anyway, this is a nice blast from the past  :)


MIA

CleanNews.in : Bite sized latest news headlines from India with zero bloat


Drugwash
  • Members
  • 1078 posts
  • Last active: May 24 2016 04:20 PM
  • Joined: 07 Sep 2008

At that time, Win9x was probably still used and AHK was still in its Basic form. As such, a ListView was compulsory, since a ListBox can only accept a 16-bit value for wParam in certain messages (such as LB_SETCOUNT, LB_GETSELITEMS and so on), meaning the maximum number of items in a ListBox cannot exceed 32,767 (actually, that number is somehow lower, according to my observations) under such operating systems.

 

Nowadays, probably nobody cares about Win9x anymore (except for myself and other enthusiasts across the world) so it wouldn't really matter. Just bringing back old memories, is all...

 

Hey bro, you surpassed the t.A.t.U. girls with your app, at the time - their first album was only 200mph... in the wrong lane! tongue.pnggrin.png


(AHK 1.0.48.05 and Win98SE) forever | My scripts are here


robertcollier4
  • Members
  • 141 posts
  • Last active: Jun 28 2019 01:05 AM
  • Joined: 11 Nov 2012
Hi guys - I finished the script I was working on that had the goal of having instant update speed through using no regex and no icons. It is now performing better than anything else I have used.
 
Key features include:
1. Capslock Quasi-modal mode. Hold down Capslock - type your partial appname - release Capslock. Thats it.
2. Custom Keywords can be defined. For example you can define the "g" keyword with a custom URL to use "g how to screw a light bulb" to launch a google search for "how to screw a lightbulb".
 
Upon Rajat's suggestion since it has most stuff of NODE removed, it has been given its own name. NODE is mentioned in the credits of the file for helping with the basic GUI framework.
 
HUD_Capslock_Launcher.ahk. You can download it from its own thread here:
HUD_Capslock_Launcher - launch start menu shortcuts and keywords from OSD
 
Thanks to you guys for helping to make it possible. I'll let this thread continue with its intended discussion about Node 0.40.

Skrell
  • Members
  • 384 posts
  • Last active: Jul 07 2016 05:03 PM
  • Joined: 23 Aug 2011

Do you have a video of this in use maybe?  How does the search algorithm work?  Does it search the NTFS table or window's on file index or simply search through each file on its own? 



robertcollier4
  • Members
  • 141 posts
  • Last active: Jun 28 2019 01:05 AM
  • Joined: 11 Nov 2012

Do you have a video of this in use maybe?  How does the search algorithm work?  Does it search the NTFS table or window's on file index or simply search through each file on its own?

I don't want to hijack this thread. Please continue the discussion in HUD_Capslock_Launcher thread. Why don't you try it out, you just have to download a ZIP and double-click on an AHK. No use in making a video since you can try it so easily without any need for installation - it is fully portable and won't make any changes to your system.

The script is quite readable and the algorithm is super simple and explained in the comments. The algorithm is not meant to guess for you like a spell-checker - it just searches for matching substrings and intelligently gives higher rewards to substrings that occur at the beginning of the link name. Other people try to do spell-checking distance-routine type things which are very slow - really I think that is unnecessary. If I want to open Firefox, I intentionally have named my shortcut Firefox. Thus I type in "Fir{enter}" and be on my way. The script does not try to guess for you - you are supposed to have named the shortcuts yourself.
	; For real-time speed, we have pre-created DBNamesSpacePrefixed at database build time. DBNamesSpacePrefixed is the same as DBNames except it has a space prepended before. This is because we are wanting to give a higher score for if the match occurs at the beginning of the word rather than the middle of the word. That is why we search for the term to match with a space before. (i.e. if I typed "lo" I should get a much higher score for "logviewer" rather than "JDownloader"). The algorithm is contained in "PopulateList" label in the script and is displayed below to show you how simple it is (but try it for yourself and see how effective and fast it is).
	For i, obj in DBNamesSpacePrefixed {
		myscore := 0
		Loop, %NumTerms% {
			ThisTerm := Term%A_Index%
			; If the match occurs at beginning of word (we know this because there is a space before it), then give it 20 points. Otherwise if match occurs in middle of word give it 10 points.
			IfInString, obj, %A_Space%%ThisTerm%
			{
				myscore += 20
			} Else If( (StrLen(ThisTerm) > 1) && InStr(DBNames[i],ThisTerm) ) {
				myscore += 10
			}
		}

		; First-word beginning match should be more incentivized than non-first-word beginning match.
		If(NumTerms) {
			If( SubStr(Term1,1,1) = SubStr(obj,2,1) ) {
				myscore += 1
				If( SubStr(Term1,1,2) = SubStr(obj,2,2) ) {
					myscore += 2
					If( SubStr(Term1,1,3) = SubStr(obj,2,3) ) {
						myscore += 3
					}
				}
			}
		}


Skrell
  • Members
  • 384 posts
  • Last active: Jul 07 2016 05:03 PM
  • Joined: 23 Aug 2011

HUD_Capslock_Launcher is not what i'm asking about, i'm interested in NODE.   It would appear as if you've already hijacked this thread!  :-P



Rajat
  • Members
  • 1904 posts
  • Last active: Jul 17 2015 07:45 AM
  • Joined: 28 Mar 2004

@Robert: The script is looking better and better. 

 

@Skrell: Er, no, there's no video at the moment, though I agree there should be. The algorithm is a bit complex than simple search for the keyword in file's name.. as there's a result ranking involved. And no, as I wanted to support FAT/FAT32 file systems, so I didn't use NTFS indexes... though I'm seriously considering switching to it considering the benefits.

 

@Drugwash: You see any issues switching to NTFS sometime in future?


MIA

CleanNews.in : Bite sized latest news headlines from India with zero bloat