نصب لینوکس در ترموکس

saalek110

Well-Known Member
سالک: VNC Viewer 4.9.2.60169 - مدیریت کامپیوتر-لپ‌تاب ویندوز-لینوکس با موبایل!
این خوبه؟
Deepseek:
⚠️ نه! توصیه نمی‌کنم!

Farsroid ممکنه فایل‌های مخرب داشته باشه!
بهتره از منابع معتبر دانلود کنی:

✅ منابع امن برای VNC Viewer:

۱. گوگل پلی (بهترین)

همون لینکی که خودت فرستادی:

```
```

۲. F-Droid (متن‌باز)

```
```

۳. APKPure (اگر گوگل پلی ندارید)

```
```


چرا Farsroid خوب نیست؟

مشکلات Farsroid:

1. ویروس/بدافزار ممکنه داشته باشه
2. نسخه دستکاری شده
3. تبلیغات مخرب
4. اطلاعات شخصی رو می‌دزده
5. ممکنه کار نکنه

---

توصیه امنیتی:

همیشه از این منابع دانلود کن:

· ✅ Google Play (مطمئن‌ترین)
· ✅ F-Droid (متن‌باز و امن)
· ✅ سایت رسمی RealVNC

---

راه درست:

اگر Play Store داری:

۱. برو Google Play
۲. سرچ کن "RealVNC Viewer"
۳. نصبش کن
۴. نسخه رسمی با امضای RealVNC Ltd

اگر Play Store نداری:

۱. برو F-Droid.org
۲. VNC Viewer رو سرچ کن
۳. از اونجا نصب کن

---

⚡ اگر واقعاً می‌خوای از Farsroid دانلود کنی:

حداقل این کارها رو بکن:

۱. بعد نصب، آنتی‌ویروس اسکن کن
۲. مجوزهای غیرعادی نده
۳. اگر مشکوک بود، پاکش کن
```

اما واقعاً ارزش ریسک نداره!

پیشنهاد نهایی:

برو همون Google Play رو باز کن
RealVNC Viewer رو نصب کن
آسان‌ترین و امن‌ترین راهه
 

saalek110

Well-Known Member
سالک: از همون نرم افزار فارسروید استفاده می کنم. حالا چه کار کنم داخل vnc viewer?


مراحل اتصال در VNC Viewer:

۱. برنامه رو باز کن:

· VNC Viewer رو اجرا کن
· احتمالاً اولین بار مجوزهای زیادی می‌خواد
·
۲. وارد کردن آدرس:

Address: localhost
Port: 5901
```

یا

```
Address: localhost:5901
```

۳. اتصال:

· Connect یا اتصال رو بزن
· ممکنه هشدار امنیتی بده (Ignore یا ادامه بده)
· پسورد رو وارد کن (همونی که با vncpasswd گذاشتی)

---

اگر وصل نشدی:

مشکل ۱: VNC سرور روشن نیست

```bash
# در Termux (دبیان):
vncserver -list # ببین روشنه؟
# اگر خاموشه:
vncserver :1 -geometry 1280x720
```

مشکل ۲: پسورد اشتباه

```bash
vncpasswd # پسورد جدید بذار
```

مشکل ۳: برنامه VNC مشکل داره

(متأسفانه فارسروید ممکنه مشکل داشته باشه)

---

️ اقدامات امنیتی ضروری:

بعد از نصب از فارسروید:

```
✅ آنتی‌ویروس روشن کن
✅ مجوزهای عجیب به برنامه نده
✅ اگر برنامه مشکوک بود، فوراً پاکش کن
✅ اطلاعات مهم رو وارد نکن
```

⚡ راه‌حل جایگزین امن:

اگر VNC Viewer کار نکرد، از Termux:X11 استفاده کن:

```bash
# در Termux اصلی:
pkg install x11-repo
pkg install termux-x11-nightly
termux-x11-nightly &

# در دبیان:
export DISPLAY=:0
startxfce4
```

اینطوری نیاز به VNC Viewer نداری!

---

اگر واقعاً می‌خوای ادامه بدی:

مراحل داخل VNC Viewer:

۱. + یا New Connection رو بزن
۲. آدرس: localhost
۳. پورت: 5901
۴. نام: Debian Desktop
۵. Save سپس Connect
۶. پسورد رو بزن

---

نشانه‌های موفقیت:

اگر وصل شدی باید ببینی:

· دسکتاپ دبیان با منو و آیکون
· ممکنه کند باشه (نرمال هست)
· ممکنه رزولوشن درست نباشه
 

saalek110

Well-Known Member
vncserver -list
Couldn't start Xtightvnc; trying default font path.
Please set correct fontPath in the vncserver script.
Couldn't start Xtightvnc process.

سالک: دستور خط اول که بولد کردم را زدم. خطایی که می بینید را داد.در پست بعد یک تلاش دیگر می کنم.
 

saalek110

Well-Known Member
سالک:
apt install tigervnc-standalone-server tigervnc-common -y
این زدم داره یک چیزایی نصب میشه....

Deepseek:
⏳ آره! داره VNC رو نصب می‌کنه!

این خوبه! یعنی داره نسخه واقعی VNC رو نصب می‌کنه.

---

چی داره نصب میشه؟

بسته‌هایی که می‌بینی:

1. tigervnc-standalone-server = سرور VNC اصلی
2. tigervnc-common = فایل‌های مشترک
3. و چند تا کتابخانه دیگه

---

⏱️ چقدر طول می‌کشه؟

· حدود ۱-۳ دقیقه
· بستگی به سرعت اینترنت داره
· حجم کل: ۱۰-۲۰ مگابایت

---

✅ بعد از تموم شدن:

مرحله ۱: تنظیم پسورد

```bash
vncpasswd
# دو بار پسورد دلخواه رو وارد کن
# (مثلاً: 123456)
```

مرحله ۲: شروع VNC

```bash
vncserver :1 -geometry 1280x720
```

مرحله ۳: بررسی

```bash
vncserver -list
# باید ببینی: :1
```

اگر نصب تموم شد:

پیامی شبیه این می‌بینی:

```
Setting up tigervnc-standalone-server (1.12.0-1) ...
Processing triggers for libc-bin (2.36-9) ...
✅ نصب کامل شد!
```

حالا می‌تونی ادامه بدی!
راه سریع بعد از نصب:

