A very simple text authoring app for Chrome, designed around the Ace text editor. Ideal for use in educational environments where a distraction-free full screen text editor is required, and particularly for controlled assessments or exams.

Ironically named for it’s minimalistic approach because simple solutions are frequently the best. It’s free, so you can grab the code or install the app from the Google Web Store.

On the 16th January, 2020 Google announced that support for Chrome Apps will be removed by June 2022. Whilst this is quite a way in the future, we have already begun the process of implementing Shiny Shiny as a progressive web-app. We have also contacted Google to seek clarification about how support for secure testing environments and kiosk modes will be available going forward. Updates will be posted here when we get them!


You can read the instructions online, or from within the app by pressing ctrl-?. As you would expect, files can be opened, saved and printed and a basic markdown syntax is used for formatting. To aid exam typists in all subjects, international and special characters are supported by their Unicode codes. Full details and the codes themselves can be found in the characters page online, and can also be viewed in the app by pressing ctrl-shift-?.


Autosave is available if you have already saved your file at least once during the editing session. The period between saves can be adjusted in the options dialog (press esc in the editor). You can set this to between 1 and 60 minutes.

A recovery save can also be configured if you are using the app in normal or a managed user session mode (unfortunately this is not possible in kiosk apps). Once the app is closed, a download of the current file is initiated to your default downloads directory.

Both of these options are off by default, to match expected controlled assessment conditions, but they can be enabled by policy if you are using managed users or devices. Please see these instructions for more details, and there is an example configuration file available here. Full details of the options that can be configured by policy are below.

Word Counts

A count of words, characters and lines are available in the options dialog (see screenshot below). This is re-calculated when the esc button is pressed. Currently, these word counts will include the text in the page header, so if you require an accurate count of just your own work - add the header just before printing.

If you wish to embed an accurate word-count in your document directly (so that it will be updated when the document is printed), you can use the following text in your document @@#WORD_COUNT#@@, but it must be on its own (exclusive) line. Like page headers (see the next section), you can easily insert these from the ‘Insert’ button on the options dialog, so you don’t need to remember the exact syntax!

Page Headers, Margins and Printing

By default, printing will render with double line height and a 12pt font to comply with UK Exam Board marking requirements (these can be adjusted in the app, or by Chrome App policy for managed devices or users). To override this, press ctrl-shift-p rather than ctrl-p. A title can be added to the start of the document by making it the first line and enclosing it with ampersands, e.g. @This is a Title@.

To add a header (such as exam paper and candidate details) to every printed page, a simple template is used. To access this template, position the cursor at the start of the document and press ctrl-t to insert the header template. Then simply fill in the template with your own details (lines can be added or removed provided the existing formatting is copied). The header will repeat on every page when you print using ctrl-p.

You can use the inbuilt Chrome OS margins to control whitespace around the printed output. If you would like a left or right gutter margin (with the header expanding across the page), you can also set the margins within the options dialog.

Screenshot 1

Using the options dialog box (accessible by pressing the esc key in the editor), you can customise the printed;

Like autosave, these print options can be set by policy if you are deploying the app to managed Chrome OS devices or users. You can find an example configuration file here, or view the configuration section below.

Screenshot 2

Display Options

To help with visual impairments, you can choose between dark text on a light background, bright text on a dark background or bright on dark blue.

Line spacing and text size can also be increased as required.

Screenshot 1

Configure Chromebooks for Exams

You can use this app as a perfect tool for controlled assessments or exams. If you have managed Chromebooks in your organisation, then you can configure some of these devices to boot straight into Shiny! Shiny, using single app kiosk mode. Using Chromebooks for student assessments or exams is easy, fast and secure.

Using the Google Admin Console, administrators can set up a dedicated OU with the appropriate kiosk app settings, then simply move the number of exam devices required into this OU. When they next boot up, they will apply the new policy and launch the app. When the exams are complete, the devices can be moved back to their original OUs and will operate as normal Chromebooks again. Using Cloud Print a printer can be assigned to these devices. Security can further be enhanced by disabling USB devices if required.

Centralised Configuration

Settings available via the options dialog can also be set by policy. There is an example configuration file and schema available in the source code repository.

All the settings that can currently be configured are also listed below:

