Initial commit.

This commit is contained in:
Umiko 2025-05-03 18:04:50 +07:00
commit 412de0754c
5 changed files with 437 additions and 0 deletions

12
MIT-LICENSE.txt Normal file
View File

@ -0,0 +1,12 @@
The MIT License
Version N/A
SPDX short identifier: MIT
Open Source Initiative Approved License
Copyright 2025 Radiant Code
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

101
README.md Normal file
View File

@ -0,0 +1,101 @@
# RunAbout
## Introduction
**RunAbout** is a streamlined AutoHotkey script that transforms how users interact with their desktop. By providing a quick-access interface for running commands and performing web searches, it removes the need for manual navigation through browsers or file explorers.
Enhanced with customizable aliases, history management, and administrator support, RunAbout offers a fast, efficient, and intuitive alternative to Windows' native Run feature.
## Overview
**RunAbout** is an **AutoHotkey**-based script that allows you to:
* **Run applications or files**,
* **Search on Google**,
* **Manage custom aliases** for your favorite commands.
All through a simple, lightweight interface designed for quick access.
## Features
### 1. Run
When you select the **Run** option:
* A window will pop up similar to the classic Windows Run (Win+R) window but with enhanced capabilities:
* Executes commands from saved aliases.
* Saves your command history into a file (`commandHistory.ini`), editable if needed.
* Avoids duplicates: each command is stored only once.
* Allows an unlimited number of saved commands, unlike the built-in Windows Run which is limited.
* Provides an easy GUI, including a button to **Run as Administrator** if required.
### 2. Web Search
Use **Web Search** when you want to quickly search Google without opening your browser manually.
* **Notes about Web Search**:
* It will open your default browser.
* It uses the last active profile in your browser.
### 3. Alias Manager
The **Alias Manager** lets you:
* Add new aliases: shortcuts to open files, folders, or links.
* Remove existing aliases easily.
**Example usage**:
Instead of typing a long path every time, create an alias linked to the path. Later, you just type the alias in the run window, and it will open the correct file, folder, or link.
**Notes for Aliases**:
* Make sure the path is **absolute**, not relative.
Example:
Instead of typing `documents`, use `C:\Users\YourUsername\Documents`.
* If you're adding a website link, it **must** start with `https://` or `http://`.
Typing only `www.youtube.com` will not work, but `https://www.youtube.com` will.
### 4. Commands in This Application
* **Win+R** → Open RunAbout's GUI.
* **Win+Ctrl+Shift+R** → Exit the application and restore your systems default Run behavior.
## Requirements
* **AutoHotkey** (version 1.1 or newer)
Download it here: [https://www.autohotkey.com/](https://www.autohotkey.com/)
## Installation
1. Install AutoHotkey.
2. Download `RunAbout.ahk`.
3. Double-click the `.ahk` file to launch, or compile it if you want an executable version.
## File Structure
* `commandHistory.ini`: Stores your recent command history.
* `alias.ini`: Stores all your custom aliases.
Both files are auto-created if missing.
## Frequently Asked Questions
**Q: Will this application consume a lot of RAM?**
A: No. RunAbout is designed to be lightweight and will not significantly impact system memory usage.
**Q: If I dont use this app, will it affect my Windows Run history?**
A: No. RunAbout operates independently. Your Windows Run and its history are untouched. This app manages its own history separately.
## Conclusion
Thank you for reading and trying out this simple application!
If you have any questions, suggestions, or complaints, feel free to contact me.
## License
This project is licensed under the [MIT License](MIT-LICENSE.txt).
---
> Made with and by TechLabs.

8
changelog.txt Normal file
View File

@ -0,0 +1,8 @@
Added web searching.
Added command history in run.
Added brows button.
Added cancel button for both run and web search.
Fixed command history so newest command will be place on the top instead of bottom.
Added Alias manager so you can type your alias in run edit box.
Fixed removing alias.
Added check box in the alias list.

BIN
runabout$.exe Normal file

Binary file not shown.

316
runabout.ahk Normal file
View File

@ -0,0 +1,316 @@
historyFile := "commandHistory.ini"
aliasFile := "alias.ini"
#r::
Gui, Add, Text,, Select an option:
Gui, Add, Button, gRunApp, &Run
Gui, Add, Button, gWebSearch, &Web
Gui, Add, Button, gAliasManager, Alias &Manager
Gui, Add, Button, gExit, &Exit
Gui, Show,, Select an Option
return
RunApp:
Gui, Destroy
Gui, Add, Text,, &Enter the command:
history := LoadHistory()
history := RTrim(history, "|")
Gui, Add, ComboBox, vRunCommand, %history%
Gui, Add, Button, gBrowseFile, &Browse
Gui, Add, Button, gExecuteCommand, &Run
Gui, Add, Button, gExecuteAdminCommand, Run &as Administrator
Gui, Add, Button, gCancelRun, &Cancel
Gui, Show,, Run Command
return
WebSearch:
Gui, Destroy
Gui, Add, Text,, &Enter a Google search query:
Gui, Add, Edit, vSearchQuery
Gui, Add, Button, gExecuteSearch, &OK
Gui, Add, Button, gCancelWeb, &Cancel
Gui, Show,, Web Search
return
AliasManager:
Gui, Destroy
Gui, Add, Text,, Existing Aliases:
aliasList := LoadAlias()
; Create a checkbox list for aliases
aliasArray := StrSplit(aliasList, "|")
Loop, % aliasArray.MaxIndex()
{
Gui, Add, Checkbox, vCheckBox%A_Index%, % aliasArray[A_Index]
}
Gui, Add, Button, gAddAlias, &Add New Alias
Gui, Add, Button, gRemoveAlias, &Remove Selected Alias
Gui, Add, Button, gCancelAliasManager, &Cancel
Gui, Show,, Alias Manager
return
gAddAlias:
Goto AddAlias
AddAlias:
Gui, Destroy
Gui, Add, Text,, Enter &alias name:
Gui, Add, Edit, vAliasName
Gui, Add, Text,, &Enter command for the alias:
Gui, Add, Edit, vAliasCommand
Gui, Add, Button, gBrowseForAlias, Browse &File
Gui, Add, Button, gBrowseForFolder, Browse Fo&lder, Alt+O
Gui, Add, Button, gSaveAlias, &Save
Gui, Add, Button, gCancelAlias, &Cancel
Gui, Show,, Add Alias
return
BrowseForAlias:
FileSelectFile, SelectedFileOrFolder, , , Select File, All Files (*.*)
if (SelectedFileOrFolder != "")
{
GuiControl,, AliasCommand, %SelectedFileOrFolder% ; Set hasil browse ke kotak edit AliasCommand
}
return
BrowseForFolder: ; Fungsi untuk Browse folder
FileSelectFolder, SelectedFolder, , , Select Folder
if (SelectedFolder != "")
{
GuiControl,, AliasCommand, %SelectedFolder% ; Set hasil browse folder ke kotak edit AliasCommand
}
return
SaveAlias:
Gui, Submit
if (AliasName = "" or AliasCommand = "")
{
MsgBox, Alias name or command cannot be empty!
return
}
; Load current aliases, append new one, and save
currentAliases := LoadAlias()
if (currentAliases != "")
newAliases := currentAliases . "|"
else
newAliases := ""
newAliases .= AliasName "=" AliasCommand
IniWrite, %newAliases%, %aliasFile%, Aliases
MsgBox, Alias added successfully!
Goto AliasManager
return
RemoveAlias:
selectedAliases := ""
aliasArray := StrSplit(LoadAlias(), "|")
Loop, % aliasArray.MaxIndex()
{
GuiControlGet, isChecked, , CheckBox%A_Index% ; Get the checkbox status
if (isChecked) ; If the checkbox is checked
{
aliasName := aliasArray[A_Index]
selectedAliases .= aliasName . "|"
}
}
if (selectedAliases = "")
{
MsgBox, Please select an alias to remove!
return
}
MsgBox, 4, Confirm Delete, Are you sure you want to delete the following aliases:n%selectedAliases%
IfMsgBox Yes
{
; Load current aliases and filter out the selected ones
aliasArray := StrSplit(LoadAlias(), "|")
remainingAliases := ""
Loop, % aliasArray.MaxIndex()
{
aliasEntry := aliasArray[A_Index]
aliasName := StrSplit(aliasEntry, "=").1 ; Extract the alias name
if !InStr(selectedAliases, aliasName) ; If alias is not selected for deletion
{
if (remainingAliases != "")
remainingAliases .= "|"
remainingAliases .= aliasEntry
}
}
IniWrite, %remainingAliases%, %aliasFile%, Aliases
MsgBox, Selected aliases have been removed.
}
Goto AliasManager
return
CancelAlias:
Gui, Destroy
Goto AliasManager
return
CancelAliasManager:
Gui, Destroy
return
ExecuteCommand:
Gui, Submit
if (RunCommand = "")
{
MsgBox, Commands cannot be empty!
return
}
RunCommand := LoadAliasCommand(RunCommand) ; Check if command is an alias
If (RunCommand = "documents") {
Run, explorer.exe shell:Documents
} Else If (RunCommand = "downloads") {
Run, explorer.exe shell:Downloads
} Else If (RunCommand = "desktop") {
Run, explorer.exe shell:Desktop
} Else If FileExist(RunCommand)
{
if InStr(RunCommand, ".exe")
{
Run, %RunCommand%
}
else
{
Run, explorer.exe "%RunCommand%"
}
}
else
{
Run, %RunCommand%
}
SaveHistory(RunCommand)
Gui, Destroy
return
ExecuteAdminCommand:
Gui, Submit
if (RunCommand = "")
{
MsgBox, Commands cannot be empty!
return
}
if FileExist(RunCommand)
{
if InStr(RunCommand, ".exe")
{
Run, *RunAs %RunCommand%
}
else
{
Run, explorer.exe "%RunCommand%"
}
}
else
{
Run, *RunAs %RunCommand%
}
SaveHistory(RunCommand)
Gui, Destroy
return
CancelRun:
Gui, Destroy
return
CancelWeb:
Gui, Destroy
return
BrowseFile:
FileSelectFile, SelectedFile, , , Select File, All Files (*.*)
if SelectedFile !=
{
if InStr(SelectedFile, ".exe")
{
Run, %SelectedFile%
}
else
{
Run, explorer.exe "%SelectedFile%"
}
SaveHistory(SelectedFile)
}
return
ExecuteSearch:
Gui, Submit
Run, https://www.google.com/search?q=%SearchQuery%
Gui, Destroy
return
SaveHistory(command) {
global historyFile
if command != ""
{
IniRead, previousHistory, %historyFile%, History, Commands
if (previousHistory != "ERROR") {
previousHistory := StrReplace(previousHistory, command . "|", "")
previousHistory := StrReplace(previousHistory, "|" . command, "")
previousHistory := StrReplace(previousHistory, command, "")
newHistory := command
if (previousHistory != "")
newHistory := newHistory . "|" . previousHistory
IniWrite, %newHistory%, %historyFile%, History, Commands
}
else
{
IniWrite, %command%, %historyFile%, History, Commands
}
}
}
LoadHistory() {
global historyFile
if FileExist(historyFile)
{
IniRead, history, %historyFile%, History, Commands
if (history = "ERROR" or history = "")
return ""
return history
}
else
{
return ""
}
}
LoadAlias() {
global aliasFile
if FileExist(aliasFile)
{
IniRead, aliasList, %aliasFile%, Aliases
if (aliasList = "ERROR" or aliasList = "")
return ""
return aliasList
}
else
{
return ""
}
}
LoadAliasCommand(alias) {
global aliasFile
IniRead, command, %aliasFile%, Aliases, %alias%
if command != "ERROR"
return command
return alias
}
Exit:
Gui, Destroy
return
#^+r::ExitApp