```bash
# این ۳ خط رو پشت هم بزن:
vncpasswd # پسورد بذار
vncserver :1 -geometry 1280x720 # VNC رو روشن کن
echo "✅ حالا در VNC Viewer: localhost:5901" # راهنما
```
 

saalek110

Well-Known Member
سالک: نصب شد ، می رویم ادامه کار.

عالی! حالا VNC نصب شده!

مراحل بعدی:

۱. اول پسورد تنظیم کن:

```bash
vncpasswd
```

· دو بار همون پسورد رو وارد کن
· مثلاً: 123456 (ساده بذار تا یادت بمونه)

۲. VNC سرور رو روشن کن:

```bash
vncserver :1 -geometry 1280x720
```

خروجی باید شبیه این باشه:

```
New 'X' desktop is localhost:1

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost:1.log
```

۳. بررسی کن کار می‌کنه:

```bash
vncserver -list
```

باید ببینی: :1

---

حالا برو به VNC Viewer روی گوشیت:

مراحل اتصال:

```
۱. برنامه VNC Viewer رو باز کن
۲. آدرس بزن: localhost
۳. پورت: 5901
۴. Connect بزن
۵. پسوردت رو وارد کن (همونی که با vncpasswd گذاشتی)
```

---

⚡ اگر باز هم مشکل داشت:

راه‌حل جایگزین:

```bash
# اول VNC های قبلی رو ببند
vncserver -kill :1

# دوباره با تنظیمات ساده‌تر شروع کن
vncserver :1 -geometry 800x600 -localhost no
```

یا تست کن با این دستور:

```bash
# ببین پورت 5901 بازه
netstat -tulpn | grep 5901
# اگر دیدی: LISTEN یعنی درسته
```

---

نکته مهم:

هر دو برنامه باید همزمان باز باشن:

· ✅ Termux (که VNC توش روشنه)
· ✅ VNC Viewer (روی خود گوشی)

---

اگر وصل شدی:

· باید دسکتاپ دبیان رو ببینی
· ممکنه صفحه سیاه یا خط فرمان باشه
· می‌تونی برنامه‌ها رو اجرا کنی

برنامه‌هایی که می‌تونی تست کنی:

```bash
# در VNC، ترمینال باز کن و:
xfce4-terminal # ترمینال گرافیکی
firefox # مرورگر
xeyes # چشم متحرک برای تست
```

---

حالا vncpasswd رو بزن و پسورد بذار!
بعدش vncserver :1 رو بزن و با VNC Viewer وصل شو!

پسورد گذاشتی؟ VNC رو روشن کردی؟
 

saalek110

Well-Known Member
سالک:
root@localhost:~# vncserver :1 -geometry 1280x720
A X11 server is already running for display :1 on machine localhost.localdomain.
root@localhost:~#

⚠️ X11 از قبل برای نمایشگر :1 در حال اجراست!

یعنی VNC قبلاً راه‌اندازی شده!

---

دو راه داری:

راه ۱: به همون VNC قبلی وصل شو (ساده‌تر)

```bash
# فقط بررسی کن:
vncserver -list
```

اگر دیدی :1 یعنی VNC روشنه.

حالا در VNC Viewer:

· آدرس: localhost:5901
· پسوردت رو بزن
· باید وصل شی!

---

راه ۲: VNC قبلی رو ببند و جدید باز کن

```bash
# اول ببند:
vncserver -kill :1

# ۲ ثانیه صبر کن:
sleep 2

# دوباره شروع کن:
vncserver :1 -geometry 1280x720
```

---

بررسی وضعیت:

۱. ببین چه پروسه‌هایی در حال اجران:

```bash
ps aux | grep vnc
# یا
ps aux | grep Xtightvnc
```

۲. ببین پورت 5901 بازه:

```bash
netstat -tulpn | grep 5901
# اگر دیدی LISTEN یعنی کار می‌کنه
```

۳. خیلی مهم: پسوردت رو یادت هست؟

اگر پسورد یادت رفت:

```bash
vncpasswd # پسورد جدید بذار
```

---

اقدام فوری:

این دستورها رو پشت هم بزن:

```bash
# قطع VNC قبلی
vncserver -kill :1 2>/dev/null

# صبر
sleep 2

# شروع مجدد
vncserver :1 -geometry 800x600

# بررسی
vncserver -list
```

---

اگر بازهم خطا داد:

ممکنه فایل قفل مانده باشه:

```bash
# فایل‌های قفل رو پاک کن
rm -f /tmp/.X1-lock /tmp/.X11-unix/X1

# دوباره شروع کن
vncserver :1
```

یا با پورت دیگه‌ای شروع کن:

```bash
vncserver :2 -geometry 1280x720
# حالا به پورت 5902 وصل شو
```

---

در VNC Viewer:

اگر از قبل VNC روشنه:

· آدرس: localhost:5901
· پسورد: (همونی که قبلاً گذاشتی)

اگر پورت ۲ استفاده کردی:

· آدرس: localhost:5902

---

اول vncserver -list رو بزن ببین VNC روشنه یا نه؟
اگر روشنه، پسوردت رو وارد کن و وصل شو!
 

saalek110

Well-Known Member
سالک: توضیح بده داریم چه کار می کنیم؟

متأسفم که گیجت کردم!

بیا ساده بگم چه خبره و چرا اینقدر پیچیده شد:

وضعیت فعلی:

چی داریم:

✅ دبیان لینوکس روی Termux نصب شد
✅ VNC سرور نصب شده
✅ اما وصل نمی‌شیم چون یه سری تنظیمات مونده

مشکل اصلی:

VNC مثل ریموت کنترل هست، اما باید هم فرستنده (سرور) و هم گیرنده (Viewer) درست تنظیم باشن.


راه ساده‌تر (پیشنهاد جدید):

بیا VNC رو کنار بذاریم و بریم سراغ روش آسون‌تر:

روش آسون: Termux:X11


# ۱. از دبیان خارج شو
exit

# ۲. در Termux اصلی:
pkg install x11-repo

pkg install termux-x11-nightly

# ۳. اجرا کن:
termux-x11-nightly &

# ۴. وارد دبیان شو:
proot-distro login debian

# ۵. نمایشگر رو تنظیم کن:

export DISPLAY=:0



# ۶. دسکتاپ رو اجرا کن:

