Kross (software)

Kross
Developer(s)KDE
Final release
5.116.0[1] / May 4, 2024; 4 months ago (2024-05-04)[1]
Repositoryinvent.kde.org/frameworks/kross
Written inC++
LicenseLGPL
Websiteapi.kde.org/frameworks/kross/html/index.html

Kross is a scripting framework for KDE Frameworks. Kross was originally designed for use in KOffice but eventually became the official scripting framework in KDE Software Compilation 4 before being dropped in Frameworks 6.[2] The Kross scripting framework is not a scripting language itself; it is an interface for developers to support scripting by specifying functions, which the user will then script using a language that Kross supports. It currently supports Python, Ruby, JavaScript, and the Falcon Programming Language. Support for other languages can be added with modules.

Comparison with other scripting frameworks

[edit]

SWIG: Simplified Wrapper and Interface Generator

[edit]
  • Kross currently has fewer supported scripting languages.
  • Kross is built on top of Qt/KDE. This allows access to Qt/KDE things without needing extra effort to wrap them.[3]
  • Applications supporting Kross do not require as much code as to support SWIG.[3]
  • With SWIG, the set of supported scripting languages is determined at the time of compiling the application: each supported language must either have code in the application to invoke that language's interpreter, and/or have a shared library specific to that application–language pair whereas Kross doesn't need to know until runtime.

AppleScript

[edit]

Compared to AppleScript's Open Scripting Architecture (OSA):

  • OSA can be used with IPC (Apple events), allowing a script to be in a separate process, whereas Kross scripts always run in the same process as the main application. In practical terms, using IPC allows a script to interface between several already-running applications; Kross does not.
(IPC is not technically necessary for one script to access code from many applications at once: a script can link against library forms of those applications, such as the libraries produced by SWIG.)
  • While Kross allows the scripter to write scripts in a language of their choice, AppleScript is one given language, though it can be called from within other (scripting) languages.
  • Kross always requires code added to the application explicitly for Kross, whereas many macOS applications have basic scriptability just because of their choice of GUI toolkit (Cocoa) (see AppleScript in macOS). (Dogtail and other GUI testing/automation tools also have this property.) “Basic scriptability” here means at least being able to click on buttons and menus and access information provided to accessibility software such as Screen readers.

Kross does not currently have any provision for running untrusted scripts, i.e. does not allow restricting what scripts can do. Kross developer Sauer[4] suggests either using a language with good sandbox support (such as by using the experimental Java plugin) or using approaches to increase the trust in scripts, such as using signed scripts.[5]

Applications using Kross

[edit]

References

[edit]
  1. ^ a b "Tags", Kross, 2024-05-04, retrieved 2024-08-27
  2. ^ "Kross", KDE Frameworks, retrieved 2024-08-27
  3. ^ a b "?". Archived from the original on September 24, 2006. Retrieved 2007-05-16.
  4. ^ The Road to KDE 4: New KOffice Technologies
  5. ^ "?". Archived from the original on September 24, 2006.
[edit]