SAVE_RECOVERYBooleanfalseAutomatically save out recovery document on normal app close
SAVE_AUTOSAVEInteger0Time between autosaves once document has first been saved, 0 = No Autosave
PRINT_FONT_SIZEInteger12Sets the default print font size, initially set to 12pt to comply with UK Exam Requirements
PRINT_LINE_BREAKSBooleanfalseWhether line breaks are handled simply, by converting each line into a paragraph
PRINT_LINE_HEIGHTInteger2Sets the default print line height, initially set to double line spacing to comply with UK Exam Requirements
PRINT_HEADER_LINE_HEIGHTNumber1.2Line height for optional candidate page header
PRINT_GUTTER_TOPInteger0Specified in mm, and only applied to the top of the content, e.g. once per document
PRINT_GUTTER_RIGHTInteger0Specified as a % of the page width, this is applied to the content on every page
PRINT_GUTTER_BOTTOMInteger0Specified in mm, and only applied to the bottom of the content, e.g. once per document
PRINT_GUTTER_LEFTInteger0Specified as a % of the page width, this is applied to the content on every page
CUSTOM_TEMPLATESArraynullAn array of templates, these can be titled (so that they appear in a custom menu, and/or added by default to every new document
Template Format

Custom template objects can have the following properties.

titleStringIf supplied, the template will be visible under a templates button on the options dialog (e.g. users can insert the template themselves).
templateStringThe actual text to be inserted. This can be plain text or Markdown. As settings are described in the JSON format, new lines have to be supplied as \n.
topBooleanIf this is explicitly set to false, the template will be inserted at the current cursor position. A true or missing value will mean the template will be inserted at the top of the document.
defaultBooleanIf this is set to true, the template will be added at the top of the document when the application is launched.


The code is fully open-source but does contain code (many thanks!) from the projects below (any alterations or modifications are marked in the code). Everything else is copyright JD, 2014-2021. This program is free software: you can redistribute it and modify it under the terms of the GNU General Public License (Version 3) as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Please see the full GNU General Public License for more details.

libs/jquery-3.6.0/*WebsiteCopyright 2005, 2016 jQuery Foundation, Inc.MIT License
libs/showdown-1.9.1/*WebsiteCopyright 2007, John FraserBSD 3-Clause License
libs/popper-2.11.0/*WebsiteCopyright 2019, Federico ZivoloMIT License
libs/bootstrap-5.1.3/*Website2011-2019 the Bootstrap Authors and Twitter, Inc.MIT License
libs/ace-1.4.13/*WebsiteCopyright 2010, B.V.Revised BSD License
documentation/EXAMPLE.mdWebsiteCopyright 2014 John GabrieleGNU GPL v3

Recent Versions

One of the important uses of this app is for controlled assessments or exams. This means that functionality changes could have an impact on students taking those exams. As such, any new changes to the app are published in a beta version before they are made available in the production version. Any update below tagged as a ‘BETA Release’ is currently only available on the beta version. Administrators and technical staff should test these releases before any changes are pushed into production. Support subscribers are pro-actively informed about changes, and can participate in the review and suggestion of future changes.

The most recent versions of this tool are below, showing significant functionality changes and improvements.

  • 0.8.2BETALatest
    • Configuration Improvements

    • Custom Templates

      • Custom Templates can now be supplied via App Configuration

      • International and Symbol Characters can be inserted from Help Page

    • Functionality Improvements

    • Text Alignment Improvements

      • Insert Alignment for Selected Text

      • Supports Multiple Aligment Blocks

  • 0.7.9
    • Functionality Improvements

    • Table Insert

      • Added Table Insert Function

  • 0.7.8
    • Functionality Improvements

    • Text Alignments

      • Added left, right, center and fully justified text aligment

      • Added two new colour schemes

      • Added shortcut keys to improve full-screen experience

      • Minor visual tweaks

  • 0.7.7
    • Functionality Improvements

    • Open Insert/Overwrite

      • Opening a file will trigger an insert or overwrite question (previously files were just inserted)

      • Added Print option to always parse line breaks as new paragraphs (off by default)

      • Left and Right gutters now specified as percentage of page width

Need Help?

If you are a subscriber, then please email us directly or use the Get Help command under the About menu in any of our web apps to get help with this extension. Otherwise, please feel free to raise an issue on the code repository for this tool (you will need to sign up for a free Github account if you don't already have one). Only subscribers have full access to technical support, but we'll do our best to answer every query if we are able.

© 2015-2021 Current site version is 0.1.13l