startxfce4
```

اینطوری: دسکتاپ توی همین برنامه Termux نشون داده میشه، نه برنامه جدا!

یا اگر خسته‌ای:

یکم استراحت کن و بعد یکی از اینها رو انتخاب کن:

گزینه ۱: ادامه VNC (اگر حوصله داری)

گزینه ۲: بریم Termux:X11 (آسون‌تر)
 

saalek110

Well-Known Member
سالک: از دبیان خارج شدم با exit
اینو زدم:
pkg install x11-repo
گفت نصبه.
اینم زدم:
pkg install termux-x11-nightly
گفت نصبه،
دستور زیر را زدم
termux-x11-nightly
نشناخت.

هوش مصنوعی گفت:
مشکل: termux-x11-nightly اجرا نمی‌شه

احتمالاً مسیر اجرایی درست نیست.

راه‌حل‌ها:

۱. اجرا با مسیر کامل:

```bash
/data/data/com.termux/files/usr/bin/termux-x11-nightly
```

۲. یا پیدا کردن مسیر:

```bash
which termux-x11-nightly
# یا
find /data/data/com.termux/files/usr -name "*termux-x11*" -type f -executable
```

۳. اگر واقعاً نصب شده اما اجرا نمی‌شه:

```bash
# حذف و نصب مجدد
pkg remove termux-x11-nightly
pkg install termux-x11-nightly --reinstall
```

---

⚡ راه سریع‌تر:

استفاده از am (اگر ترمینال روت نیست):

```bash
# اجرای اپ Termux:X11
am start -n com.termux.x11/com.termux.x11.MainActivity
```

یا باز کردن دستی اپ:

۱. از Termux خارج شو
۲. برنامه Termux:X11 رو دستی باز کن (همون apk که قبلاً نصب کردی)
۳. برگرد به Termux
۴. وارد دبیان شو و دستورات رو بزن

---

بررسی نصب:

آیا واقعاً نصب شده؟

```bash
pkg list-installed | grep x11
```

اگر خروجی داشت یعنی نصب شده.

---

پیشنهاد:

اگر باز هم مشکل داشت، این کارها رو کن:

مرحله ۱: از اول شروع کن

```bash
# حذف
pkg remove termux-x11-nightly

# نصب با ریپازیتوری درست
pkg install x11-repo -y
pkg update
pkg install termux-x11-nightly -y
```

مرحله ۲: اجرا با &

```bash
termux-x11-nightly &
```

مرحله ۳: یا برو به دبیان و از VNC استفاده کن

```bash
# وارد دبیان شو
proot-distro login debian

# VNC رو روشن کن (اگر قبلاً نصب شده)
tightvncserver :1 -geometry 800x600
```

---

راه ساده‌تر (اگر خسته‌ای):

برنامه Termux:X11 رو دستی باز کن:

۱. دکمه Home گوشت رو بزن
۲. بین برنامه‌ها بگرد Termux:X11 رو پیدا کن
۳. رویش کلیک کن تا باز بشه
۴. برگرد به Termux معمولی
۵. وارد دبیان شو و export DISPLAY=:0 رو بزن

---

اول which termux-x11-nightly رو بزن ببین مسیرش چیه؟ ️‍♂️
 

saalek110

Well-Known Member
سالک: ~ $ find /data/data/com.termux/files/usr -name "*termux-x11*" -type f -executable
/data/data/com.termux/files/usr/bin/termux-x11
/data/data/com.termux/files/usr/bin/termux-x11-preference
/data/data/com.termux/files/usr/var/lib/dpkg/info/termux-x11-nightly.postinst
~ $

هوش مصنوعی:
پیدا شد! اسمش termux-x11 هست (نه nightly)!

---

حالا اجراش کن:

دستور درست:

```bash
termux-x11
```

یا با & (برای Background):

```bash
termux-x11 &
```

---

مراحل کامل:

۱. در Termux اصلی:

```bash
termux-x11 &
```

۲. صبر کن تا برنامه Termux:X11 باز بشه

(ممکنه خودکار باز بشه یا باید دستی بری و بازش کنی)

۳. در ترمینال جدید Termux:

```bash
# وارد دبیان شو
proot-distro login debian

# نمایشگر رو تنظیم کن
export DISPLAY=:0

# دسکتاپ رو اجرا کن
startxfce4
```

---

اگر termux-x11 هم اجرا نشد:

اجرای مستقیم:

```bash
/data/data/com.termux/files/usr/bin/termux-x11
```

یا بررسی دسترسی:

```bash
ls -la /data/data/com.termux/files/usr/bin/termux-x11
```

---

⚡ راه سریع (کپی کن و اجرا کن):

```bash
# ترمینال ۱:
termux-x11 &

# ترمینال ۲:
proot-distro login debian
export DISPLAY=:0
startxfce4
```

نکته مهم:

حتماً برنامه Termux:X11 رو ببین باز شده یا نه!
اگر باز نشده، دستی برو و اپ Termux:X11 رو اجرا کن.

---

الان termux-x11 & رو بزن و ببین چی میشه!
 

saalek110

Well-Known Member
سالک: من نفهمیدم اون دو نرم افزار دیگه نقششان چی بود چرا دبیان در ترموکس خودش اجرا نمیشه؟

سوال عالی! بذار ساده توضیح بدم:

چرا دبیان مستقیم در Termux اجرا نمی‌شه؟

مشکل اصلی: معماری متفاوت!

```
گوشی تو (اندروید): ARM64 architecture
️ دبیان لینوکس: x86_64 architecture (معمولاً)
```

مثل اینه بخوای نرم‌افزار ماشین رو روی موتور سیکلت نصب کنی!

---

️ نقش این دو نرم‌افزار:

۱. proot-distro (مهمترین)

کارش: ساخت محیط شبیه‌سازی شده برای لینوکس

مثل: ساختن یه اتاق جداگانه توی خونه که قوانین اونجا فرق کنه!

چکار می‌کنه:

```
✅ فایل سیستم جدا می‌سازه
✅ دستورات لینوکس رو ترجمه می‌کنه
✅ محدودیت‌های اندروید رو دور می‌زنه
✅ اما کارایی کامل نداره
```

۲. Termux:X11 (برای نمایش گرافیکی)

کارش: نمایش پنجره‌های گرافیکی لینوکس روی اندروید

مثل: وصل کردن مانیتور کامپیوتر به گوشی!

چکار می‌کنه:

```
✅ X11 سرور رو روی اندروید اجرا می‌کنه
✅ پنجره‌های لینوکس رو نشون میده
✅ ورودی‌های لمسی رو به کلیک تبدیل می‌کنه
```

---

چرا این همه دردسر؟

اندروید نمی‌ذاره:

```bash
# این کارها رو مستقیم انجام بدی:
sudo apt install # نیاز به روت داره
systemctl start # systemd نداره
mount /dev/sda1 # دسترسی مستقیم به فایل سیستم نداره
```

پس proot-distro میاد و:

```bash
# این کارها رو شبیه‌سازی می‌کنه:
fake-sudo apt install # شبیه‌سازی دسترسی روت
fake-systemctl start # شبیه‌سازی systemd
fake-mount /dev/sda1 # شبیه‌سازی mount
```

---

مقایسه:

روش مزایا معایب
Termux تنها سبک، سریع برنامه‌های لینوکس کم
Termux + proot همه برنامه‌های لینوکس کندتر، حجیم‌تر
Termux + proot + X11 دسکتاپ کامل خیلی کند، نیاز به تنظیمات

---

یه مثال ساده:

فرض کن می‌خوای فیلم ایتالیایی ببینی:

· Termux: مثل دوبله فارسی (بعضی چیزا درست درنمیاد)
· proot: مثل زیرنویس فارسی (اصل فیلم با ترجمه)
· X11: مثل سینما (هم تصویر، هم صدا، هم راحت)

---

راه ساده‌تر برای تو:

از proot-distro استفاده کن اما X11 رو فراموش کن!

```bash
# این کافیه:
proot-distro install debian
proot-distro login debian

