Rhino WIP Feature: Grasshopper 2 Script Components

Re: :backhand_index_pointing_up:

Returning to the topic of menu bar verbosity. Maybe you can remove these “toggle walls”:


The left icons already make apparent that they are toggles. And the Toggle in front of every item make these menus quite hard to read (IMO) and unnecessarily wide.

Hi @eirannejad (and @DavidRutten, I think). I just updated the WIP and noticed that the G2 scripting components have these new access indicator dots. I’m sure that’s probably helpful to some users, but I find them quite verbose and distracting (as per the general design observations made here). Is there an option to turn these off? If not, it would great if you could add one. Also, the G2 scripting components are wider than their G1 counterparts (even without the access indicators). Here’s a 1:1 comparison of a current project component:

But that added width is probably a general G2 component design choice. Anywho, something to consider.

I agree with that. It is visually distracting, Please consider it as an optional feature.

It’s looking fantastic! I will stop pestering you about every little design detail now. Also, zen mode is brilliant:

Thanks so much Ehsan, looking forward to many more years of scripting stuff in Rhino :partying_face:

Edit: Sorry this was actually in Rhino 9 Grasshopper 1. But guessing it’s the same in G2.

You are most welcome. Thanks for being patient :smiley: I pretty much rewrote all of the editor so now I can actually fix the bugs that were incredibly complicated to fix before. This rewrite affects all the script editors.

I wanted to name it Anders Mode, but you know…

I am sure there is a new collection of bugs now and I will be cleaning and polishing those in the coming weeks

No worries, I highly appreciate the tenacity you guys have for full rewrites. And for dealing with the inevitable annoying feedback from oldhat sticklers like myself when things are different/don’t work :face_with_peeking_eye:

Hahaha, sorry. It is really nice though! As are the new icons.

I had some issues with the general settings not sticking, but can’t seem to reproduce that now. And certain toggles don’t appear to toggle too well (e.g. the minimap). I’ll report back when I see a pattern.

Okay, I lied, just one more for old times sake. And then I swear I’ll stop! Going from:

To:

Where I’ve made these minor edits:

With the left/vertical border being the most notable, especially when zoomed in:

Where I’ve changed the two pixels on the right of the vertical border (i.e. the grabble ones with the hover over state) from Rhino.UI.ThemeSettings.Frame.Edge to the same as the center/horisontal one:

