clapp-pm 1.0.42__py3-none-any.whl → 1.0.44__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {clapp_pm-1.0.42.data → clapp_pm-1.0.44.data}/data/version.json +1 -1
- {clapp_pm-1.0.42.dist-info → clapp_pm-1.0.44.dist-info}/METADATA +1 -1
- {clapp_pm-1.0.42.dist-info → clapp_pm-1.0.44.dist-info}/RECORD +30 -9
- packages/pycloudos/README.md +279 -0
- packages/pycloudos/core/appmon.py +0 -0
- packages/pycloudos/main.py +193 -0
- packages/pycloudos/manifest.json +15 -0
- packages/pycloudos/pycloud_fs/home/Desktop/test_desktop_file.txt +11 -0
- packages/pycloudos/pycloud_fs/home/default/Desktop/test_dosya.txt +1 -0
- packages/pycloudos/pycloud_fs/home/default/Desktop/test_script.py +11 -0
- packages/pycloudos/rain/__init__.py +7 -0
- packages/pycloudos/rain/contextmenu.py +1370 -0
- packages/pycloudos/rain/desktop.py +556 -0
- packages/pycloudos/rain/dock.py +722 -0
- packages/pycloudos/rain/flet_html_widgets.py +1448 -0
- packages/pycloudos/rain/theme.py +930 -0
- packages/pycloudos/rain/topbar.py +1421 -0
- packages/pycloudos/rain/ui.py +381 -0
- packages/pycloudos/rain/wallpaper.py +830 -0
- packages/pycloudos/rain/widgets.py +688 -0
- packages/pycloudos/rain/windowmanager.py +605 -0
- packages/pycloudos/requirements-dev.txt +43 -0
- packages/pycloudos/requirements.txt +43 -0
- packages/pycloudos/setup_deps.py +422 -0
- publish_command.py +45 -61
- version.py +1 -1
- {clapp_pm-1.0.42.dist-info → clapp_pm-1.0.44.dist-info}/WHEEL +0 -0
- {clapp_pm-1.0.42.dist-info → clapp_pm-1.0.44.dist-info}/entry_points.txt +0 -0
- {clapp_pm-1.0.42.dist-info → clapp_pm-1.0.44.dist-info}/licenses/LICENSE +0 -0
- {clapp_pm-1.0.42.dist-info → clapp_pm-1.0.44.dist-info}/top_level.txt +0 -0
@@ -18,12 +18,12 @@ package_runner.py,sha256=yTWIlIXRBQq-FiuoS2qifnJHLajgDOnMv2wPPFL1HtI,5787
|
|
18
18
|
package_signing.py,sha256=ModMAzLk08rkI6zd8QKhyCH5BFbB-7dy8pwqKYatFQo,4579
|
19
19
|
post_install_hint.py,sha256=wjMPCgRurZiGu6hv_se-XA36KqBCdeYdRCD1q7FrJzQ,4918
|
20
20
|
progress_utils.py,sha256=ZH73QNLd5mI4h-JU0hSFR2OU8lesr2XteSZdmFD0bFA,5995
|
21
|
-
publish_command.py,sha256=
|
21
|
+
publish_command.py,sha256=_gzB-c7MyHBC-UpZAzJMzi04q4MZQbrADiqeGukyqZI,15117
|
22
22
|
remote_registry.py,sha256=rPBIM_ESXUt0br5cARQ4YbzUoTda0G4e1KGzfyYMbpQ,8235
|
23
23
|
smart_search.py,sha256=R5O5CDXqlQc-N-6R6D5k36_-arCB-wnKfmWr5zMYWUI,15741
|
24
24
|
uninstall_command.py,sha256=rQYbZ-XMw8Xxw1fmgGdDaBQmgBGqyJ_rTBZkvEV5HV0,7066
|
25
25
|
validate_command.py,sha256=idaujErzrwuZNT6DYCVTVwZqBDEEi1GTxIXAGBgKMKM,7623
|
26
|
-
version.py,sha256=
|
26
|
+
version.py,sha256=YJAO_0NkWbCXp8-iIulEb1pKL6txXy3sybBoanMYlLg,224
|
27
27
|
version_command.py,sha256=DZuYWtohSeM5PJNYCflBy36_k0vex3tYV2C8ixEA9ho,4259
|
28
28
|
version_manager.py,sha256=fpC7jxhIW1wZhJ9IkVwyqkgJN4mhBjUUbaLefXLDMiM,11423
|
29
29
|
where_command.py,sha256=TcLoXLGmrPSHQuvlceVuuKBsfeadIwz-E0G_5okH14g,6420
|
@@ -67,8 +67,8 @@ clapp-packages-repo/packages/cloud-web-browser/requirements.txt,sha256=fJMjUewTq
|
|
67
67
|
clapp-packages-repo/packages/test-app-2/README.md,sha256=AqVgCZ-cwXBuDHFoJdYkAHAuB6SjSjqXQrjhLu0q7cc,964
|
68
68
|
clapp-packages-repo/packages/test-app-2/main.py,sha256=24IEuyHSuPWJp2-xYhInUNEWqeueGxAO3NBgHkEgLdQ,1562
|
69
69
|
clapp-packages-repo/packages/test-app-2/manifest.json,sha256=dzxPwC-GebvxX9DodLAtdRB0WsZBm204uGGsHbpGhyY,286
|
70
|
-
clapp_pm-1.0.
|
71
|
-
clapp_pm-1.0.
|
70
|
+
clapp_pm-1.0.44.data/data/version.json,sha256=RjPKKnRHFU2wNhfx-FJbgD3uenTJ81NYQMfn3_ogy8s,239
|
71
|
+
clapp_pm-1.0.44.dist-info/licenses/LICENSE,sha256=_hryv9pKR6udRexceUYuoYCJGmYBz7e-vRuFWmm38UY,1075
|
72
72
|
docs/developer_guide.md,sha256=B-S141TSNy7e8T9KaV6Fr-ZAFhYqqgcwqWijjX0C2Xc,7336
|
73
73
|
packages/cloud-calc/README.md,sha256=PBxWn01QykaHeezWf2AsD8P8cj66KKVpyuqvGadeUJo,2162
|
74
74
|
packages/cloud-calc/main.py,sha256=9m0igRXqIZHa3KTM37pqg02HxU_tY-2j-GMJWfUauvk,14764
|
@@ -85,6 +85,27 @@ packages/cloud-web-browser/README.md,sha256=BeCjl7SyiA_sZJ94IFDFsGdeFiq9oSn-Kxbn
|
|
85
85
|
packages/cloud-web-browser/cloud_browser.py,sha256=glDwlT340OBmA85Y4EqlhRY2ygEr_e7aO8POXNPT9pM,41100
|
86
86
|
packages/cloud-web-browser/manifest.json,sha256=vyZ9c7Mg5PSuONT73mXws4-ORs1w00ePlOcAB3IZMzY,466
|
87
87
|
packages/cloud-web-browser/requirements.txt,sha256=fJMjUewTqhrVMoy734e3uwA1AhVxG1u8Pet_D3TSdBY,73
|
88
|
+
packages/pycloudos/README.md,sha256=JDe00hC5I3uCRY9l_wj8jl2d1nwo9wbvqMQo9o_AW08,7100
|
89
|
+
packages/pycloudos/main.py,sha256=VXnlkrvT_m22-EYCPAdm46z1pDIuMFMG9HLv8K2Q86I,5766
|
90
|
+
packages/pycloudos/manifest.json,sha256=jjivrfRUlo2ipI_QFSLrgAM9VdlhwPB2mTJCEKIDP98,260
|
91
|
+
packages/pycloudos/requirements-dev.txt,sha256=D9r0n97UiKI2WMGn3e1X3QbiuBtCl7liTqcqZIfPE-M,694
|
92
|
+
packages/pycloudos/requirements.txt,sha256=iBip529tp83ajHyc8KqMu-_Slb1cm0axA-prNGv28Rc,920
|
93
|
+
packages/pycloudos/setup_deps.py,sha256=PwUEtxhI5GraHyijk-MzprW8YuZ7WW2jPNJfToneQ_U,15704
|
94
|
+
packages/pycloudos/core/appmon.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
95
|
+
packages/pycloudos/pycloud_fs/home/Desktop/test_desktop_file.txt,sha256=LvjhwaBxBTeku1o2WR0h7ZC279Kt8QAziSb38mugFn4,310
|
96
|
+
packages/pycloudos/pycloud_fs/home/default/Desktop/test_dosya.txt,sha256=tf2u7NK3XncTupFd2s6lS36KL2L-bFiyCU-QmfEOFsc,26
|
97
|
+
packages/pycloudos/pycloud_fs/home/default/Desktop/test_script.py,sha256=tWTm9LKQvOm-OFfaTYFmFqHmpC0T-febz_Tqxq2Ip08,273
|
98
|
+
packages/pycloudos/rain/__init__.py,sha256=u35vfNWqD-kBA9Mt2oVj33JUTX32_AABchnz215WTPo,139
|
99
|
+
packages/pycloudos/rain/contextmenu.py,sha256=aCNgi8NO3xzJQIhnXAs2uOzFZR4NKCu0uycoQexhjg4,57145
|
100
|
+
packages/pycloudos/rain/desktop.py,sha256=9ernG5NZ6epLw868suTZ2OI3DeAXG6Y7e0sO3MaY8cw,21733
|
101
|
+
packages/pycloudos/rain/dock.py,sha256=DVeVuiaD9iarIFbUMs1KmjCBCx9q5k-5Eud1WzUtvRI,28000
|
102
|
+
packages/pycloudos/rain/flet_html_widgets.py,sha256=USnX7O3cb6vt9BET1jtrbChsAkYfKLlglEW9rC3XIQg,54003
|
103
|
+
packages/pycloudos/rain/theme.py,sha256=hVJuVqr19UpDcjc6Pit_-3yhGmEHRdW6IlcugFe0hHQ,31782
|
104
|
+
packages/pycloudos/rain/topbar.py,sha256=ZrIHhxvSPpMiiv1yi_tPwPP96DpRwxDkjKmurX0omZU,57189
|
105
|
+
packages/pycloudos/rain/ui.py,sha256=EDE4QeQ3Xf589l4TpFI9FglVctXh0nx4dvCRrpnLnMw,14492
|
106
|
+
packages/pycloudos/rain/wallpaper.py,sha256=mCXF40K0HaKXUOM7Bx3VP2SOe-WY_MsvHUJSDuoNtm8,31075
|
107
|
+
packages/pycloudos/rain/widgets.py,sha256=UQamzv7vmmfRSeoKr7hFD4uNjRNz_2oeWlAPQeyImE4,23775
|
108
|
+
packages/pycloudos/rain/windowmanager.py,sha256=vPPDCi8cywSOGXSVuV2LY5JrwEIuJzHpKMUl3YfEGbM,22206
|
88
109
|
packages/test-app-2/README.md,sha256=AqVgCZ-cwXBuDHFoJdYkAHAuB6SjSjqXQrjhLu0q7cc,964
|
89
110
|
packages/test-app-2/main.py,sha256=24IEuyHSuPWJp2-xYhInUNEWqeueGxAO3NBgHkEgLdQ,1562
|
90
111
|
packages/test-app-2/manifest.json,sha256=dzxPwC-GebvxX9DodLAtdRB0WsZBm204uGGsHbpGhyY,286
|
@@ -119,8 +140,8 @@ test-app/packages/test-app/manifest.json,sha256=_oJaNcbc7RINIQZ8ivzp3I75hUU2pth1
|
|
119
140
|
test-app-2/README.md,sha256=AqVgCZ-cwXBuDHFoJdYkAHAuB6SjSjqXQrjhLu0q7cc,964
|
120
141
|
test-app-2/main.py,sha256=24IEuyHSuPWJp2-xYhInUNEWqeueGxAO3NBgHkEgLdQ,1562
|
121
142
|
test-app-2/manifest.json,sha256=dzxPwC-GebvxX9DodLAtdRB0WsZBm204uGGsHbpGhyY,286
|
122
|
-
clapp_pm-1.0.
|
123
|
-
clapp_pm-1.0.
|
124
|
-
clapp_pm-1.0.
|
125
|
-
clapp_pm-1.0.
|
126
|
-
clapp_pm-1.0.
|
143
|
+
clapp_pm-1.0.44.dist-info/METADATA,sha256=z7tCNiRpukAxgmhGAZD5PwHvSCRC7-3lcIqvkBpigPc,3983
|
144
|
+
clapp_pm-1.0.44.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
145
|
+
clapp_pm-1.0.44.dist-info/entry_points.txt,sha256=7j-3pQVpQfnaVzUV83g7zlCA30ePlnXkhHLAGGz9xrQ,36
|
146
|
+
clapp_pm-1.0.44.dist-info/top_level.txt,sha256=-nbfxZD1zt1LMxzElOZyNhKpdwHhZD-d5ZWrwIArCtE,495
|
147
|
+
clapp_pm-1.0.44.dist-info/RECORD,,
|
@@ -0,0 +1,279 @@
|
|
1
|
+
# 🌩️ PyCloud OS
|
2
|
+
|
3
|
+
Modern, Python tabanlı, macOS benzeri işletim sistemi. Modüler mimarisi, güçlü GUI sistemi ve kapsamlı uygulama ekosistemine sahiptir.
|
4
|
+
|
5
|
+
## ✨ Özellikler
|
6
|
+
|
7
|
+
### 🖥️ Rain UI System
|
8
|
+
- **Dock**: Uygulamalara hızlı erişim, live preview, sürükle-bırak desteği
|
9
|
+
- **Topbar**: Sistem kontrolleri, bildirimler, kullanıcı menüsü
|
10
|
+
- **Desktop**: Özelleştirilebilir masaüstü, wallpaper yönetimi
|
11
|
+
- **Context Menu**: Dosya ve uygulama işlemleri için sağ tık menüleri
|
12
|
+
|
13
|
+
### 📱 Core Applications
|
14
|
+
- **Cloud Files**: Dosya yöneticisi (Finder benzeri)
|
15
|
+
- **Cloud Terminal**: Modern terminal uygulaması
|
16
|
+
- **Cloud Browser**: WebEngine tabanlı web tarayıcısı
|
17
|
+
- **Cloud PyIDE**: Python geliştirme ortamı
|
18
|
+
- **Cloud Settings**: Sistem ayarları ve konfigürasyon
|
19
|
+
- **Cloud Task Manager**: Sistem izleme ve görev yöneticisi
|
20
|
+
|
21
|
+
### 📦 Clapp Package System
|
22
|
+
- **Clapp Store**: Uygulama mağazası ve paket yöneticisi
|
23
|
+
- **App Explorer**: Kurulu uygulamaları keşfetme ve yönetme
|
24
|
+
- **.app Format**: Standart uygulama paket formatı
|
25
|
+
|
26
|
+
### 🛠️ Developer Features
|
27
|
+
- **Modüler Mimari**: Bağımsız core modüller
|
28
|
+
- **Event System**: Modüller arası iletişim
|
29
|
+
- **Plugin Support**: Genişletilebilir uygulama sistemi
|
30
|
+
- **Theme System**: Özelleştirilebilir görünüm
|
31
|
+
|
32
|
+
## 🚀 Kurulum
|
33
|
+
|
34
|
+
### Gereksinimler
|
35
|
+
|
36
|
+
- **Python 3.8+**
|
37
|
+
- **PyQt6** (GUI için)
|
38
|
+
- **psutil** (sistem izleme için)
|
39
|
+
|
40
|
+
### Otomatik Kurulum
|
41
|
+
|
42
|
+
```bash
|
43
|
+
# Repository'yi klonlayın
|
44
|
+
git clone https://github.com/your-username/pycloud-os.git
|
45
|
+
cd pycloud-os
|
46
|
+
|
47
|
+
# Bağımlılıkları otomatik kontrol et ve yükle
|
48
|
+
python setup_deps.py
|
49
|
+
|
50
|
+
# PyCloud OS'i başlat
|
51
|
+
python main.py
|
52
|
+
```
|
53
|
+
|
54
|
+
### Manuel Kurulum
|
55
|
+
|
56
|
+
```bash
|
57
|
+
# Temel bağımlılıkları yükle
|
58
|
+
pip install -r requirements.txt
|
59
|
+
|
60
|
+
# Geliştirme bağımlılıkları (opsiyonel)
|
61
|
+
pip install -r requirements-dev.txt
|
62
|
+
```
|
63
|
+
|
64
|
+
### Bağımlılık Listesi
|
65
|
+
|
66
|
+
#### Gerekli Paketler
|
67
|
+
- `PyQt6>=6.4.0` - GUI framework
|
68
|
+
- `PyQt6-WebEngine>=6.4.0` - Web browser desteği
|
69
|
+
- `psutil>=5.9.0` - Sistem izleme
|
70
|
+
- `requests>=2.28.0` - HTTP istekleri
|
71
|
+
- `Pillow>=9.0.0` - Resim işleme
|
72
|
+
- `pyserial>=3.5` - Seri port desteği
|
73
|
+
- `Flask>=2.2.0` - PyIDE şablonları için
|
74
|
+
|
75
|
+
#### Standart Python Kütüphaneleri
|
76
|
+
- `json`, `os`, `sys`, `pathlib`, `typing`
|
77
|
+
- `datetime`, `logging`, `threading`, `time`
|
78
|
+
- `subprocess`, `shutil`, `zipfile`, `urllib`
|
79
|
+
- `hashlib`, `uuid`, `enum`, `dataclasses`
|
80
|
+
|
81
|
+
## 🎯 Kullanım
|
82
|
+
|
83
|
+
### İlk Başlatma
|
84
|
+
|
85
|
+
1. **Sistem Başlatma**:
|
86
|
+
```bash
|
87
|
+
python main.py
|
88
|
+
```
|
89
|
+
|
90
|
+
2. **Kullanıcı Girişi**: Demo kullanıcısı ile giriş yapın
|
91
|
+
|
92
|
+
3. **Uygulamaları Keşfetme**: Topbar'daki "Uygulamalar" menüsünden
|
93
|
+
|
94
|
+
### Uygulama Yönetimi
|
95
|
+
|
96
|
+
#### Clapp Komut Satırı
|
97
|
+
```bash
|
98
|
+
# Mevcut uygulamaları listele
|
99
|
+
python -m clapp.core list
|
100
|
+
|
101
|
+
# Yeni uygulama yükle
|
102
|
+
python -m clapp.core install <app_package>
|
103
|
+
|
104
|
+
# Uygulama kaldır
|
105
|
+
python -m clapp.core remove <app_id>
|
106
|
+
|
107
|
+
# Sistem durumu kontrol et
|
108
|
+
python -m clapp.core doctor
|
109
|
+
```
|
110
|
+
|
111
|
+
#### App Store UI
|
112
|
+
- Topbar → "☁️ PyCloud" → "App Store"
|
113
|
+
- Kategori bazlı uygulama gezinme
|
114
|
+
- Tek tıkla kurulum ve kaldırma
|
115
|
+
|
116
|
+
### Geliştirme
|
117
|
+
|
118
|
+
#### Yeni Uygulama Oluşturma
|
119
|
+
|
120
|
+
1. **Uygulama Klasörü Oluşturun**:
|
121
|
+
```
|
122
|
+
apps/my_app/
|
123
|
+
├── app.json
|
124
|
+
├── main.py
|
125
|
+
├── icon.png
|
126
|
+
└── README.md
|
127
|
+
```
|
128
|
+
|
129
|
+
2. **app.json Yapılandırması**:
|
130
|
+
```json
|
131
|
+
{
|
132
|
+
"id": "my_app",
|
133
|
+
"name": "My Application",
|
134
|
+
"version": "1.0.0",
|
135
|
+
"description": "My awesome app for PyCloud OS",
|
136
|
+
"entry": "main.py",
|
137
|
+
"exec": "python3 main.py",
|
138
|
+
"requires": ["python3", "pyqt6"],
|
139
|
+
"category": "Utilities"
|
140
|
+
}
|
141
|
+
```
|
142
|
+
|
143
|
+
3. **main.py Launcher**:
|
144
|
+
```python
|
145
|
+
import sys
|
146
|
+
from pathlib import Path
|
147
|
+
sys.path.insert(0, str(Path(__file__).parent.parent.parent))
|
148
|
+
|
149
|
+
from my_app_module import run_app
|
150
|
+
|
151
|
+
if __name__ == "__main__":
|
152
|
+
sys.exit(run_app())
|
153
|
+
```
|
154
|
+
|
155
|
+
#### Core Modül Geliştirme
|
156
|
+
|
157
|
+
```python
|
158
|
+
# core/my_module.py
|
159
|
+
class MyModule:
|
160
|
+
def __init__(self, kernel):
|
161
|
+
self.kernel = kernel
|
162
|
+
self.logger = logging.getLogger("MyModule")
|
163
|
+
|
164
|
+
def initialize(self):
|
165
|
+
# Modül başlatma
|
166
|
+
pass
|
167
|
+
|
168
|
+
def shutdown(self):
|
169
|
+
# Temizlik işlemleri
|
170
|
+
pass
|
171
|
+
|
172
|
+
def init_my_module(kernel):
|
173
|
+
return MyModule(kernel)
|
174
|
+
```
|
175
|
+
|
176
|
+
## 🗂️ Proje Yapısı
|
177
|
+
|
178
|
+
```
|
179
|
+
pycloud-os/
|
180
|
+
├── core/ # Çekirdek modüller
|
181
|
+
│ ├── kernel.py # Ana çekirdek
|
182
|
+
│ ├── fs/ # Dosya sistemi
|
183
|
+
│ ├── users.py # Kullanıcı yönetimi
|
184
|
+
│ ├── process.py # Süreç yönetimi
|
185
|
+
│ └── ...
|
186
|
+
├── rain/ # UI sistem bileşenleri
|
187
|
+
│ ├── ui.py # Ana UI yöneticisi
|
188
|
+
│ ├── desktop.py # Masaüstü
|
189
|
+
│ ├── dock.py # Dock
|
190
|
+
│ ├── topbar.py # Üst çubuk
|
191
|
+
│ └── ...
|
192
|
+
├── cloud/ # Core uygulamalar
|
193
|
+
│ ├── files.py # Dosya yöneticisi
|
194
|
+
│ ├── terminal.py # Terminal
|
195
|
+
│ ├── browser.py # Web tarayıcısı
|
196
|
+
│ └── ...
|
197
|
+
├── clapp/ # Paket yönetim sistemi
|
198
|
+
│ ├── core.py # Paket yöneticisi
|
199
|
+
│ ├── repo.py # Repository yönetimi
|
200
|
+
│ └── ui.py # App Store UI
|
201
|
+
├── apps/ # .app uygulamaları
|
202
|
+
│ ├── cloud_files/
|
203
|
+
│ ├── cloud_terminal/
|
204
|
+
│ └── ...
|
205
|
+
├── system/ # Sistem dosyaları
|
206
|
+
│ ├── config/ # Yapılandırma
|
207
|
+
│ ├── wallpapers/ # Duvar kağıtları
|
208
|
+
│ └── themes/ # Temalar
|
209
|
+
├── requirements.txt # Production bağımlılıkları
|
210
|
+
├── requirements-dev.txt # Development bağımlılıkları
|
211
|
+
├── setup_deps.py # Bağımlılık kurulum scripti
|
212
|
+
└── main.py # Ana başlatıcı
|
213
|
+
```
|
214
|
+
|
215
|
+
## 🧪 Testing
|
216
|
+
|
217
|
+
```bash
|
218
|
+
# Unit testleri çalıştır
|
219
|
+
python -m pytest
|
220
|
+
|
221
|
+
# Coverage raporu
|
222
|
+
python -m pytest --cov=core --cov=rain --cov=cloud
|
223
|
+
|
224
|
+
# Linting
|
225
|
+
python -m flake8 core/ rain/ cloud/
|
226
|
+
python -m black --check .
|
227
|
+
```
|
228
|
+
|
229
|
+
## 📚 Dokümantasyon
|
230
|
+
|
231
|
+
```bash
|
232
|
+
# Sphinx dokümantasyonu oluştur
|
233
|
+
cd docs/
|
234
|
+
make html
|
235
|
+
|
236
|
+
# Dokümantasyonu görüntüle
|
237
|
+
open _build/html/index.html
|
238
|
+
```
|
239
|
+
|
240
|
+
## 🤝 Katkıda Bulunma
|
241
|
+
|
242
|
+
1. Repository'yi fork edin
|
243
|
+
2. Feature branch oluşturun (`git checkout -b feature/amazing-feature`)
|
244
|
+
3. Değişikliklerinizi commit edin (`git commit -m 'Add amazing feature'`)
|
245
|
+
4. Branch'inizi push edin (`git push origin feature/amazing-feature`)
|
246
|
+
5. Pull Request oluşturun
|
247
|
+
|
248
|
+
### Development Setup
|
249
|
+
|
250
|
+
```bash
|
251
|
+
# Development bağımlılıklarını yükle
|
252
|
+
pip install -r requirements-dev.txt
|
253
|
+
|
254
|
+
# Pre-commit hooks kur
|
255
|
+
pre-commit install
|
256
|
+
|
257
|
+
# Code formatting
|
258
|
+
black .
|
259
|
+
isort .
|
260
|
+
```
|
261
|
+
|
262
|
+
## 📄 Lisans
|
263
|
+
|
264
|
+
Bu proje MIT lisansı altında lisanslanmıştır - detaylar için [LICENSE](LICENSE) dosyasına bakın.
|
265
|
+
|
266
|
+
## 🙏 Teşekkürler
|
267
|
+
|
268
|
+
- **PyQt6**: Güçlü GUI framework
|
269
|
+
- **Python Community**: Harika ecosystem
|
270
|
+
- **macOS**: Design inspiration
|
271
|
+
|
272
|
+
## 📞 İletişim
|
273
|
+
|
274
|
+
- **GitHub Issues**: Bug raporları ve feature istekleri
|
275
|
+
- **Discussions**: Genel sorular ve tartışmalar
|
276
|
+
|
277
|
+
---
|
278
|
+
|
279
|
+
**PyCloud OS** - Python ile modern işletim sistemi deneyimi 🌩️
|
File without changes
|
@@ -0,0 +1,193 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
"""
|
3
|
+
PyCloud OS - Ana Başlatıcı
|
4
|
+
Modern, modüler, Python tabanlı işletim sistemi
|
5
|
+
"""
|
6
|
+
|
7
|
+
import sys
|
8
|
+
import os
|
9
|
+
import logging
|
10
|
+
import argparse
|
11
|
+
from pathlib import Path
|
12
|
+
import time
|
13
|
+
|
14
|
+
# PyQt6 import ve gerekli ayarlar
|
15
|
+
try:
|
16
|
+
from PyQt6.QtWidgets import QApplication
|
17
|
+
from PyQt6.QtCore import Qt, QCoreApplication
|
18
|
+
from PyQt6.QtGui import QIcon
|
19
|
+
PYQT_AVAILABLE = True
|
20
|
+
except ImportError as e:
|
21
|
+
print(f"❌ PyQt6 import hatası: {e}")
|
22
|
+
print("💡 Çözüm: pip install PyQt6")
|
23
|
+
PYQT_AVAILABLE = False
|
24
|
+
|
25
|
+
# Proje kök dizinini Python path'ine ekle
|
26
|
+
project_root = Path(__file__).parent
|
27
|
+
sys.path.insert(0, str(project_root))
|
28
|
+
|
29
|
+
def setup_logging():
|
30
|
+
"""Logging sistemini kur"""
|
31
|
+
log_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
32
|
+
logging.basicConfig(
|
33
|
+
level=logging.INFO,
|
34
|
+
format=log_format,
|
35
|
+
handlers=[
|
36
|
+
logging.FileHandler('logs/pycloud.log', encoding='utf-8'),
|
37
|
+
logging.StreamHandler(sys.stdout)
|
38
|
+
]
|
39
|
+
)
|
40
|
+
|
41
|
+
# Log dizinini oluştur
|
42
|
+
Path('logs').mkdir(exist_ok=True)
|
43
|
+
|
44
|
+
def parse_arguments():
|
45
|
+
"""Komut satırı argümanlarını parse et"""
|
46
|
+
parser = argparse.ArgumentParser(description='PyCloud OS')
|
47
|
+
parser.add_argument('--no-splash', action='store_true',
|
48
|
+
help='Splash screen\'i atla')
|
49
|
+
parser.add_argument('--debug', action='store_true',
|
50
|
+
help='Debug modunda başlat')
|
51
|
+
parser.add_argument('--safe-mode', action='store_true',
|
52
|
+
help='Güvenli modda başlat')
|
53
|
+
parser.add_argument('--version', action='version', version='PyCloud OS v0.9.0-dev')
|
54
|
+
|
55
|
+
return parser.parse_args()
|
56
|
+
|
57
|
+
def check_dependencies():
|
58
|
+
"""Gerekli bağımlılıkları kontrol et"""
|
59
|
+
required_packages = ['PyQt6', 'PIL', 'psutil']
|
60
|
+
missing_packages = []
|
61
|
+
|
62
|
+
for package in required_packages:
|
63
|
+
try:
|
64
|
+
__import__(package)
|
65
|
+
except ImportError:
|
66
|
+
missing_packages.append(package)
|
67
|
+
|
68
|
+
if missing_packages:
|
69
|
+
print(f"❌ Eksik paketler: {', '.join(missing_packages)}")
|
70
|
+
print("Lütfen şu komutu çalıştırın: pip install -r requirements.txt")
|
71
|
+
return False
|
72
|
+
|
73
|
+
return True
|
74
|
+
|
75
|
+
def main():
|
76
|
+
"""Ana fonksiyon"""
|
77
|
+
# Argümanları parse et
|
78
|
+
args = parse_arguments()
|
79
|
+
|
80
|
+
# Logging kurulumu
|
81
|
+
setup_logging()
|
82
|
+
logger = logging.getLogger("PyCloudOS")
|
83
|
+
|
84
|
+
logger.info("🌩️ PyCloud OS başlatılıyor...")
|
85
|
+
|
86
|
+
if not PYQT_AVAILABLE:
|
87
|
+
logger.error("PyQt6 bulunamadı. GUI başlatılamıyor.")
|
88
|
+
return 1
|
89
|
+
|
90
|
+
# WebEngine için gerekli ayar
|
91
|
+
QCoreApplication.setAttribute(Qt.ApplicationAttribute.AA_ShareOpenGLContexts)
|
92
|
+
|
93
|
+
# QApplication oluştur
|
94
|
+
app = QApplication(sys.argv)
|
95
|
+
app.setApplicationName("PyCloud OS")
|
96
|
+
app.setApplicationVersion("0.9.0-dev")
|
97
|
+
app.setOrganizationName("PyCloud")
|
98
|
+
|
99
|
+
# Uygulama ikonu
|
100
|
+
icon_path = Path("system/logo/cloud.png")
|
101
|
+
if icon_path.exists():
|
102
|
+
app.setWindowIcon(QIcon(str(icon_path)))
|
103
|
+
|
104
|
+
splash = None
|
105
|
+
kernel = None
|
106
|
+
|
107
|
+
try:
|
108
|
+
# Splash screen göster (eğer devre dışı değilse)
|
109
|
+
if not args.no_splash:
|
110
|
+
try:
|
111
|
+
from boot.splash import show_splash
|
112
|
+
splash = show_splash()
|
113
|
+
if splash:
|
114
|
+
logger.info("✨ Splash screen gösteriliyor")
|
115
|
+
app.processEvents() # Splash'in görünmesini sağla
|
116
|
+
except Exception as e:
|
117
|
+
logger.warning(f"Splash screen başlatılamadı: {e}")
|
118
|
+
|
119
|
+
# Kernel başlat
|
120
|
+
logger.info("🔧 Çekirdek başlatılıyor...")
|
121
|
+
from core.kernel import PyCloudKernel
|
122
|
+
|
123
|
+
kernel = PyCloudKernel(debug_mode=args.debug, safe_mode=args.safe_mode)
|
124
|
+
|
125
|
+
# Splash'e kernel referansı ver
|
126
|
+
if splash:
|
127
|
+
splash.kernel = kernel
|
128
|
+
|
129
|
+
# Kernel başlatma
|
130
|
+
if not kernel.start():
|
131
|
+
logger.error("❌ Çekirdek başlatılamadı")
|
132
|
+
return 1
|
133
|
+
|
134
|
+
logger.info("✅ Çekirdek başarıyla başlatıldı")
|
135
|
+
|
136
|
+
# Rain UI başlat
|
137
|
+
logger.info("🎨 Arayüz başlatılıyor...")
|
138
|
+
from rain.ui import RainUI
|
139
|
+
|
140
|
+
ui = RainUI(kernel)
|
141
|
+
|
142
|
+
# Splash'in minimum süresini bekle ve yumuşak geçiş yap
|
143
|
+
if splash:
|
144
|
+
# Splash'in tamamlanmasını bekle
|
145
|
+
time.sleep(2.0) # Ek 2 saniye bekleme (1 saniyeden artırdık)
|
146
|
+
app.processEvents()
|
147
|
+
splash._finish_splash()
|
148
|
+
|
149
|
+
# Splash kapanana kadar bekle
|
150
|
+
time.sleep(2.5) # Fade out animasyonunun tamamlanması için (1.5 saniyeden artırdık)
|
151
|
+
|
152
|
+
# Ana arayüzü göster
|
153
|
+
ui.show()
|
154
|
+
logger.info("🚀 PyCloud OS hazır!")
|
155
|
+
|
156
|
+
# Event loop başlat
|
157
|
+
exit_code = app.exec()
|
158
|
+
|
159
|
+
# Temizlik
|
160
|
+
logger.info("🔄 Sistem kapatılıyor...")
|
161
|
+
if kernel:
|
162
|
+
kernel.shutdown()
|
163
|
+
|
164
|
+
logger.info("👋 PyCloud OS kapatıldı")
|
165
|
+
return exit_code
|
166
|
+
|
167
|
+
except KeyboardInterrupt:
|
168
|
+
logger.info("⚠️ Kullanıcı tarafından durduruldu")
|
169
|
+
return 0
|
170
|
+
|
171
|
+
except Exception as e:
|
172
|
+
logger.error(f"💥 Kritik hata: {e}")
|
173
|
+
import traceback
|
174
|
+
logger.error(traceback.format_exc())
|
175
|
+
return 1
|
176
|
+
|
177
|
+
finally:
|
178
|
+
# Splash'i temizle
|
179
|
+
if splash:
|
180
|
+
try:
|
181
|
+
splash.close()
|
182
|
+
except:
|
183
|
+
pass
|
184
|
+
|
185
|
+
# Kernel'i temizle
|
186
|
+
if kernel:
|
187
|
+
try:
|
188
|
+
kernel.shutdown()
|
189
|
+
except:
|
190
|
+
pass
|
191
|
+
|
192
|
+
if __name__ == "__main__":
|
193
|
+
sys.exit(main())
|
@@ -0,0 +1,15 @@
|
|
1
|
+
{
|
2
|
+
"name": "pycloudos",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"language": "python",
|
5
|
+
"entry": "main.py",
|
6
|
+
"description": "Python ile yazılmış işletim sistemi",
|
7
|
+
"dependencies": [
|
8
|
+
"flet",
|
9
|
+
"supabase",
|
10
|
+
"requests",
|
11
|
+
"black",
|
12
|
+
"flake8",
|
13
|
+
"mypy"
|
14
|
+
]
|
15
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Cloud Files Test Dosyası
|
2
|
+
=========================
|
3
|
+
|
4
|
+
Bu dosya basitleştirilmiş home yapısını test etmek için oluşturuldu.
|
5
|
+
|
6
|
+
Masaüstü yolu: pycloud_fs/home/Desktop
|
7
|
+
Cloud Files artık bu dosyayı görebilmeli.
|
8
|
+
|
9
|
+
✅ Basitleştirilmiş yapı
|
10
|
+
✅ Tek kullanıcı sistemi
|
11
|
+
✅ Karmaşık klasör yapısı yok
|
@@ -0,0 +1 @@
|
|
1
|
+
Bu bir test dosyasıdır.
|
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
# Test Python dosyası
|
3
|
+
print("Merhaba PyCloud OS!")
|
4
|
+
print("Bu dosya PyIDE ile açılmalı")
|
5
|
+
|
6
|
+
def test_function():
|
7
|
+
"""Test fonksiyonu"""
|
8
|
+
return "PyCloud OS dosya açma testi başarılı!"
|
9
|
+
|
10
|
+
if __name__ == "__main__":
|
11
|
+
print(test_function())
|