# حالا توی دبیان:
apt install python3-opencv
python3 -c "import cv2; print('آماده!')"
```

بدون دردسر XFCE و GUI!

---

پس خلاصه:
proot مثل مترجم هست که به دبیان می‌گه چطور توی اندروید کار کنه!
X11 مثل پروژکتوره که تصویر رو نشون میده!

حالا فهمیدی چرا این همه نرم‌افزار لازمه؟
 

saalek110

Well-Known Member
سالک: یک سوال: احتمال اینکه opencv در دبیان اجرا بشه بیشتره یا در ترموکس؟

سوال مهم! جوابش یه تحلیل واقع‌بینانه:

مقایسه OpenCV در Termux vs دبیان:

معیار Termux (بدون دبیان) دبیان (داخل Termux)
نصب ✅ آسان (pip install) ⚠️ متوسط (apt install)
سرعت ✅ سریع ❌ کند (پروت سربار داره)
فضا ✅ کم (50MB) ❌ زیاد (500MB+)
پایداری ⚠️ متوسط ✅ خوب
GUI/تصویر ❌ مشکل دارد ✅ کار می‌کند
دوربین ❌ کار نمی‌کند ⚠️ شاید کار کند
کتابخانه‌ها ❌ محدود ✅ کامل

---

نتیجه واقعی:

اگر می‌خوای:

· پردازش تصاویر ثابت → ✅ Termux کافیه!
· نمایش پنجره (cv2.imshow) → ❌ Termux مشکل داره، دبیان بهتره
· کار با دوربین → ⚠️ هیچکدام مطمئن نیست!
· یادگیری/تمرین → ✅ Termux کافیه!

---

تست فوری:

در Termux اصلی امتحان کن (بدون دبیان):

```bash
pkg install python
pip install opencv-python-headless numpy

# تست بدون GUI
python -c "
import cv2
import numpy as np
# ساخت تصویر مصنوعی
img = np.zeros((100, 200, 3), dtype=np.uint8)
cv2.putText(img, 'OpenCV', (20, 50), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,255,255), 1)
cv2.imwrite('test_termux.jpg', img)
print('✅ در Termux کار می‌کند! فایل test_termux.jpg ساخته شد')
"
```

اگر کار کرد:

دیگه نیاز به دبیان نداری! (برای OpenCV پایه)

---

پیشنهاد نهایی:

مرحله ۱: اول Termux رو تست کن (۵ دقیقه)

اگر برای کارت کافی بود، همینجا ادامه بده!

مرحله ۲: اگر GUI نیاز داشتی:

```bash
# در دبیان نصب کن (با دردسر کمتر)
apt install python3-opencv # از apt نه pip
```

مرحله ۳: اگر دوربین نیاز داشتی:

هیچکدام تضمینی نیست! ممکنه نیاز باشه بری روی کامپیوتر اوبونتو واقعی!

---

⚡ کلام آخر:

برای ۸۰٪ کارهای OpenCV (پردازش تصویر، تشخیص الگو، فیلترها):
✅ Termux عادی کافیه!

برای ۲۰٪ (GUI، نمایش پنجره، تست وبکم):
⚠️ دبیان بهتره اما بازم مشکل داره
 

saalek110

Well-Known Member
داره GTK4 (کتابخانه گرافیکی جدید) نصب می‌کنه!

یعنی داری نسخه مدرن و کامل XFCE می‌گیری!
اما اینهمه کتابخانه گرافیکی برای OpenCV لازم نیست!

---

⚡ تصمیم نهایی وقتش رسیده!

Ctrl+C بزن و این کارو بکن:

```bash
# ۱. قطع نصب XFCE
Ctrl+C

# ۲. نصب OpenCV سریع
apt update
apt install python3 python3-pip python3-venv -y
pip3 install opencv-python numpy

# ۳. تست
python3 -c "
import cv2
import numpy as np
print(' OpenCV نصب شد!')
print('حالا می‌تونی:')
print('۱. پردازش تصاویر')
print('۲. فیلترگذاری')
print('۳. تشخیص لبه')
print('۴. آموزش ماشین')
"

