What is Vcode?
Vcode is a fast, free and open source code editor and file manager for Android. It is a modified version of Squircle CE by Blacksquircle and is published under the Apache 2.0 license.
- Requires Android 7.0 (API 24) or newer.
- App id:
com.vcode.studio, so it installs next to the original Squircle CE. - Source code and releases: github.com/Christianzz4603/Vcode.
Installing and updating
- Download
Vcode-foss.apkfrom the download link or the releases page. - Allow the install when Android asks you to let your browser or file manager install unknown apps.
- Open Vcode and grant access to your files when it asks.
The editor
Tabs
Each open file has a tab with an icon for its language. A blue dot in place of the close button means the file has unsaved changes. Tap the selected tab to open a menu with close, close others and close all. Tabs can be reordered by dragging.
Languages
Vcode highlights 49 languages, including Kotlin, Java, Python, JavaScript, TypeScript, C, C++, C#, Go, Rust, Swift, PHP, Ruby, SQL, HTML, CSS, SCSS, Markdown and more. See the full list with file extensions. Plugins can map extra file extensions to these languages.
Keyword suggestions
While you type, a small box suggests keywords for the language of the file plus words that already appear in the file. For example, type imp and tap import. Plugins can add their own words per language.
Saving
Turn on Auto save in Settings > Editor to save files automatically. Auto save delay chooses when: when you switch tabs or leave the app, or 1, 3 or 10 seconds after you stop typing.
Cursor and text
- Cursor style: thin, normal or thick.
- Smooth cursor animation: animates the cursor when it moves (off by default).
- Font ligatures: joins characters like
=>and!=when the font supports it (on by default).
Themes
Vcode ships 15 themes: Vcode Dark, Dark+, Light+, One Dark, GitHub Dark, Dracula, Darcula, Eclipse, Monokai, Obsidian, IntelliJ Light, Ladies Night, Tomorrow Night, Solarized Light, Visual Studio. Pick one in Settings > Application > Color scheme. A theme colors the whole app, not only the code. Vcode Dark is the default. Plugins can add more themes. See all of them on the themes page.
Settings reference
| Section | What is inside |
|---|---|
| Application | Color scheme, fullscreen mode, confirm exit. |
| Editor | Cursor style, smooth cursor animation, font ligatures, auto save and auto save delay, read-only mode, soft keyboard and other editing and display options. |
| Code style | Font and text options such as font size, font type and tab width. |
| Files | Options for the file manager. |
| Terminal | Options for the built-in terminal. |
| Keybindings | Keyboard shortcuts. |
| Cloud | Remote servers for browsing and editing files over SFTP and FTP(S). |
| Git | Your Git user name and email, and credentials. |
| Plugins | Install, turn on or off, and remove plugins. |
| About | Version, privacy policy, website and contribution links. |
Plugins
Plugins add themes, keyword suggestions and file types. A plugin is data only: it contains no code, so installing one cannot run anything on your phone. Browse the plugins published for Vcode on the plugins page.
Install a plugin
- Open Settings > Plugins.
- Tap Install plugin and pick a
.zipor.jsonfile. - Use the switch to turn it on or off, or Remove to delete it.
Themes show up in the color scheme list right away. Keyword suggestions and file types apply to files you open afterwards.
Plugin format
A plugin is a single plugin.json file, or a .zip with plugin.json at the top level (or inside one top-level folder) plus the theme files it uses.
{
"id": "example.neon-pack",
"name": "Neon Pack",
"version": "1.0.0",
"author": "Your name",
"description": "A neon theme and a few web keywords",
"themes": ["themes/neon.json"],
"keywords": { "javascript": ["requestAnimationFrame", "IntersectionObserver"] },
"extensions": { ".mjs": "javascript" }
}
| Field | Required | Notes |
|---|---|---|
id | yes | 3 to 64 characters: letters, digits, ., -, _. Installing the same id again replaces the plugin. |
name | yes | Shown in the plugin list. |
version, author, description | no | Shown in the plugin list. |
themes | no | List of theme JSON files, relative to plugin.json. |
keywords | no | Object: language name to a list of words (up to 5000 per language, each up to 64 characters). |
extensions | no | Object: file extension with the dot to a language name. |
At least one of themes, keywords or extensions is required. Language names are the ones from languages.json, for example javascript, python, kotlin, cpp, html, css, markdown, swift, rust, go.
Theme files
A theme file has a name, a type ("dark" or "light"), a colors object and optional tokenColors (TextMate scopes for syntax highlighting). Start by copying vcode_dark.json and changing the colors. Every theme needs all of these keys as #RRGGBB:
global.colorPrimary
global.colorOutline
global.colorBackgroundPrimary
global.colorBackgroundSecondary
global.colorBackgroundTertiary
global.colorTextAndIconPrimary
global.colorTextAndIconPrimaryInverse
global.colorTextAndIconSecondary
global.colorTextAndIconDisabled
global.colorTextAndIconAdditional
global.colorTextAndIconSuccess
global.colorTextAndIconError
editor.background
editor.foreground
editor.whitespace
editor.cursor
editor.handle
editor.selection.background
editor.currentLine.background
editor.highlightedDelimiters.background
editor.highlightedDelimiters.foreground
editor.matchHighlight.background
editor.lineNumber.divider
editor.lineNumber.background
editor.lineNumber.foreground
editor.lineNumber.activeForeground
editor.indentGuide.background
editor.indentGuide.activeBackground
editor.popupWindow.corner
editor.popupWindow.background
editor.popupWindow.activeBackground
If a color is missing, the plugin is rejected with a message that names the file and the color.
Limits
- Up to 8 MB per plugin and 200 files in a
.zip. - File paths inside a
.zipmust stay inside the plugin folder.
Examples: examples/plugins in the repository. Zip the contents of a plugin folder, so that plugin.json is at the top, then install the .zip.
Building from source
You need JDK 17, about 1.1 GB of free disk space and 4 GB of RAM.
git clone --recursive --depth=1 --shallow-submodules https://github.com/Christianzz4603/Vcode Vcode
cd Vcode
./gradlew :app:assembleFossRelease
Create a local.properties file with KEYSTORE_PATH, KEYSTORE_PASSWORD, KEY_ALIAS and KEY_PASSWORD to sign the release build. The repository also contains a GitHub Actions workflow that builds the FOSS APK and publishes it on every push to main.
Credits and license
Vcode is built on Squircle CE by Blacksquircle and its contributors, and on the sora-editor component library. It is licensed under the Apache License 2.0. See the NOTICE file for the list of modifications and the privacy policy.