I can certainly also see how one might like having the top left icon (i.e. like the old C# component). It just kinda clashes with my personal setup (i.e. no main window title bar + Grasshopper 1 + GhPython do not have icons):

But again, Grasshopper 2 has the icon and it really is a very minor annoyance. So no biggie.

Edit: Also, these tabs got substantially taller than they were e.g. back here:

I see how this was pretty confusing. In the latest update all borders use Rhino.UI.ThemeSettings.Frame.Edge:

Meaning we get borders with 3, 2, and 1 pixels widths when collapsing the left panel:

IMO this looks weird/unintentional, especially when using a darker color like here. Which could be fixed by using Rhino.UI.ThemeSettings.Content.Background for the two 2 pixel wide interior borders (i.e. similar to the horisontal interior border in the previous release):

(:see_no_evil_monkey:)

Hi @eirannejad, to minimise friction I took the plunge and started using Visual Studio Code instead of my old trusty Sublime Text (i.e. outside of my Rhino coding). And I actually really like it, once I turned off all the AI/Microslop. Anywho, I’m not sure how much can be applied 1:1 to the new script editor. But here are a couple of the settings that really helped make things feel more GhPython-like:

  1. "editor.trimAutoWhitespace": false (stop the editor automagically deleting intentional white space).
  2. "python.analysis.extraCommitChars": true (allows one to autocomplete with brackets, fixing this).
  3. "python.analysis.completeFunctionParens": true (adds brackets when autocompleting with tab/enter).

It would be great if you can implement these in the new script editor.

Edit: Upon further testing, 2. and 3. appear to conflict when both are true. I’d use just 2.

In the latest Rhino 9 WIP build, only integer font sizes appear to work in the editor. Where as before, we could use decimals and the mouse wheel zoom had more step sizes. I’ve been fiddling a bit more with VSCode and here the font size (in pixels) appear to work quite well/granular with decimal values for both editor.fontSize and editor.lineHeight:

It would be great to have the same level of control in the new script editor :eyes:

Hi @eirannejad, just had a quick go with the latest build. Noticed a couple of things:

  1. Using 2 spaces as the default tab size is weird (i.e. the other editors and PEP 8 use 4).
  2. Can we please hide the top left icon when in Zen mode (see image below)?
  3. The options windows always opens slightly out of range at the top (see video).
  4. The keys menu point has a drawing issue when first opened (see video).


Edit: Two more points:

  1. All borders use same color key (something like this would be nice).
  2. A drawing glitch sometimes occurs when editing appearance.

Edit II: One more

  1. The “toggle walls” are still verbose. And arguably inconsistent with the file menu:

Update 260612: Wasn’t allowed to make a new reply (only four in a row), but:

Getting a “Process Error” when instantiating a scripting component in the latest WIP:

SystemInfo

Rhino 9 SR0 2026-6-9 (Rhino WIP, 9.0.26160.12305, Git hash:master @ 193b2bed280be6369fe07ebda036f618870d329e)
License type: Commercial, build 2026-06-09
License details: Cloud Zoo
Expires on: 2026-07-24

Windows 11 (10.0.26200 SR0.0) or greater (Physical RAM: 32GB)
.NET 10.0.8

Computer platform: LAPTOP - Plugged in [100% battery remaining]

Hybrid graphics configuration using OpenGL
Primary display: Intel(R) Iris(R) Xe Graphics (Intel) Memory: 2GB, Driver date: 1-15-2026 (M-D-Y).
> Integrated graphics device with 4 adapter port(s)
- Windows Main Display is laptop’s integrated screen or built-in port
Primary OpenGL: NVIDIA RTX 2000 Ada Generation Laptop GPU (NVidia) Memory: 8GB, Driver date: 3-4-2026 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 595.79
> Integrated accelerated graphics device (shares primary device ports)
- Laptop’s primary display device

OpenGL Settings
Safe mode: Off
Use accelerated hardware modes: On
GPU Tessellation is: On
Redraw scene when viewports are exposed: On
Graphics level being used: OpenGL 4.6 (primary GPU’s maximum)

Anti-alias mode: 8x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 3-4-2026
Driver Version: 32.0.15.9579
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 8188 MB

OpenBLAS: OpenBLAS 0.3.30 DYNAMIC_ARCH NO_AFFINITY Haswell MAX_THREADS=64.

Rhino plugins that do not ship with Rhino

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 9 WIP\Plug-ins\Commands.rhp “Commands” 9.0.26160.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\WebBrowser.rhp “WebBrowser”
C:\Program Files\Rhino 9 WIP\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 9 WIP\Plug-ins\RhinoScript.rhp “RhinoScript”
C:\Program Files\Rhino 9 WIP\Plug-ins\IdleProcessor.rhp “IdleProcessor”
C:\Program Files\Rhino 9 WIP\Plug-ins\UpdatesAndStatistics\UpdatesAndStatistics.rhp “UpdatesAndStatistics” 9.0.26160.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 9.0.26160.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 9.0.26160.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 9 WIP\Plug-ins\MeshCommands.rhp “MeshCommands” 9.0.26160.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\IronPython\RhinoDLR_Python.rhp “IronPython” 9.0.26160.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\Grasshopper2\net48\Grasshopper2Plugin.rhp “Grasshopper2” 9.0.26160.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\RhinoCycles.rhp “RhinoCycles” 9.0.26160.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\Grasshopper\GrasshopperPlugin.rhp “Grasshopper” 9.0.26160.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 9 WIP\Plug-ins\SectionTools.rhp “SectionTools”

Update 260708: I’m seeing several things that don’t work now, but just design-wise: Using tabs instead of spaces as default indentation feels like breaking/changing things just for the hell of it (i.e. like using 2 spaces as the default tab size). If you want to add options, that’s truly great and user friendly. But keeping the defaults to what they’ve been for 15 years-ish would be much appreciated!