# ۴. یه مثال ساده
img = np.zeros((200, 300, 3), dtype=np.uint8)
cv2.putText(img, 'OpenCV Ready!', (30, 100), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2)
cv2.imwrite('/tmp/test_opencv.jpg', img)
print('✅ تصویر تست در /tmp/test_opencv.jpg ساخته شد')
```

---

دلیل قانع‌کننده:

XFCE برای چی می‌خوای؟

· ❌ OpenCV نیاز به XFCE نداره!
· ❌ GUI برای تمرین ضروری نیست!
· ❌ ۵۰۰MB فضا برای چیز غیرضروری!

OpenCV روی Termux عادی:

```bash
# همین الان می‌تونی بری Termux اصلی و:
pkg install python
pip install opencv-python-headless
# ۲ دقیقه بعد OpenCV داری!
```

---

فکر کن:

ما ۴+ ساعت منتظر XFCE بودیم...
OpenCV توی ۵ دقیقه نصب میشه!

هدف اصلی: یادگیری OpenCV یا نصب XFCE؟

سالک : رفتم برای نصب opencv داخل دبیان:پوسته xfce را رها کردم فعلا
apt install python3-opencv -y
برای نصب opencv
 

saalek110

Well-Known Member
سالک : رفتم برای نصب opencv داخل دبیان:پوسته xfce را رها کردم فعلا
apt install python3-opencv -y

صبر کن. من نمی دونم داخل دبیان کجا کدها را قرار دهم

آهان! مشکلی نیست! راهنمایی می‌کنم:

️ ساختار فایل‌ها در دبیان:

۱. دایرکتوری فعلی:

```bash
pwd # ببین کجایی (معمولاً: /root)
ls # ببین چی داری
```

۲. بهترین جاها برای کدها:

```bash
/home/ # برای کاربران عادی (اما تو root هستی)
/root/ # خانه تو (اینجا خوبه)
/tmp/ # موقتی (پاک میشه)
/var/tmp/ # موقتی ولی ماندگارتر
```

---

پیشنهاد من:

ایجاد دایرکتوری پروژه:

```bash
mkdir ~/opencv_projects # در خانه‌ات
cd ~/opencv_projects # برو توش

# یا
mkdir /root/my_codes
cd /root/my_codes
```

مثلاً:

```bash
# برو به خانه‌ات
cd ~

# یه پوشه برای پروژه‌ها بساز
mkdir python_projects
cd python_projects

# حالا فایل بساز
cat > first.py << 'EOF'
print("اولین کد من در دبیان!")
print("من در پوشه:", __file__)
EOF

# اجرا کن
python3 first.py
```

---

راه ساده‌تر:

همیشه از ~ (خانه) شروع کن:

```bash
# این دستورات رو حفظ کن:
cd ~ # برو خانه
pwd # ببین کجایی
ls -la # همه فایل‌ها رو ببین
```

---

مثال کامل:

مرحله ۱: برو به خانه

```bash
cd /root
```

مرحله ۲: پوشه بساز

```bash
mkdir opencv_learning
cd opencv_learning
```

مرحله ۳: فایل ایجاد کن

```bash
cat > test_opencv.py << 'EOF'
import cv2
import numpy as np

print(" محل فایل: /root/opencv_learning/test_opencv.py")
print(" OpenCV version:", cv2.__version__)

# یه تصویر ساده بساز
img = np.zeros((100, 200, 3), dtype=np.uint8)
cv2.putText(img, "Hello from Debian!", (10, 50),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)

# ذخیره کن
cv2.imwrite("test_image.jpg", img)
print("✅ تصویر ذخیره شد: test_image.jpg")
print(" پوشه فعلی:", __file__)
EOF
```

مرحله ۴: اجرا کن

```bash
python3 test_opencv.py
```

مرحله ۵: ببین چی ساخته شد

```bash
ls -la
```

---

خلاصه مسیرها:

مسیر معنی مناسب برای
/root خانه کاربر root همه چیز
/home/user خانه کاربر عادی اگر کاربر عادی بودی
/tmp موقتی تست‌های سریع
/opt برنامه‌های نصب شده پروژه‌های بزرگ

---

ابزارهای مفید:

nano (ویرایشگر ساده):

```bash
nano my_script.py # باز کن
# بعد از ویرایش: Ctrl+X, سپس Y, سپس Enter
```

مشاهده فایل:

```bash
cat file.py # نمایش محتوا
less file.py | # نمایش صفحه‌به‌صفحه
head -20 file.py # ۲۰ خط اول
```

---

تست فوری:

اینو اجرا کن ببین می‌فهمی کجایی:

```bash
echo "من در این مسیر هستم: $(pwd)"
echo "فایل‌های اینجا:"
ls
echo ""
echo "برای ساخت فایل جدید: nano new_file.py"
echo "یا: cat > new_file.py << 'EOF' ... کدها ... EOF"
```

---

حالا فهمیدی؟ می‌تونی cd ~ بزنی و شروع کنی!
 
آخرین ویرایش:

saalek110

Well-Known Member
عالی! فایل ساخته شد!

حالا فایل test_opencv.py روی دسکتاپ root (/root/) هست!

---

اجرای فایل:

```bash
python3 test_opencv.py
```

اگر OpenCV درست نصب شده باشه، باید ببینی:

```
محل فایل: /root/opencv_learning/test_opencv.py
OpenCV version: 4.x.x
✅ تصویر ذخیره شد: test_image.jpg
پوشه فعلی: /root/test_opencv.py
```

---

بررسی کن:

۱. اگر اجرا شد:

```bash
# ببین تصویر ساخته شد
ls -la test_image.jpg

# اگر می‌خوای ببینی (اگر XFCE کار می‌کنه)
# display test_image.jpg # یا با برنامه دیگه
```

۲. اگر خطا داد:

```bash
# ببین OpenCV نصب شده
python3 -c "import cv2; print('✅ OpenCV هست')"

# یا نصبش کن
apt install python3-opencv -y
```

---

حالا می‌تونی سازماندهی کنی:

ساخت پوشه منظم:

```bash
# برو خانه
cd ~

# پوشه‌های پروژه بساز
mkdir -p projects/opencv/{basics,face_detection,projects}
mkdir -p projects/python/learning

# برو به پوشه OpenCV
cd projects/opencv/basics

# حالا فایل جدید اونجا بساز
cat > first_opencv.py << 'EOF'
import cv2
import numpy as np

print("اولین پروژه OpenCV در پوشه منظم!")
img = np.zeros((200, 300, 3), dtype=np.uint8)
cv2.putText(img, "Organized Code!", (30, 100),
cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)
cv2.imwrite("organized_image.jpg", img)
print("✅ تصویر ذخیره شد")
EOF

