<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Install — Pinel</title>
<meta name="description" content="Install Pinel on macOS, Linux, or Windows">
<link rel="stylesheet" href="/assets/css/style.css">
</head>
<body>
<nav class="navbar">
<a href="/" class="navbar-brand">Pinel</a>
<ul class="navbar-links">
<li><a href="/">Home</a></li>
<li><a href="/about/">About</a></li>
<li><a href="/docs/">Documentation</a></li>
</ul>
<div class="navbar-search" onclick="openSearch()">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/></svg>
<input type="text" placeholder="Search..." readonly>
<kbd>⌘K</kbd>
</div>
</nav>
<main>
<section class="install-hero">
<h1>Install Pinel</h1>
<p class="install-subtitle">Get started in seconds</p>
</section>
<section class="install-section">
<div class="current-download">
<h3>Current Version</h3>
<a href="#" class="download-link" id="downloadLink">
<span class="download-platform-text">Download for your platform</span>
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
<polyline points="7 10 12 15 17 10"></polyline>
<line x1="12" y1="15" x2="12" y2="3"></line>
</svg>
</a>
</div>
<p class="other-ways">
<a href="/docs/#getting-started">Other ways to install</a>
</p>
</section>
<script>
(function() {
var downloadLink = document.getElementById('downloadLink');
if (!downloadLink) return;
var ua = navigator.userAgent;
var platformSpan = downloadLink.querySelector('.download-platform-text');
var downloads = {
mac: 'https://github.com/kashsuks/Pinel/releases/download/v0.5.1/pinel-macos-arm64',
win: 'https://github.com/pinelproject/pinel/releases/latest/download/pinel-windows-x64.zip',
linux: 'https://github.com/kashsuks/Pinel/releases/download/v0.5.1/pinel-linux-x86_64'
};
if (/Mac/i.test(ua)) {
platformSpan.textContent = 'Download for macOS (arm64)';
downloadLink.href = downloads.mac;
} else if (/Win/i.test(ua)) {
platformSpan.textContent = 'Download for Windows';
downloadLink.href = downloads.win;
} else if (/Linux/i.test(ua)) {
platformSpan.textContent = 'Download for Linux (x86_64)';
downloadLink.href = downloads.linux;
} else {
platformSpan.textContent = 'Download';
}
})();
</script>
</main>
<footer class="footer">
<p>© 2026 Pinel.</p>
</footer>
<div class="search-overlay" id="searchOverlay">
<div class="search-modal">
<div class="search-input-wrapper">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/></svg>
<input type="text" id="searchInput" placeholder="Search documentation..." autofocus>
<kbd>esc</kbd>
</div>
<div class="search-results" id="searchResults">
<div class="search-empty">Start typing to search...</div>
</div>
</div>
</div>
<script>
(function() {
var searchData = [];
searchData.push({"title":"Pinel Documentation","url":"/docs/","content":"1. Introduction\n\n 1.1 What is Pinel?\n\nPinel is a codeeditor written using the Rust programming language as well as the popular Iced Libraryhttps://iced.rs/ for GUI rendering.\nPinel aims to bridge some gaps between Visual Studio Code as well as editors like Neovim and Helix by being really fast and extremely customizable.\n\n 1.2 Why use it / key concepts\n\nIf you've ever found:\n VSCode Visual Studio Code too slow or too much of a gimmick\n Neovim/Vim a bit too complicated too high of a learning curve\n\nAnd if you wanted an editor that just gets things done without throwing everything at you, Pinel might be a good choice. It is in no means a fully fledged editor that I recommend you switch over to, but it is in a decently okay state that you could use for testing and such.\n\nHere are some of the features that are currently working in Pinel:\n Integrated terminal support\n If you use MacOS, your zsh terminal works perfectly fine in Pinel using the icedterm package for Rust\n Not tested for Windows but will be tested and fixed in the next @stable release for Pinel. keep an eye out on Crates and Github Releases\n LSP Language Server Protocol support\n Outofthebox LSP support for Rust rustanalzyer, Python , Go, C/C++, and more!\n Supports Autocomplete, and Hover Documentation\n Deloads LSP for inactive files especially useful for rustanalyzer due to memory intensity\n Custom theming\n By using Lua you are able to theme your codeeditor to your liking\n Soon to have internal API that can be called using Lua for scripting\n Wakatime support\n Enjoy tracking time? Or part of Hack Club?\n Set your own Wakatime URL and API key to send heartbeats to any server of your choice\n Uses wakatimecli\n\n 1.3 Architecture\n\nPinel uses Icedhttps://iced.rs for the GUI rendering due to its support for ligatures allows uses to use nerd fonts, icedcodeeditorhttps://github.com/LuDog71FR/icedcodeeditor for core features such as LSP support and line numbers, icedtermhttps://github.com/Harzu/iced_term for integrated terminal support as well as many other packages and their functions mentioned under the CREDITS.mdhttps://github.com/kashsuks/Pinel/blob/master/CREDITS.md file for Pinel. Go check them out!\n\n 2. Getting Started\n\nPinel currently has active support for the following:\n Mac Silicon M1, M2, M3, etc\n Arch Linux\n Rust Package Manager Crates.iohttps://crates.io\n<! Arch Linux User Repositoryhttps://aur.archlinux.org/ \n\nThere is planned support in the future for the following:\n Other Linux distros\n Homebrew MacOS\n Winget/Chocolatey\n\n 2.1 macOS\n\nLucky for you, I develop on MacOS therefore every version Stable, Dev, Alpha, etc is guaranteed to have every feature on MacOS. There have been plans to have the ability to use a .DMG file for users to easily install however that requires Gatekeeper access for Mac meaning I would need a developer account. \n\nThat aside, here is how you can install of MacOS.\n\nYou can use the following command and paste it in your terminal:\ncurl fsSL https://pinel.netlify.app/install.sh | sh\n\nAnd the script will install the editor for usage!\n\nYou can also install via the pinelmacosx86_64 under the latest release which can be found herehttps://github.com/kashsuks/Pinel/releases\n\nDue to the extra security that MacOS has for unverified apps, you will need to grant the app some permissions that Gatekeeper would otherwise give by default. Here are the steps to follow:\n Copy the path of your installation\n Go to your terminal of choice and type in chmod +x <the path to the install\n Then run ./pinelmacosx86_64\n\nOptional: You can also add this new binary to your $PATH if you would like to just refer to the app as Pinel\n\nFor users looking for a Homebrew installation, hang tight it will be available soon\n\n 2.2 Windows\n\nThere is no windows installation currently due to crossplatform dependency issues. A solution will be found soon\n\nThere is no active option for Winget or Chocolatey however they are in the works.\n\n 2.3 Linux\n\nFor Arch Linux users installation is simple.\n\nOn the most recent release, look for pinellinuxx86_64 and install it.\n\nOnce that is done, run chmod +x <path of the install and then run ./<path of the install.\nThis will make the binary executable and then run it.\n\n 2.4 Package managers\n\nPinel currently has support through the following package managers:\n\n Crates.iohttps://crates.io/crates/pinel\ncargo install pinel\n\n\n 3. Internal API\n\n 3.1 Supported Clients\n\nThe only supported client as of now would be using lua to invoke the API functions. Support for other languages such as python or javascript are plans for the future.\n\nNote: All configurations must be done through pinel/init.lua and the pinel folder being located in the dotfiles of your device\n\n pinel.theme.use_builtinname\n\nThis function allows you to use one of the builtin themes supported by pinel. They are:\n Nord\n TokyoNight\n ...\n\nExample:\npinel.theme.use_builtin\"Nord\"\n\nHaving this line of code in the init.lua file will make sure that the theme is Nord by default\n\n pinel.theme.set_colorname, hex\n\nAllows you to override a named UI or editor colour slot with hex colour.\n\nParams:\n name: Name of the ui component\n hex: Hex value for the override\n\nExample:\npinel.theme.set_color\"bg_status_bar\", \"101722\"\npinel.theme.set_color\"editor.current_line_highlight\", \"7aa2f733\"\n\n\nAll of the options for name are listed herehttps://github.com/kashsuks/Pinel/blob/master/examples/init.lua\n\n pinel.ui.show_sidebarvisible\n\nBoolean that enables or disables the sidebar on startup\n\nExample:\npinel.ui.show_sidebarfalse\n\nIt can also be set to true\n\n pinel.ui.set_sidebar_widthwidth\n\nSets the sidebar width in pixels on startup. Width is clamped to the editors allowed range.\n\nAllowed range is 20px 120px\n\nExample\npinel.ui.set_sidebar_width100.0\n\n\nTODO: Not allow the user to exceed these bounds/have a reminder that they cannot\n\n Extra Resources\n\nA full example file is located herehttps://github.com/kashsuks/Pinel/blob/master/examples/init.lua that you may refer to.\n\n 4 Basic Commands\n\nIn there future, the scripting API written for Lua will support custom keybinds and macros as well as a UI system for bindings.\n\n 4.1 Opening\n\nYou can either open a file or a whole folder. These are the commands.\n\n Command/Control + O: Opening a specific file\n Command/Control + Shift + O: Opening a folder\n\nThe command palette is useful since it allows you to control almost everything by just typing it in. Here is how to access it.\n\n Command/Control + Shift + P: Opens the command palette","category":"Docs"});
var overlay = document.getElementById('searchOverlay');
var input = document.getElementById('searchInput');
var results = document.getElementById('searchResults');
window.openSearch = function() {
overlay.classList.add('active');
setTimeout(function() { input.focus(); }, 100);
};
window.closeSearch = function() {
overlay.classList.remove('active');
input.value = '';
results.innerHTML = '<div class="search-empty">Start typing to search...</div>';
};
overlay.addEventListener('click', function(e) {
if (e.target === overlay) closeSearch();
});
document.addEventListener('keydown', function(e) {
if ((e.metaKey || e.ctrlKey) && e.key === 'k') {
e.preventDefault();
if (overlay.classList.contains('active')) {
closeSearch();
} else {
openSearch();
}
}
if (e.key === 'Escape') closeSearch();
});
input.addEventListener('input', function() {
var query = this.value.toLowerCase().trim();
if (!query) {
results.innerHTML = '<div class="search-empty">Start typing to search...</div>';
return;
}
var matches = searchData.filter(function(item) {
return item.title.toLowerCase().indexOf(query) !== -1 ||
item.content.toLowerCase().indexOf(query) !== -1;
});
if (matches.length === 0) {
results.innerHTML = '<div class="search-empty">No results found for "' + query.replace(/[<>&"]/g, '') + '"</div>';
return;
}
results.innerHTML = matches.map(function(item) {
var idx = item.content.toLowerCase().indexOf(query);
var preview = '';
if (idx !== -1) {
var start = Math.max(0, idx - 40);
var end = Math.min(item.content.length, idx + query.length + 60);
preview = (start > 0 ? '...' : '') + item.content.substring(start, end) + (end < item.content.length ? '...' : '');
}
return '<a class="search-result-item" href="' + item.url + '">' +
'<div class="result-title">' + item.title + '</div>' +
(preview ? '<div class="result-preview">' + preview + '</div>' : '') +
'</a>';
}).join('');
});
})();
</script>
</body>
</html>