summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaindropsSys <contact@minteck.org>2023-07-07 18:57:13 +0200
committerRaindropsSys <contact@minteck.org>2023-07-07 18:57:13 +0200
commitd907bc906d7524d7670387617ee3bc3141e483e1 (patch)
tree7c5fce556ec82c23c3c94bff6ca30a5ed37e3b2e
parent036c13faf81216d7bad339050ff3706a88f9219b (diff)
downloadkirinos-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.xml127
-rw-r--r--ROADMAP.md1
-rw-r--r--core/about/index.html1
-rw-r--r--core/desktop/index.html8
-rw-r--r--docs/Installing-kirinOS-on-Raspberry-Pi-experimental-method-with-GPU-acceleration.md79
-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.md3
-rw-r--r--main.js52
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
diff --git a/ROADMAP.md b/ROADMAP.md
index a625514..a95b060 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -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
diff --git a/main.js b/main.js
index 32916d1..1b519d8 100644
--- a/main.js
+++ b/main.js
@@ -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();