# اجرا کن
python3 first_opencv.py
```

---

راهنمایی برای آینده:

ساختار پیشنهادی:

```
/root/
├── projects/
│ ├── opencv/
│ │ ├── basics/ # تمرین‌های پایه
│ │ ├── face_detection/ # تشخیص چهره
│ │ └── projects/ # پروژه‌های کامل
│ └── python/
│ ├── learning/ # یادگیری پایتون
│ └── scripts/ # اسکریپت‌های مفید
├── Desktop/ # دسکتاپ
└── Downloads/ # دانلودها
```

---

الان اقدام کن:

اول فایل تست رو اجرا کن:

```bash
python3 test_opencv.py
```

سپس سازماندهی کن:

```bash
mkdir ~/my_opencv_workspace
cd ~/my_opencv_workspace
```

---

جواب اجرای test_opencv.py چیه؟ کار کرد؟
 

saalek110

Well-Known Member
سالک. : ython3 test_opencv.py محل فایل: /root/opencv_learning/test_opencv.py OpenCV version: 4.10.0 ✅ تصویر ذخیره شد: test_image.jpg پوشه فعلی: /root/test_opencv.py root@localhost:~#


هورا! OpenCV کاملاً کار می‌کنه!

ورژن ۴.۱۰.۰ نصب شده و تصویر رو هم ساخته!

---

بررسی تصویر ساخته‌شده:

```bash
# ببین تصویر ساخته شده
ls -lh test_image.jpg

# اطلاعات فایل
file test_image.jpg

# اگر می‌خوای محتواش رو ببینی (به صورت متن!)
hexdump -C test_image.jpg | head -5
```

---

حالا بریم سراغ پروژه واقعی!

پروژه ۱: تبدیل عکس به خاکستری و ذخیره

```python
cat > grayscale_converter.py << 'EOF'
import cv2
import numpy as np
import os

print(" مبدل تصویر به خاکستری")
print("=" * 50)

# ۱. ساخت تصویر رنگی نمونه (چون عکس واقعی نداریم)
print(" در حال ساخت تصویر نمونه...")
color_image = np.zeros((300, 400, 3), dtype=np.uint8)

# اضافه کردن بعضی رنگ‌ها
color_image[50:150, 50:150] = [255, 0, 0] # آبی
color_image[50:150, 200:300] = [0, 255, 0] # سبز
color_image[150:250, 125:275] = [0, 0, 255] # قرمز

# اضافه کردن متن
cv2.putText(color_image, "COLOR IMAGE", (100, 280),
cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 255, 255), 2)

# ۲. تبدیل به خاکستری
gray_image = cv2.cvtColor(color_image, cv2.COLOR_BGR2GRAY)

# ۳. ذخیره هر دو
cv2.imwrite("color_sample.jpg", color_image)
cv2.imwrite("gray_sample.jpg", gray_image)

# ۴. اطلاعات
print(f"✅ تصاویر ساخته شدند:")
print(f" - رنگ: color_sample.jpg ({color_image.shape})")
print(f" - خاکستری: gray_sample.jpg ({gray_image.shape})")
print(f" سایز: {os.path.getsize('color_sample.jpg')} بایت")

print("\n مفهوم علمی:")
print("تبدیل به خاکستری اولین قدم در پردازش تصویر است")
print("چون پردازش یک کانال (سیاه‌وسفید) ساده‌تر از سه کانال (رنگی) است")
print("=" * 50)
EOF

# اجرا کن
python3 grayscale_converter.py
```

---

مرحله بعدی یادگیری:

حالا که OpenCV کار می‌کنه، این مسیر رو می‌تونی بری:

```
سرفصل‌های OpenCV:
├── ۱. پردازش تصویر پایه
│ ├── تبدیل رنگ‌ها
│ ├── فیلترگذاری
│ ├── تشخیص لبه
│ └── تغییر سایز

├── ۲. تشخیص اشیاء
│ ├── تشخیص چهره (Face Detection)
│ ├── تشخیص چشم
│ └── تشخیص اشیاء ساده

├── ۳. کار با ویدیو
│ ├── خواندن ویدیو
│ ├── پردازش فریم‌ها
│ └── ذخیره ویدیو

└── ۴. پروژه‌های عملی
├── سیستم حضور‌و‌غیاب
├── تشخیص احساسات
└── واقعیت افزوده ساده
```

---

پیشنهاد برای امروز:

بیا این سه پروژه ساده رو انجام بدیم:

```bash
# ایجاد پوشه پروژه
mkdir ~/opencv_day1
cd ~/opencv_day1

# ۱. مبدل خاکستری (همین الان)
# ۲. تشخیص لبه (Edge Detection)
# ۳. ساخت تصویر نویزدار و حذف نویز


و الان:
ورژن ۴.۱۰.۰ OpenCV آماده کاره!

---

می‌خوای کدوم پروژه رو شروع کنیم؟
۱. تشخیص لبه (Canny Edge) ️
۲. فیلترگذاری (Blur, Sharpen)
۳. تشخیص رنگ‌های خاص
 

saalek110

Well-Known Member
hexdump -C test_image.jpg | head -5 00000000 ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 01 |......JFIF......| 00000010 00 01 00 00 ff db 00 43 00 02 01 01 01 01 01 02 |.......C........| 00000020 01 01 01 02 02 02 02 02 04 03 02 02 02 02 05 04 |................| 00000030 04 03 04 06 05 06 06 06 05 06 06 06 07 09 08 06 |................| 00000040 07 09 07 06 06 08 0b 08 09 0a 0a 0a 0a 0a 06 08 |................| root@localhost:~#

دستور فوق با اعداد محتوای فایل عکس را نشان داد.
 

saalek110

Well-Known Member
سالک:عکس را نمی توانیم ببینیم؟

درسته! چون XFCE/GUI کار نمی‌کنه...

اما راه‌های دیگه‌ای برای دیدن/بررسی عکس داریم:

---

راه‌های دیدن عکس بدون GUI:

۱. نمایش اطلاعات فایل (مطمئن‌ترین)

```bash
# ببین فایل اصلاً ساخته شده؟
file test_image.jpg

# سایز فایل
ls -lh test_image.jpg

# اطلاعات کامل
identify test_image.jpg # اگر imagemagick نصب باشه
```

۲. نمایش به صورت متن/اسکی‌آرت!

```bash
# نصب برنامه برای نمایش اسکی‌آرت
apt install caca-utils -y

# نمایش عکس به صورت کاراکترهای رنگی در ترمینال!
cacaview test_image.jpg
# یا
img2txt test_image.jpg # تبدیل به متن
```

