App Details
WARNING: This will overwrite Tesla Menu if already installed.
Ultrahand Overlay is a Tesla Menu replacement built from the ground up off of libtesla that provides powerful C/C++ commands through the usage of its own custom interpretive programming language (similar to Shell/BASH). It is a versatile tool that enables you to create and share custom command-based packages, providing enhanced functionality for managing files and directories on your SD card.
With Ultrahand, you have the flexibility to customize and shape your file management system according to your needs, empowering you with greater control over your system configurations.
Screenshots
Changelog
1.8.2
New Page Swap toggle for swapping the overlays and packages page locations.
Located in Settings > UI Settings > Miscellaneous > Effects > Page Swap.
This feature will draw the packages menu on the left and the overlays menu on the right when enabled.
Fixes to libultrahand for preventing screenshots from occurring during capture event initializations.
This is particularly useful for isolating actual capture button events from initializations within projects like bitmap-printer / PNGShot.
If using bitmap-printer, it is currently recommended to use a version built with pull request #25 or else there will be dragons (unwanted screenshots in the Bitmaps directory generated every time a libultrahand compiled overlays is opened).
If using PNGShot, it is currently recommended to use a version built with pull request #5, however builds from latest source code on the repo should now work as well without producing unwanted screenshots.
Notice:
All projects built with libultrahand will need to be recompiled with latest libultrahand for this fix to apply.
1.8.1
New package header ;show_version= is an optional true/false option for forcing the menu to show the package version instead of the current section title under the package title. (false by default)
Various bug fixes.
Fix to Software Update command and Memory Expansion to download nx-ovlloader/nx_ovlloader+ v1.0.8 instead of v1.0.9 if AMS version is < 1.8.0.
Fix for forwarder footers being updated when they should not be.
Fix for table with null value replacements not correctly aligning Not available / UNAVAILABLE_SELECTION text properly.
Fix for combo labels not being converted to their icon counterparts upon initialization.
1.7.8
Fix for display underscanning in libtesla.
Overlays will need to be rebuilt with this fix for them to also have no issues with display underscan. (see Edizon as an example)
New command expansion for backlight called backlight auto (which takes parameter on / off) for controlling the auto screen brightness feature.
backlight auto on will turn on the auto brightness feature.
backlight auto off will turn off the auto brightness feature.
Example toggle:
[Auto Brightness]
;mode=toggle
on:
backlight auto on
off:
backlight auto off
New placeholder function math to resolve mathematical expressions.
Called {math(MATH_EXPRESSION)} where MATH_EXPRESSION is a mathematical expression like 1+1, (5+4)/9, etc.
Can also be called {math(MATH_EXPRESSION, true)} where true forces the output to always be an integer.
Users can use +, -, /, *, % as well as brackets ( and ) within their mathematical expressions.
New placeholder function random to generate a random integer.
Called {random(START_VALUE,END_VALUE)}.
New placeholder function length to compute the length of a provided string.
Called {length(STRING)}.
Any white spaces on the left and right of the string will be trimmed.
Placeholder replacement order of operations fix.
Users can use nested placeholders called in any sequence now.
Removal of old progress animation UI setting.
Mostly unused, and a bit out dated in terms of design preferences. I think it is better for now to remove this feature.
Bug fix for touch with trackbars.
Issue was that sliding to the left of the slidable area caused the value to become the max value for the slider.
This should no longer be an issue.
Various subtle UI tweaks.
1.7.7
List of changes:
New table scrolling implementation.
;scrollable= is a true/false table parameter for initializing a table with a scrollable property (false by default).
;top_pivot= is a true/false table parameter for making the top of the table have a selectable property (false by default).
;bottom_pivot= is a true/false table parameter for making the bottom of the table have a selectable property (false by default).
A variety of modifications were made to properly handle table scrolling (for touch / click both above and below scrollable tables).
Tables can now use list_file_source for reading raw text files directly into a table and displaying the text line by line.
Called list_file_source
Text is drawn in the section portion and can utilize ;section_text_color= for alternative coloring.
Various UI related tweaks and fixes.
Full Changelog: d016b6f...v1.7.7
Update:
Slight table scrolling bug fix. (was miscounting the last step) - 09/15/2024 3:30 AM PST
Full Changelog: v1.7.7...73b10bd
1.7.6
List of changes:
New symbol placeholder variables.
{A}, {B}, {X}, {Y}, {L}, {R}, {ZL}, {ZR}: Button symbols for A, B, X, Y, L, R, ZL, and ZR.
{DUP}, {DDOWN}, {DLEFT}, {DRIGHT}: Directional pad (D-Pad) buttons symbols.
{LS}, {RS}: Symbols for the left stick (LS) and right stick (RS) click buttons.
{PLUS}, {MINUS}: Symbols for the Plus and Minus buttons.
{UP_ARROW}, {DOWN_ARROW}, {LEFT_ARROW}, {RIGHT_ARROW}: Arrow symbols pointing up, down, left, and right.
{RIGHT_UP_ARROW}, {RIGHT_DOWN_ARROW}, {LEFT_UP_ARROW}, {LEFT_DOWN_ARROW}: Diagonal arrow symbols indicating direction combinations.
{POWER}: Power button symbol.
{HOME}: Home button symbol.
{CAPTURE}: Capture button symbol.
{REFRESH_SYMBOL}: Refresh symbol.
{WARNING_SYMBOL}: Warning symbol.
{INFO_SYMBOL}: Information symbol.
New progress symbol throbber implementation. (for commands in progress that do not utilize the progress percentage)
Toggle-related bug fixes. (bug was introduced in v1.7.5)
This should resolve issues a number of issues with toggles not retaining their state after being clicked.
Storage capacity in Device Info has been corrected. (was previously showing free space instead of the amount of space being consumed)
Slight UI corrections.
Various code optimizations.
Full Changelog: 3801fca...v1.7.6
Update:
String formatted combo symbols replacements for tables. - 09/10/2024 09:08 PM PST
Slight tweak to throbber implementation (slightly more optimized). - 09/10/2024 09:46 PM PST
Arrow symbols fix. (some were mis-mapped) - 09/11/2024 09:00 AM PST
Full Changelog: v1.7.6...d016b6f
1.7.3
(stability update)
List of changes:
Long tap (touch > 0.5s) of an overlay / package on the main menu will now open the overlay / package settings menu upon release.
Fuse data is now reloaded / re-dumped upon boot.
New true / false option disable_reload is now stored in fuse.ini for manual disabling of the fuse data reload function.
More corrections and improvements to the wallpaper swapping feature.
Interpreter relevant bug fixes (especially with handing large boot_package.ini files).
These fixes should make opening OC Toolkit faster as well as fix the Backup and Restore functions when used with wallpapers.
Few additional minor bug fixes.
Important: Fuse data has new key names, so you may need to reboot once or delete sdmc:/config/ultrahand/fuse.ini after updating from v1.7.2.
Full Changelog: 9ff96ba...v1.7.3
Update:
Slight table text alignment correction. - 09/05/2024 6:10 AM PST
Full Changelog: v1.7.3...9f6c2d8
1.7.2
List of changes:
Continued expansion of Device Info to now include local IP, eMMC storage, CPU/GPU/SOC Speedo + IDDQ and more.
Fuse related data is auto-dumped to sdmc:/config/ultrahand/fuse.ini if fuse.ini is missing.
Special thanks to Masagrator.
Slight reorganization of Settings Menu.
More renderer related tweaks and bug fixes. (faster pixel rendering / more FPS)
Package settings menu now includes a toggle for Boot Package and Error Logging.
Error logging will now only occur for packages when Error Logging is set to an On state. (off by default)
Logs will be generated within the package folder in log.txt.
Root package / root boot package logging will only work with command logging.
Calls of logging command will always bypass Error Logging and log errors and commands to the designated log.txt.
New placeholder variables {cpu_speedo}, {cpu_iddq}, {gpu_speedo}, {gpu_iddq}, {soc_speedo} and {soc_iddq}.
New progress indicator bar for visualizing download, unzip, and copy percentages.
New theme color settings progress_color and progress_alpha.
Return of shutdown controllers for manually powering off all connected bluetooth controllers.
This feature still does not work with Mission Control. Just a heads up.
New language variables.
Alternate languages may still need translations done to the updated .json files.
Updates to libraries devkitA64 and libnx.
Numerous code optimizations for smaller compilation size and slightly faster commands.
Various bug fixes.
Full Changelog: d959363...v1.7.2
Update:
Pre-release period is over. Things appear to be stable. - (09/03/2024 12:27 PM PST)
Number of memory related bug fixes.
Corrections to memory ID (got messed up upon initial release).
Couple logging related bug fixes.
Copy buffer has been increased to 4x and properly linked.
Live wallpaper swapping bug fix. - (09/03/2024 3:21 AM PST)
More live wallpaper swapping bug fixes. - (09/03/2024 4:15 AM PST)
Tighter/stricter timing for swapping wallpapers to prevent more random crashes. - (09/03/2024 6:28 AM PST)
1.7.1
Expanded System page to include various device related information.
This table currently includes device firmware, bootloader version, hardware type, memory information, and storage information.
Special thanks to ComplexNarrative.
New command placeholder variables {ram_vendor}, {ram_model}, {ams_version}, and {hos_version}.
Expansion of refresh command to include wallpaper for the ability to reload wallpaper.rgba,
Called refresh wallpaper.
Improved scrolling implementation. (proper time-synced speed interpolation)
Complete recalibration of character width map.
This should result in more proper table alignments when using tables with info sections aligned to the right.
Multiple memory related bug fixes.
More memory leaks have been fixed, which should result in less heap overloads / crashes.
Language replacements are now performed on every ListItem and CategoryHeader upon initialization.
This fixed entries like, for example, Reboot To and Shutdown from not being properly translated.
Language json's may still need some translations for the new words that have been included.
Removal of shutdown controllers for space conservation. (commented out)
Did not want to remove this function, but because it only works with Nintendo controllers (and not Mission Control) it does seem somewhat redundant since the sync button on Nintendo controllers effectively turns off the controller as well.
If it is highly desirable, I may include this command again in future revisions. But for size stability, I could not get it to fit properly this time around.
Numerous code optimizations and bug fixes.
1.7.0
New memory expansion option (located in Settings > System).
This function requires internet the first time it is ran, otherwise you can place nx-ovlloader.zip and nx-ovlloader+.zip in sdmc:/config/ultrahand/expansion/. (see here for the .zips)
nx-ovlloader.zip (base memory) and nx-ovlloader+.zip (expanded memory) are recompilations of WerWolv's nx-ovlloader 1.0.6/1.0.7.
Notice: This feature will utilize an extra 2 MB of system memory for overlays and will require a reboot after being toggled for changes to apply.
New wallpapers implementation. (requires memory expansion)
Wallpapers must be formatted in .rgba and be exactly 448x720 pixels in resolution.
Place .rgba formatted wallpapers into sdmc:/config/ultrahand/wallpapers/, then they will show up in the Wallpaper Manager in the Settings Menu.
Sidenote: For full 60 FPS in Ultrahand with wallpapers, overclock CPU >=1581.0 MHz.
Numerous optimizations to the libTesla renderer.
Multi-thread rendering. (requires expanded memory)
Reduced big-O complexity.
Sidenote: With stock clocks and no wallpaper, users should expect to now get ~60 FPS in menu. 😎
Various improvements to tables, track-bars and the track-bar highlight/select cursor.
Time-synced controller scrolling implementation, time-synced click saturation effect, and a variety of corrections within libTesla.
Mod .pchtxt's now utilize @stop properly when generating IPS mods. (helpful for developers)
New Polish language implementation and slight bug fixes to the languages menu.
Various bug fixes.
Fix for missing pre-generated root package. (was missing in v1.6.9)
Downloads bug fix. (was broken fi missing path sdmc:/config/ultrahand/downloads/ in v1.6.9)
Compilation libraries have been updated (excluding devkitA64 which has been left at r25.1-1).
1.6.9
Dropdown and forwarder commands can now use custom labels/footers by using footer= with a value other than null in the package's config.ini.
Custom name and version labels for overlays and packages can now be set in /config/ultrahand/overlays.ini and /config/ultrahand/packages.ini by using options custom_name= and custom_version=.
Overlays will only be renamed when displayed on the menu. Direct modification of the overlay is still required for any re-naming of the overlay modules themselves.
Packages will now assume names in the following priorities.
i. Priority 0: Custom names and versions written in packages.ini.
ii. Priority 1: Package name stated in the header in the package.ini file for the Ultrahand package.
iii. Priority 2: If none of the above, it will assume the name based upon the Ultrahand package folder.
If left empty, custom name and version parameters will be unused.
New option for table ;header_indent= for drawing a single header indent on left side of the line.
This is meant to be used on one line "header-like" tables.
New table text color options for info_text_color and section_text_color.
text : Ultrahand theme text color used for default text.
header : Ultrahand theme text color used for headers.
on_value : Ultrahand theme color for On values / values.
off_value : Ultrahand theme color for Off values / version labels.
Key combo string representations in packages will now return their symbolic representation.
Software update menu will now pull an indicator for the latest Ultrahand Overlay version from the GitHub API.
Themes classic.ini and ultra.ini will now be auto-downloaded when opening the Theme manager if they do not exist.
Downloads are now stored in a temporary state until completion. After completion, they are then moved into place.
This should help with failed downloads and files being removed/replaced after a failed download to an existing filepath.
The packages menu commands section now utilizes the same core logic as the packages themselves. (code optimization)
Various subtle UI positioning corrections and bug fixes.
Bug fix for cursor jumping/sliding after using hotkeys (with a d-pad down button) in games.
1.6.8
List of changes:
Introduction of ini_file_source function and expansion of ini_file function.
Dropdown selections can now use ini_file_source which will return a list of ini section name.
Introduction of new placeholder index replacements selections{ini_file()} / {ini_file_source(*)} for returning section names. (regular usage of ini_file placeholder calls will still function the same way, as well as ini_file_source)
Named step-trackbars can now use standard json_source, json_file_source, and ini_file_source source functions and placeholder replacements.
Expansion of filter to non-path type entries in dropdown selections.
Called filter .
Expansion of exit command to exit directly to the overlays menu or packages menu.
Called exit overlays / exit packages.
Expansion of refresh command.
refresh theme: reload/refresh the current current loaded theme (/config/ultrahand/theme.ini)
refresh package: reload/refresh the current working package (redraws menu)
Introduction of compare function to compare two text file lists and output a duplicate files list.
Called compare .
New option -copy_filter / -cp_filter for move / mv commands utilizing -src + -dest.
Called move -src -dest -copy_filter .
This will run a copy instead of move for files in the filter list text file.
Introduction of new placeholder function split for splitting strings.
Called {split(,,)}.
For example, if the string is Test - String, the pattern is " - ", and the index is 0, the output would be Test.
Updates to the pre-generated /switch/.packages/package.ini root package file to include Reboot To (for booting directly into /bootloader/hekate_ipl.ini boot entries.
Notice: Users may need to delete /switch/.packages/package.ini for it to generate a new one.
Various optimizations to the command interpreter, file manipulation logging, bulk execution implementations, and to move / mv operations.
Additional tweaks to the dangerous pattern detection function.
Update to Mod Alchemist now at v0.4.7.
Bug fixes for toggling content mods with duplicate files (utilizing -copy_filter and compare).
1.6.7
List of changes:
New optional command parameters for copy/cp, move/mv, and delete/del commands for transfer logging and bulk executions.
a. File manipulation logging: -log_src / -log_dest (outputs a text list for source file and destination file locations)
copy -log_src -log_dest
move -log_src -log_dest
delete -log_src
b. Bulk execution: -src / -dest (utilizes text lists to perform transfer operations on all entries)
copy -src -dest
move -src -dest
delete -src
Improvements and fixes to file_source toggle functions.
Improved handling of null placeholder replacements.
Corrections to isDangerousCombination (the dangerous pattern combination detection function).
The following paths are now ultra-protected (unable to delete or move files from):
sdmc:/Nintendo/Contents/
sdmc:/Nintendo/save/
sdmc:/emuMMC/RAW1/Nintendo/Contents/
sdmc:/emuMMC/RAW1/Nintendo/save/
Slight improvements to dangerous pattern detection.
Updates to Mod Alchemist (now v0.4.6, requires Ultrahand v1.6.7+).
Now utilizes the new command options for managing "Contents" mods.
1.6.6
Stability update.
List of changes:
Major memory leak has been fixed.
This issue was present for a while now, but until Mod Alchemist was never as concerning. Since Mod Alchemist can draw extremely long menus, memory overflow problems became more apparent.
Has been resolved and should result in better memory handling across all Ultrahand packages/commands.
Slight tweaks to the displayed version label formatting for overlays and packages.
Failed interpreter spawning bug fix.
Commands would occasionally get locked in an "in-progress" mode when there were memory related problems when trying to spawn the interpreter thread. When memory related problems occur, the command will return a failed command state instead (red "X").
1.6.5
Introduction of root-layer boot package implementation for executing commands upon startup.
Command [boot] located within /switch/.packages/boot_package.ini (if it exists) will be now be auto-ran once on startup.
This feature can be useful for Switch Android users if they wanted to remove the auto-generated Android folders (for instance).
Introduction of new command pchtxt2cheat (called pchtxt2cheat /path/to/file.pchtxt).
This function will convert pchtxt files and load them into the correct directory for the game's cheat.
Important: The game's title ID must be present somewhere within the pchtxt for this function to work.
Various bug fixes to pchtxt2ips's IPS generation.
Expansion of shutdown command to turn off all bluetooth controllers.
This function is called shutdown controllers.
Notice: I have heard that this command may fail (return a red X) with MissionControl due to conflicting services, so just a heads up.
Source function file_source can now be chained (called one after another) for combining multiple sources into a single list.
Source function definitions can now also utilize an ini_file placeholder replacement (with the ini_file specified before the definition).
Various bug fixes to file_source toggles.
Subsequent clicks to file_source toggles are now handled properly with alternating path replacements according to the last line move {file_source} /destination/path/ (must be present for file_source toggles).
Various bug fixes to ini_file placeholder replacements.
Failed replacements now return null again instead of Not available (the UNAVAILABLE_SELECTION language variable).
When a value is null on a table info section, it is now auto replaced with UNAVAILABLE_SELECTION.
Language selections in the Settings Menu now state their full names in their translated language with their abbreviations listed as footers.
This included updates to all /config/ultrahand/lang/ files.
Additional key combo LS+RS has been added to the combos list.
This includes a correction to the LS button icon.
Commands mirror_copy and mirror_delete can now accept wildcard patterns.
Introduction of new Ultrahand Package Mod Alchemist designed for managing, converting, and installing game mods. (formerly the Mod Master example package)
Notice: This package requires Ultrahand Overlay v1.6.5+.
1.6.4
Optimizations to the ;on_every_tick= implementation for track-bars.
Faster on every tick command execution.
New table option additions ;section_text_color= and ;info_text_color=.
Both section and info text color are optional parameters that can be set to:
default (normally default when unspecified)
warning (new built-in theme color warning_text_color)
or any specified RGB888 hex color string
Forwarder package versions and title colors are now inherited from the layer 0 package (package.ini) if left unspecified within the forwarder package.
Users no longer need to specify forwarder package versions and colors on every forwarder package ini.
Bottom buttons and settings menu touch functions now utilize theme colors click_color and click_alpha for drawing highlights on the touch regions.
Various touch interaction bug fixes. (touching "OK" on top of a track-bar, bottom regions for touch adjusted to language text size, etc.)
Slight tweaks to pixel blender for drawn strings during hiding.