diff options
author | RaindropsSys <contact@minteck.org> | 2023-07-07 18:57:13 +0200 |
---|---|---|
committer | RaindropsSys <contact@minteck.org> | 2023-07-07 18:57:13 +0200 |
commit | d907bc906d7524d7670387617ee3bc3141e483e1 (patch) | |
tree | 7c5fce556ec82c23c3c94bff6ca30a5ed37e3b2e | |
parent | 036c13faf81216d7bad339050ff3706a88f9219b (diff) | |
download | kirinos-d907bc906d7524d7670387617ee3bc3141e483e1.tar.gz kirinos-d907bc906d7524d7670387617ee3bc3141e483e1.tar.bz2 kirinos-d907bc906d7524d7670387617ee3bc3141e483e1.zip |
Updated 5 files, added 2 files and renamed docs/Installing-kirinOS-on-Raspberry-Pi.md (automated)
-rw-r--r-- | .idea/workspace.sync-conflict-20230706-082104-SY6BK7A.xml | 127 | ||||
-rw-r--r-- | ROADMAP.md | 1 | ||||
-rw-r--r-- | core/about/index.html | 1 | ||||
-rw-r--r-- | core/desktop/index.html | 8 | ||||
-rw-r--r-- | docs/Installing-kirinOS-on-Raspberry-Pi-experimental-method-with-GPU-acceleration.md | 79 | ||||
-rw-r--r-- | docs/Installing-kirinOS-on-Raspberry-Pi-verified-method-no-GPU-acceleration.md (renamed from docs/Installing-kirinOS-on-Raspberry-Pi.md) | 7 | ||||
-rw-r--r-- | docs/Installing-kirinOS-on-bare-metal.md | 3 | ||||
-rw-r--r-- | main.js | 52 |
8 files changed, 234 insertions, 44 deletions
diff --git a/.idea/workspace.sync-conflict-20230706-082104-SY6BK7A.xml b/.idea/workspace.sync-conflict-20230706-082104-SY6BK7A.xml new file mode 100644 index 0000000..4d56eca --- /dev/null +++ b/.idea/workspace.sync-conflict-20230706-082104-SY6BK7A.xml @@ -0,0 +1,127 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="AutoImportSettings"> + <option name="autoReloadType" value="SELECTIVE" /> + </component> + <component name="ChangeListManager"> + <list default="true" id="debdfba3-3b02-460f-a054-1e353ef7d299" name="Changes" comment=""> + <change afterPath="$PROJECT_DIR$/docs/Installing-kirinOS-on-Raspberry-Pi-verified-method-no-GPU-acceleration.md" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/docs/Installing-kirinOS-on-Raspberry-Pi.md" beforeDir="false" afterPath="$PROJECT_DIR$/docs/Installing-kirinOS-on-Raspberry-Pi-experimental-method-with-GPU-acceleration.md" afterDir="false" /> + </list> + <list id="2a6355b3-0bf5-465c-a842-065ad0e42e14" name="Changes by kiwin" comment="" /> + <option name="SHOW_DIALOG" value="false" /> + <option name="HIGHLIGHT_CONFLICTS" value="true" /> + <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> + <option name="LAST_RESOLUTION" value="IGNORE" /> + </component> + <component name="FileTemplateManagerImpl"> + <option name="RECENT_TEMPLATES"> + <list> + <option value="HTML File" /> + <option value="JavaScript File" /> + </list> + </option> + </component> + <component name="Git.Settings"> + <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> + </component> + <component name="MarkdownSettingsMigration"> + <option name="stateVersion" value="1" /> + </component> + <component name="PackageJsonUpdateNotifier"> + <dismissed value="$PROJECT_DIR$/package.json" /> + </component> + <component name="ProjectId" id="2RKpMqvvYGwDRK7xTBKrf19SMu5" /> + <component name="ProjectLevelVcsManager"> + <ConfirmationsSetting value="2" id="Add" /> + </component> + <component name="ProjectViewState"> + <option name="autoscrollFromSource" value="true" /> + <option name="hideEmptyMiddlePackages" value="true" /> + <option name="showLibraryContents" value="true" /> + <option name="showMembers" value="true" /> + </component> + <component name="PropertiesComponent"><![CDATA[{ + "keyToString": { + "ASKED_ADD_EXTERNAL_FILES": "true", + "ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true", + "DefaultHtmlFileTemplate": "HTML File", + "RunOnceActivity.ShowReadmeOnStart": "true", + "SHARE_PROJECT_CONFIGURATION_FILES": "true", + "WebServerToolWindowFactoryState": "true", + "codeWithMe.voiceChat.enabledByDefault": "false", + "git-widget-placeholder": "mane", + "javascript.nodejs.core.library.configured.version": "18.4.0", + "javascript.nodejs.core.library.typings.version": "18.16.19", + "last_opened_file_path": "/Volumes/Projects/kirinos/docs", + "node.js.detected.package.eslint": "true", + "node.js.detected.package.tslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "node.js.selected.package.tslint": "(autodetect)", + "nodejs_package_manager_path": "npm", + "settings.editor.selected.configurable": "preferences.pluginManager", + "vue.rearranger.settings.migration": "true" + } +}]]></component> + <component name="RecentsManager"> + <key name="CopyFile.RECENT_KEYS"> + <recent name="$PROJECT_DIR$/docs" /> + <recent name="$PROJECT_DIR$" /> + <recent name="$PROJECT_DIR$/demo" /> + <recent name="$PROJECT_DIR$/core/power/icons" /> + <recent name="$PROJECT_DIR$/core/power" /> + </key> + <key name="MoveFile.RECENT_KEYS"> + <recent name="$PROJECT_DIR$/demo" /> + <recent name="$PROJECT_DIR$/setup" /> + <recent name="$PROJECT_DIR$/core/startup" /> + </key> + </component> + <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" /> + <component name="TaskManager"> + <task active="true" id="Default" summary="Default task"> + <changelist id="debdfba3-3b02-460f-a054-1e353ef7d299" name="Changes" comment="" /> + <created>1687008582661</created> + <option name="number" value="Default" /> + <option name="presentableId" value="Default" /> + <updated>1687008582661</updated> + <workItem from="1687008583700" duration="126000" /> + <workItem from="1687008783081" duration="2478000" /> + <workItem from="1687011596895" duration="2145000" /> + <workItem from="1687028557962" duration="56000" /> + <workItem from="1687028649233" duration="6346000" /> + <workItem from="1687072399355" duration="4080000" /> + <workItem from="1687077687436" duration="8402000" /> + <workItem from="1687094402158" duration="12622000" /> + <workItem from="1687194181516" duration="4649000" /> + <workItem from="1687286908146" duration="902000" /> + <workItem from="1687346705491" duration="7861000" /> + <workItem from="1687459519855" duration="7839000" /> + <workItem from="1687513590413" duration="3764000" /> + <workItem from="1687810907818" duration="98000" /> + <workItem from="1687811645445" duration="33000" /> + <workItem from="1687859150153" duration="13723000" /> + <workItem from="1687941385848" duration="6318000" /> + <workItem from="1688027885396" duration="614000" /> + <workItem from="1688113413096" duration="8519000" /> + <workItem from="1688151322768" duration="1701000" /> + <workItem from="1688288267931" duration="10457000" /> + <workItem from="1688312600868" duration="4667000" /> + <workItem from="1688374002845" duration="7606000" /> + <workItem from="1688494546973" duration="3158000" /> + <workItem from="1688541882148" duration="2547000" /> + <workItem from="1688544496092" duration="2121000" /> + <workItem from="1688630129965" duration="847000" /> + </task> + <servers /> + </component> + <component name="TypeScriptGeneratedFilesManager"> + <option name="version" value="3" /> + </component> + <component name="UnknownFeatures"> + <option featureType="com.intellij.fileTypeFactory" implementationName="*.service" /> + </component> + <component name="VcsManagerConfiguration"> + <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" /> + </component> +</project>
\ No newline at end of file @@ -8,6 +8,7 @@ * [x] <s>Task bar **- Raindrops**</s> * [ ] Media keys * [ ] Application switcher **- Raindrops** + * [ ] Screenshots **- Raindrops** * [ ] Notifications * [x] <s>Status bar **- Raindrops**</s> * [x] <s>Power options **- Raindrops**</s> diff --git a/core/about/index.html b/core/about/index.html index f70787f..f06390d 100644 --- a/core/about/index.html +++ b/core/about/index.html @@ -33,6 +33,7 @@ user-select: none; user-focus: none; outline: none; + -webkit-user-drag: none; } ::-webkit-scrollbar { diff --git a/core/desktop/index.html b/core/desktop/index.html index cf21767..ef9269e 100644 --- a/core/desktop/index.html +++ b/core/desktop/index.html @@ -257,8 +257,12 @@ console.log("switch"); }); - ipcRenderer.on('switchBack', (event) => { - console.log("switchBack"); + ipcRenderer.on('emergency', (event) => { + console.log("emergency"); + }); + + ipcRenderer.on('forceQuit', (event) => { + console.log("forceQuit"); }); function transferError(error) { diff --git a/docs/Installing-kirinOS-on-Raspberry-Pi-experimental-method-with-GPU-acceleration.md b/docs/Installing-kirinOS-on-Raspberry-Pi-experimental-method-with-GPU-acceleration.md new file mode 100644 index 0000000..c23fc51 --- /dev/null +++ b/docs/Installing-kirinOS-on-Raspberry-Pi-experimental-method-with-GPU-acceleration.md @@ -0,0 +1,79 @@ +# Installing kirinOS on Raspberry Pi (experimental method, with GPU acceleration) + +> **WARNING:** kirinOS is currently in development and is not yet suitable for daily use. As such, the installation process will be complicated, and you might run into issues. Additionally, **kirinOS on ARM is not supported and may permanently damage your device**, please proceed with caution. + +> **Note:** The ARM port of kirinOS is meant to be used on Equestria.dev's own "Kirinbox" and "Kirinbook" devices; for consumer use, prefer to use the x86 version + +## Requirements + +* Raspberry Pi 4 or later +* 2GB of RAM or more +* 8GB (or larger) SD card +* Ethernet connection (very important, Wi-Fi is not supported yet) +* Micro HDMI to HDMI cable + * **Note:** Using a screen larger than 1080p may cause performance issues on Raspberry Pi 4 +* Keyboard and mouse +* Access to git.equestria.dev through your firewall (if applicable) +* Lot of time + +## 1. Installing Raspberry Pi OS +You first have to install Raspberry Pi OS onto your Pi's SD card. To do so, visit https://www.raspberrypi.com/software/operating-systems and download Raspberry Pi OS Lite 64-bit (make absolutely sure you have the 64-bit version as kirinOS is 64-bit only). + +Once you have installed Raspberry Pi OS to your SD card, plug in your Pi and wait for it to start up, then follow these steps: +* When asked to select a keyboard layout, select the one you want (we recommend you select "English (US)": Other > English (US) > English (US)) +* When asked to enter a username, enter "kirinos", and enter "kirinos" as the password +* Once you can log in, log in as "kirinos" with the password "kirinos" +* Run the `sudo passwd` command and enter password "kirinos" +* Run the `sudo su` command, and then `hostnamectl set-hostname kirinos` +* Run `lsb_release`, if it says "Release: 11", follow these steps: + * Run `nano /etc/apt/sources.list` and replace "bullseye" with "bookworm"; then do the same with `/etc/apt/sources.list.d/raspi.list` + * Run `apt update`, and `apt full-upgrade -y`; this will take a really long time so be patient + * If you are asked "Restart services during package updates without asking?", select "Yes" + * If you are asked about configuration files, enter "Y" and press Enter +* Once everything is done, run `reboot` to restart the Raspberry Pi. You can now log in directly as `root` with the `kirinos` password. + +## 2. Configuring the Raspberry Pi +Now that you have Debian 12 installed, you can continue with setting up your Raspberry Pi by setting a few options that will be necessary for kirinOS. + +Follow these steps: +* Run `apt install -y git npm` to install the required programs to download kirinOS. These are not used yet but will be used to install kirinOS later on. +* Run `raspi-config` to open the Raspberry Pi configuration program +* When asked "What user should these settings apply to?", enter "kirinos" +* Select "System Options", then "Audio", and select the HDMI port your monitor is plugged into, or the audio jack +* Select "Display Options", then "Screen Blanking", and "No" +* Select "Localisation Options", then "WLAN Country", then select your country +* Finally, select "Finish" and "No" +* Run `nano /boot/cmdline.txt` and add `quiet` at the end (after a space) +* Save, quit, and enter `reboot` + +## 3. Installing kirinOS +You have now installed Debian. Log in as `root` with the password `kirinos`. + +You now need to follow these instructions to install kirinOS: +* Run the following command: + * `git clone https://git.equestria.dev/equestria.dev/kirinos /kirin` +* Wait for it to download kirinOS +* Run `cd /kirin` +* Run `npm install electron` to reinstall the kirinOS core for the correct CPU architecture (by default, it is installed for x86) +* Run `chmod +x setup.sh`, and then `./setup.sh` +* You are now installing the required dependencies and configuring your Debian installation to run kirinOS. This will take a while, so take a break while it's working + * You might get a few error messages about services not being found, this is normal. +* Run `reboot` to restart the system +* If the screen turns green shortly after starting up, you have reached the first stage of the kirinOS startup process +* The screen may flicker a few times during the rest of the boot process + * If you want technical details, the screen will flicker between each state of the boot process. Stage 1 is when the orange screen appears, stage 2 is when the screen resolution is set properly, and stage 3 is when the GUI is loaded +* Once the "Welcome to kirinOS" message appears, your system is installed properly +* After the boot process has completed, click on the "Owner" user and login using the "password" password +* Once you are logged in, you can click on the kirinOS logo in the top left corner and click on the "About" icon to check your system information + +## Wrapping up +You now have kirinOS installed on bare metal, please report any issue you may encounter, so we can fix them before the final release. + +You may experiment a lot of different graphical issues. These are not from us and are from the GPU driver used. If you want a more usable experience at the expense of performance, you may want to use the method without GPU acceleration instead. + +If you wish to upgrade to a newer version of kirinOS, you will need to do the following: +* Press Ctrl+Q +* Run `cd /` +* Run `rm -rf /kirin` + * **Note:** As upgrading is currently not supported, this will delete all of your user data +* Repeat all the steps mentioned in "3. Installing kirinOS" after the step about running `su`
\ No newline at end of file diff --git a/docs/Installing-kirinOS-on-Raspberry-Pi.md b/docs/Installing-kirinOS-on-Raspberry-Pi-verified-method-no-GPU-acceleration.md index ea37585..f39af66 100644 --- a/docs/Installing-kirinOS-on-Raspberry-Pi.md +++ b/docs/Installing-kirinOS-on-Raspberry-Pi-verified-method-no-GPU-acceleration.md @@ -1,8 +1,8 @@ -# Installing kirinOS on Raspberry Pi +# Installing kirinOS on Raspberry Pi (verified method, no GPU acceleration) > **WARNING:** kirinOS is currently in development and is not yet suitable for daily use. As such, the installation process will be complicated, and you might run into issues. Additionally, **kirinOS on ARM is not supported and may permanently damage your device**, please proceed with caution. -> **Note:** The ARM port of kirinOS is meant to be used on Equestria.dev's own "Mangobox" and "Mangobook" devices; for consumer use, prefer to use the x86 version +> **Note:** The ARM port of kirinOS is meant to be used on Equestria.dev's own "Kirinbox" and "Kirinbook" devices; for consumer use, prefer to use the x86 version ## Requirements @@ -85,9 +85,10 @@ You now need to follow these instructions to install kirinOS: * Run `npm install electron` to reinstall the kirinOS core for the correct CPU architecture (by default it is installed for x86) * Run `chmod +x setup.sh`, and then `./setup.sh` * You are now installing the required dependencies and configuring your Debian installation to run kirinOS. This will take a while, so take a break while it's working + * You might get a few error messages about services not being found, this is normal. * Once everything is done, open /etc/network/interfaces (`nano /etc/network/interfaces`) and remove the lines related to the primary network interface (usually starts with `enp0s`), then press Ctrl+S and Ctrl+Q to save and quit * Run `/sbin/reboot` to restart the system -* If the screen turns orange shortly after starting up, you have reached the first stage of the kirinOS startup process +* If the screen turns green shortly after starting up, you have reached the first stage of the kirinOS startup process * The screen may flicker a few times during the rest of the boot process * If you want technical details, the screen will flicker between each state of the boot process. Stage 1 is when the orange screen appears, stage 2 is when the screen resolution is set properly, and stage 3 is when the GUI is loaded * Once the "Welcome to kirinOS" message appears, your system is installed properly diff --git a/docs/Installing-kirinOS-on-bare-metal.md b/docs/Installing-kirinOS-on-bare-metal.md index 2276263..b5c4f02 100644 --- a/docs/Installing-kirinOS-on-bare-metal.md +++ b/docs/Installing-kirinOS-on-bare-metal.md @@ -53,9 +53,10 @@ You now need to follow these instructions to install kirinOS: * Run `cd /kirin` * Run `chmod +x setup.sh`, and then `./setup.sh` * You are now installing the required dependencies and configuring your Debian installation to run kirinOS. This will take a while, so take a break while it's working + * You might get a few error messages about services not being found, this is normal. * Once everything is done, open /etc/network/interfaces (`nano /etc/network/interfaces`) and remove the lines related to the primary network interface (usually starts with `enp0s`), then press Ctrl+S and Ctrl+Q to save and quit * Run `/sbin/reboot` to restart the system -* If the screen turns orange shortly after starting up, you have reached the first stage of the kirinOS startup process +* If the screen turns green shortly after starting up, you have reached the first stage of the kirinOS startup process * The screen may flicker a few times during the rest of the boot process * If you want technical details, the screen will flicker between each state of the boot process. Stage 1 is when the orange screen appears, stage 2 is when the screen resolution is set properly, and stage 3 is when the GUI is loaded * Once the "Welcome to kirinOS" message appears, your system is installed properly @@ -38,51 +38,47 @@ const createWindow = () => { mainWindow.focus(); }); - globalShortcut.register('Alt+Shift+Tab', () => { - mainWindow.send("switchBack"); - }); - - globalShortcut.register('Alt+Tab', () => { + globalShortcut.registerAll(['Alt+Tab', 'Alt+Shift+Tab', 'Ctrl+Alt+Tab', 'Meta+Tab'], () => { mainWindow.send("switch"); }); - globalShortcut.register('Ctrl+Alt+Tab', () => { - mainWindow.send("switch"); + globalShortcut.registerAll(['Alt+F4', 'Meta+F4', 'Ctrl+Q'], () => { + mainWindow.send("close"); }); - globalShortcut.register('Alt+F4', () => { - mainWindow.send("close"); + globalShortcut.registerAll(['Alt+Shift+F4', 'Meta+Shift+F4', 'Ctrl+Shift+Q'], () => { + mainWindow.send("forceQuit"); }); globalShortcut.register('Alt+Space', () => { mainWindow.send("menu"); }); - globalShortcut.register('Meta+D', () => { + globalShortcut.registerAll(['Super+D', 'Meta+D', 'Alt+D'], () => { mainWindow.send("desktop"); }); - globalShortcut.register('Super+D', () => { - mainWindow.send("desktop"); + globalShortcut.registerAll(['Ctrl+Alt+Delete', 'Meta+Alt+Delete'], () => { + mainWindow.send("emergency"); }); - globalShortcut.register('VolumeUp', () => { + globalShortcut.registerAll(['VolumeUp', 'Meta+Shift+Up', 'Alt+Shift+Up'], () => { mainWindow.send("mediakey", "VolumeUp"); }); - globalShortcut.register('VolumeDown', () => { + globalShortcut.registerAll(['VolumeDown', 'Meta+Shift+Down', 'Alt+Shift+Down'], () => { mainWindow.send("mediakey", "VolumeDown"); }); - globalShortcut.register('BrightnessUp', () => { + globalShortcut.registerAll(['BrightnessUp', 'Meta+Ctrl+Up', 'Ctrl+Alt+Up'], () => { mainWindow.send("mediakey", "BrightnessUp"); }); - globalShortcut.register('BrightnessDown', () => { + globalShortcut.registerAll(['BrightnessDown', 'Meta+Ctrl+Down', 'Ctrl+Alt+Down'], () => { mainWindow.send("mediakey", "BrightnessDown"); }); - globalShortcut.register('VolumeMute', () => { + globalShortcut.registerAll(['VolumeMute', 'Meta+Shift+Space', 'Alt+Shift+Space'], () => { mainWindow.send("mediakey", "VolumeMute"); }); @@ -102,29 +98,9 @@ const createWindow = () => { mainWindow.send("mediakey", "MediaPlayPause"); }); - globalShortcut.register('PrintScreen', () => { + globalShortcut.registerAll(['PrintScreen', 'Meta+Shift+S', 'Alt+Shift+S'], () => { mainWindow.send("mediakey", "PrintScreen"); }); - - globalShortcut.register('Meta+E', () => {}); - globalShortcut.register('Super+E', () => {}); - globalShortcut.register('Meta+F1', () => {}); - globalShortcut.register('Super+F1', () => {}); - globalShortcut.register('Meta+F2', () => {}); - globalShortcut.register('Super+F2', () => {}); - globalShortcut.register('Meta+F3', () => {}); - globalShortcut.register('Super+F3', () => {}); - globalShortcut.register('Meta+F4', () => {}); - globalShortcut.register('Super+F4', () => {}); - globalShortcut.register('Ctrl+Alt+Right', () => {}); - globalShortcut.register('Ctrl+Alt+Left', () => {}); - globalShortcut.register('Ctrl+Alt+Up', () => {}); - globalShortcut.register('Ctrl+Alt+Down', () => {}); - globalShortcut.register('Shift+Alt+Right', () => {}); - globalShortcut.register('Shift+Alt+Left', () => {}); - globalShortcut.register('Shift+Alt+Up', () => {}); - globalShortcut.register('Shift+Alt+Down', () => {}); - globalShortcut.register('Alt+Esc', () => {}); } app.whenReady().then(() => { createWindow(); |