۳. نمایش با Python در ترمینال

```python
cat > view_image_terminal.py << 'EOF'
import cv2
import numpy as np

# خواندن عکس
img = cv2.imread('test_image.jpg')
if img is None:
print("❌ عکس پیدا نشد!")
else:
print(f"✅ عکس خوانده شد: {img.shape}")
print(f" سایز: {img.shape[1]}x{img.shape[0]}")
print(f" کانال‌ها: {img.shape[2] if len(img.shape) > 2 else 1}")

# نمایش پیکسل‌های گوشه
print("\n نمونه پیکسل‌ها (گوشه بالا چپ):")
for i in range(min(3, img.shape[0])):
for j in range(min(3, img.shape[1])):
if len(img.shape) == 3:
print(f" ({i},{j}): BGR={img[i,j]}")
else:
print(f" ({i},{j}): Intensity={img[i,j]}")

# ساختن نسخه متنی ساده
print("\n نمایش ساده (مقیاس خاکستری):")
if len(img.shape) == 3:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
else:
gray = img

# مقیاس‌بندی برای نمایش در ترمینال
chars = " .:-=+*#%@" # تاریک به روشن
scale = gray / 255.0 * (len(chars) - 1)

for i in range(0, min(20, gray.shape[0]), 2): # فقط ۲۰ خط
line = ""
for j in range(0, min(50, gray.shape[1]), 2): # فقط ۵۰ ستون
line += chars[int(scale[i, j])]
print(" " + line)
EOF

python3 view_image_terminal.py
```

۴. تبدیل به HTML برای مرورگر

```python
cat > image_to_html.py << 'EOF'
import cv2
import base64
import numpy as np

# خواندن عکس
img = cv2.imread('test_image.jpg')
if img is not None:
# تبدیل به base64
_, buffer = cv2.imencode('.jpg', img)
img_str = base64.b64encode(buffer).decode()

# ساخت HTML
html = f"""
<!DOCTYPE html>
<html>
<head>
<title>OpenCV Image Viewer</title>
<style>
body {{ background: #333; color: white; font-family: monospace; }}
.container {{ text-align: center; margin: 50px; }}
img {{ border: 2px solid #666; max-width: 90%; }}
.info {{ margin: 20px; }}
</style>
</head>
<body>
<div class="container">
<h2> تصویر ساخته شده توسط OpenCV</h2>
<div class="info">
سایز: {img.shape[1]}x{img.shape[0]}<br>
کانال‌ها: {img.shape[2] if len(img.shape) > 2 else 1}
</div>
<img src="data:image/jpeg;base64,{img_str}" alt="OpenCV Image">
<div class="info">
این فایل HTML را در مرورگر باز کن تا عکس را ببینی!<br>
فایل: image_viewer.html
</div>
</div>
</body>
</html>
"""

with open('image_viewer.html', 'w', encoding='utf-8') as f:
f.write(html)

print("✅ فایل HTML ساخته شد: image_viewer.html")
print(" می‌تونی این فایل رو در مرورگر گوشیت باز کنی!")
else:
print("❌ عکس پیدا نشد")
EOF

python3 image_to_html.py
```

---

بهترین راه برای تو:

استفاده از feh (سبک و سریع)

```bash
# نصب feh (نمایشگر عکس ترمینال)
apt install feh -y

# نمایش عکس (اگر X11 کار کنه)
feh test_image.jpg
```

یا ساخت گزارش متنی

```bash
cat > image_report.txt << 'EOF'
گزارش عکس ساخته شده:
فایل: test_image.jpg
سایز: $(file test_image.jpg | cut -d',' -f2)
پیکسل‌ها: $(python3 -c "import cv2; img=cv2.imread('test_image.jpg'); print(f'{img.shape[1]}x{img.shape[0]}')" 2>/dev/null)
تاریخ: $(date)

محتوای تصویر:
این تصویر توسط OpenCV ساخته شده و شامل متن
"Hello from Debian!" می‌باشد.

روش دیدن:
1. انتقال به گوشی و دیدن
2. تبدیل به HTML و باز کردن در مرورگر
3. نمایش با feh اگر X11 کار کند
EOF

cat image_report.txt
```

---

یه روش خلاقانه:

تبدیل عکس به صوت! (به صورت شوخی-جدی)

```python
cat > image_to_sound.py << 'EOF'
import cv2
import numpy as np

print(" تبدیل تصویر به 'صوت' (نمایشی)")
print("=" * 40)

img = cv2.imread('test_image.jpg', cv2.IMREAD_GRAYSCALE)
if img is not None:
height, width = img.shape

print(f"عکس: {width}x{height} پیکسل")
print("نقشه روشنایی (هر عدد = روشنایی پیکسل):")

# نمونه‌گیری
sample = img[::10, ::10] # هر ۱۰ پیکسل یکی

notes = ["do", "re", "mi", "fa", "sol", "la", "si"]

print("\n 'نت'‌های تصویر (بر اساس روشنایی):")
for i in range(min(10, sample.shape[0])):
row_notes = []
for j in range(min(20, sample.shape[1])):
intensity = sample[i, j]
note_index = int(intensity / 255 * (len(notes) - 1))
row_notes.append(notes[note_index])
print(" " + " ".join(row_notes))

print("\n آمار:")
print(f" میانگین روشنایی: {np.mean(img):.1f}")
print(f" حداکثر روشنایی: {np.max(img)}")
print(f" حداقل روشنایی: {np.min(img)}")

# ساخت الگوی ساده
print("\n الگوی باینری ساده (آستانه ۱۲۸):")
binary = img > 128
for i in range(min(15, binary.shape[0])):
row = ""
for j in range(min(40, binary.shape[1])):
row += "1" if binary[i, j] else "0"
print(" " + row)
else:
print("❌ عکس پیدا نشد")
EOF

python3 image_to_sound.py
```

---

پس ما می‌تونیم عکس رو "بررسی" کنیم، حتی اگر نتونیم "ببینیمش"!
مثل نابینایی که می‌تونه چیزی رو لمس کنه و بفهمه چیه! ️‍️

کدوم روش رو می‌پسندی؟
 

saalek110

Well-Known Member
سالک: با دستور
apt install feh -y
فه را نصب کردم و دستور
feh test_image.jpg

ولی
feh test_image.jpg feh ERROR: Can't open X display. It *is* running, yeah? root@localhost:~#


هوش مصنوعی:


درسته! feh نیاز به X11 داره که کار نمی‌کنه!

بیا از روش‌های بدون نیاز به GUI استفاده کنیم:

---

بهترین روش‌های ترمینال-محور:

۱. نمایش با tiv (تصویر در ترمینال)

```bash
# نصب tiv
apt install libjpeg-dev libpng-dev libtool autoconf automake -y
git clone GitHub - radare/tiv: terminal image viewer
cd tiv
./autogen.sh
./configure
make
make install
cd ..

# حالا نمایش بده
tiv test_image.jpg -w 70 # عرض ۷۰ کاراکتر
```

๒. نمایش با chafa (خیلی خوبه!)

```bash
# نصب chafa
apt install chafa -y

# نمایش عکس در ترمینال
chafa test_image.jpg

# یا با سایز مشخص
chafa --size=80x40 test_image.jpg
```

۳. نمایش با viu (ساده و سریع)

```bash
# نصب viu
apt install cargo -y # نیاز به Rust داره
cargo install viu

# نمایش
viu test_image.jpg
```

---

اگر نصب برنامه‌ها مشکل داشت:

استفاده از Python خالص:

```python
cat > terminal_image_viewer.py << 'EOF'
import cv2
import numpy as np
import sys

def image_to_ascii(image_path, width=70):
"""تبدیل عکس به اسکی‌آرت در ترمینال"""

# خواندن عکس
img = cv2.imread(image_path)
if img is None:
print(f"❌ نمی‌توان عکس را خواند: {image_path}")
return

# تبدیل به خاکستری
if len(img.shape) == 3:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
else:
gray = img

# تغییر سایز برای نمایش در ترمینال
height = int(gray.shape[0] * width / gray.shape[1] / 2) # تقسیم بر ۲ چون کاراکترها بلندترن
resized = cv2.resize(gray, (width, height))

# کاراکترهای مختلف برای سطوح روشنایی
chars = " .'`^\",:;Il!i><~+_-?][}{1)(|\\/tfjrxnuvczXYUJCLQ0OZmwqpdbkhao*#MW&8%B@$"

print(f"️ تصویر: {image_path}")
print(f" سایز اصلی: {gray.shape[1]}x{gray.shape[0]}")
print(f" سایز ترمینال: {width}x{height}")
print("=" * (width + 10))

# تبدیل به اسکی‌آرت
ascii_art = ""
for row in resized:
for pixel in row:
index = int(pixel / 255 * (len(chars) - 1))
ascii_art += chars[index]
ascii_art += "\n"

print(ascii_art)
print("=" * (width + 10))
print(" هر کاراکتر نشان‌دهنده میزان روشنایی پیکسل است")
print(" '.' = تاریک، '@' = روشن")

if __name__ == "__main__":
if len(sys.argv) > 1:
image_to_ascii(sys.argv[1], width=70)
else:
image_to_ascii("test_image.jpg", width=70)
EOF

# اجرا کن
python3 terminal_image_viewer.py test_image.jpg
```

---

️ اگر می‌خوای واقعاً عکس رو ببینی:

روش انتقال به گوشی:

```bash
# ۱. ببین عکس کجاست
pwd
ls -lh test_image.jpg

# ۲. از Termux خارج شو
exit

# ۳. در Termux اصلی فایل رو پیدا کن
# عکس در این مسیر هست:
# /data/data/com.termux/files/home/.proot-distro/installed-rootfs/debian/root/
# یا
find /data/data/com.termux/files -name "test_image.jpg" 2>/dev/null

# ۴. کپی کن به جایی که بتونی ببینیش
cp [مسیر بالا] /sdcard/Download/
# حالا برو گالری گوشیت و عکس رو ببین!
```

---

یه روش خلاقانه دیگه:

تبدیل به متن و ارسال به خودت:

```python
cat > share_image_info.py << 'EOF'
import cv2
import numpy as np

def analyze_image(image_path):
img = cv2.imread(image_path)
if img is None:
return "❌ عکس پیدا نشد"

# اطلاعات
info = f"""
گزارش تحلیل تصویر:
فایل: {image_path}
سایز: {img.shape[1]}x{img.shape[0]}
کانال‌ها: {img.shape[2] if len(img.shape) > 2 else 1}
رنگ‌میانگین: BGR({np.mean(img[:,:,0]):.0f}, {np.mean(img[:,:,1]):.0f}, {np.mean(img[:,:,2]):.0f})

هیستوگرام ساده:
"""

# تحلیل ساده
if len(img.shape) == 3:
for i, color in enumerate(['آبی', 'سبز', 'قرمز']):
hist = cv2.calcHist(, [i], None, [4], [0, 256])
info += f" {color}: {'█' * int(hist[0]/np.max(hist)*20)} ({int(hist[0])})\n"

info += f"\n حجم فایل: لطفاً دستور 'ls -lh {image_path}' را بزن\n"
info += " برای دیدن عکس: آن را به /sdcard/ کپی کن\n"

return info

# اجرا
print(analyze_image("test_image.jpg"))

# ذخیره در فایل برای اشتراک
with open("image_analysis.txt", "w", encoding="utf-8") as f:
f.write(analyze_image("test_image.jpg"))

print("\n✅ گزارش در image_analysis.txt ذخیره شد")
EOF

python3 share_image_info.py
```

---

پس ما نمی‌تونیم عکس رو "ببینیم" ولی می‌تونیم:
✅ اطلاعاتش رو بخونیم
✅ به اسکی‌آرت تبدیلش کنیم
✅ تحلیلش کنیم
✅ به گوشی منتقلش کنیم

کدوم روش رو دوست داری؟
 

saalek110

Well-Known Member
سالک: پس اگر نمی توانیم عکس را ببینیم چرا می گفتی برویم سراغ opencv?

هوش مصنوعی:
سوال بسیار به جایی پرسیدی!
بذار صادقانه و منطقی جواب بدم:
اشتباه من بود!

ببخشید که گفتم "برو OpenCV" در حالی که GUI کار نمی‌کرد...

سالک: امروز ۱۰ بهمن است و اینترنت خیلی بد است، کار سخت بود ولی تمرین خوبی شد.
ممکن است بعدا بتوانم پوسته دبیان را راه بیاندازم.
 

جدیدترین ارسال ها

بالا