انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => انجمن عمومی => نویسنده: norouzi90 در 05 خرداد 1401، 09:50 ق‌ظ

عنوان: شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 05 خرداد 1401، 09:50 ق‌ظ
با سلام و احترام،
بر روی JWM کار می کنم، برای کانفیگ این winow manager معمولا فایل jwmrc. را بکار می برند.
لطفا در صورت امکان در موارد زیر مرا راهنمایی بفرمایید:
 
۱- مثلا من برای قرار دادن آیتم برنامه thunar در پانل از این دستور استفاده می کنم.( عکس 1)
و مشکلی از این بابت ندارم. ولی برای برنامه هایی که بایستی در قسمت system tray قرار بگیرند ،
مثلا برای زبان ، ولوم صدا و نشانگر اتصال اینترنت ، نمی دانم دستورات مرتبط با اینها را چگونه
بکار بگیرم؟ کد دستوری xml. را برای اینکار بلد نیستم.چون نمی خواهم Button درست کنم تا با کلیک
بر روی آن مثلا آیکن ولوم صدا نشان داده شود، بلکه می خواهم با ورود کاربر به دسکتاپ این آیتم بصورت اتوماتیک وار اجرا شود.

۲- در OPENBOX ، یک فایلی بنام autostart وجود دارد که دستوراتی را که می خواهیم حین ورود کاربر به محیط دسکتاپ بصورت اتوماتیک اجرا شود ،
در آن قرار می دادیم ، در JWM بنظرتان من چکار بکنم؟ بایستی از همین فایل jwmrc. استفاده کنم؟ به چه نحوی؟ یا اینکه روش دیگری وجود دارد؟

۳- یک مشکلی که من در JWM دارم و در OPENBOX نداشتم این است که وقتی پنجره باز شده مربوط به یک برنامه را با ماوس می خواهم جابه جا کنم،
وقتی پنجره برنامه در لبه های دسکتاپ قرار می گیرد ، پنجره برنامه شروع به لرزیدن می کند. آیا راهکاری برای این مورد دارید؟
فقط در لبه ها اینطوری می شود ولی اگر پنجره برنامه را کوچکتر کنم تا به لبه ها نخورد مشکلی نیست.

۴- بطور کلی با کلیک راست بر روی دسکتاپ ، منوی راست باز می شود، آیا در برخی window manager ها مانند JWM علت خاصی دارد که این عمل را بصورت پیش فرضر
بعهده کلیک چپ گذاشته اند؟ آیا راهی وجود دارد که این عمل را دوباره بدهیم به کلیک راست؟

حالا نگویید که باز هم نوروزی یه دونه window manager پیدا کرده و گذاشته جلوش و اومده سر وقتمان و بخواد اذیتمان بکنه!!
عنوان: پاسخ : شخصی سازی JWM
ارسال شده توسط: َUxmlai-ad در 05 خرداد 1401، 05:42 ب‌ظ
نیازی به اون & بعد دستور اجرای تونار نیست
اون پایین تر رو نگاه کن ببین خودش آیکون ها رو معرفی کرده یا نه اگه کرده نیازی نیست مسیر کامل آیکون رو بنویسی

من برای مدیریت زبان ورودی از ibus استفاده می کنم. وقتی نصبش  کردم و تنظیمش  کردم اون پایین کنار ساعت نشونش  داد
عنوان: پاسخ : شخصی سازی JWM
ارسال شده توسط: norouzi90 در 08 خرداد 1401، 11:51 ب‌ظ
نیازی به اون & بعد دستور اجرای تونار نیست
اون پایین تر رو نگاه کن ببین خودش آیکون ها رو معرفی کرده یا نه اگه کرده نیازی نیست مسیر کامل آیکون رو بنویسی

من برای مدیریت زبان ورودی از ibus استفاده می کنم. وقتی نصبش  کردم و تنظیمش  کردم اون پایین کنار ساعت نشونش  داد

با تشکر،
برای آیتم Volume در پانل چکار می نمایید؟
در مورد برنامه هایی مانند gparted و timeshift , synaptic که برای اجرا شدن نیازمند مجوز مدیریتی می باشند،
در سیستم من اگر دستور پایینی را در قسمت autostart مربوط به فایل کانفیگ window manager ها ننویسم، کادر محاوره ای
برای پرسیدن پسورد باز نمی شود و بدین علت این برنامه ها در محیط گرافیکی ام باز و اجرا نمی شوند. نمی دانم بغیر از این
روش آیا روش بهتری وجود دارد؟ آیا بنظرتان بایستی بسته خاصی نصب نمایم؟

/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 &
عنوان: پاسخ : شخصی سازی JWM
ارسال شده توسط: norouzi90 در 09 خرداد 1401، 01:17 ق‌ظ
من چون به window manager ها علاقه دارم سعی دارم ، کار در این زمینه را برای کاربرانی که در این زمینه علاقمندند و یا کسانیکه احتمالا بعلت ضعف سخت افزاری در مضیقه هستند، تا جایی که بتوانم راحت تر بکنم.
چند روزی است که روی این موضوعی که در اینجا عنوان کرده ام دارم تحقیق می کنم. فکری به ذهنم رسیده که بنظرم تا حد زیادی اگر امکانپذیر باشد، کار را برای کاربران در این زمینه راحت تر بکند. یکی از دغدغه های اصلی در زمینه کار بر روی window manager ها برای شخصی سازی برای استفاده روزمره گی ، این است که معمولا دسکتابی که می خواهیم بر روی آن کار بکنیم نیازمند panel می باشد. پانل خالی هم که چندان بدرد نمی خورد ، بایستی نشانگرهایی مانند زبان و ولوم صدا و کانکشن اینترنت
 بر روی پانل داشته باشند. بغیر از اینها در مورد background هم معمولا بجای استفاده از تنها یک صفحه رنگی و یا سیاه سفید بیروح بصورت پیش فرض بهتر است از نرم افزار هایی مانند feh یا nitrogen استفاده نماییم و اما برای استفاده از اینها باز هم محتاج فایل کانفیگ window manager و یا در صورت ارایه توسط توسعه دهندگان،  فایل autostart هستیم. ( در بعضی window manager ها برای این فایل نامهای دیگری مانند start و غیره استفاده می شود).
 
(هر چند که می شود در بعضی موارد محدودی مثلا برای گزینه زبان از ibus استفاده شود که دیگر نیاز به این کارها نباشد ولی من بیشتر ترجیحم  بر روی fbxkb است.)
 
مشکل وقتی دو چندان می شود که بعضی window manager ها ، اصلا فایلی بنام autostart ندارند و بایستی مانند ویندو ومنیجر JWM ، این دستورات را بر روی همان فایل کانفیگ که نامش  برای این window manager هست jwmrc. ،نوشته شود ، که حساب کنید که یک فایل داده برای نوشتن و کانفیگ root menu و Tray و IconPath و Key bindings و ...
 نوشتن این همه مطلب در یک فایل و یا نوشتن یک فایل اسکریپت و ارجا آن در این فایل ، شاید روش معمول قضیه باشد. آنهم در صورتیکه شما بتوانید روش درست آنرا مخصوصا در مورد برنامه هاییکه بصورت autostart بخواهند اجرا کنید را بیابید که شاید در بعضی window manager ها نیازمند جستجوی وسیع و در اکثر موارد نیازمند خلاقیت از طرف کاربر است.

 روش میانبریکه به ذهن من رسید این بود که در لینوکس مینت و ابونتو و خانواده های آنها نرم افزاری بنام autostart application وجود دارد . کار این نرم افزار همانطور که بهتر از من می دانید این است که آن برنامه یا کامندی را که می خواهید در هنگان لاگین کاربر  به حساب کاربری خود اجرا شود را از طریق این نرم افزار به سیستم معرفی می نمایید. روش کار در لینوکس مینت تا آنجایی که من فهمیدم این بود که در مسیر   config./~ ، پوشه ای بنام autostart است.
  فایلی که از طریق برنامه autostart application ایجاد می شود ، در داخل این پوشه قرار می گیرد.
  چون در دبیان stable ، متاسفانه این برنامه تا جایی که اطلاع دارم نیست من رفتم از لینوکس مینت بصورت لایو استفاده کردم و برنامه ها و دستورات موردنظرم را که می خواهم در هنگام لاگین کاربر اجرا شود ، از طریق این برنامه و محتویات این پوشه استفاده کردم. البته بعد از کپی در سیستم خودم در مسیر  /config/autostart/‍‍‍~ ، مالکیت مربوط به فایل ها  را
  به کاربر جاری انتقال دادم و همچنین فایل ها را به حالت اجرایی درآوردم.
 
 این روش بدون مشکل در openbox کار می کند و دیگر نیازی به پوشه autostart مربوط به openbox نیست ولی در window manager های زیر که امتحان کردم جواب نداد:
  fluxbox - jwm -lwm -icewm - miwm - pekwm - stumpwm - twm - aewm++ - evilwm - flwm - openbsd-cwm - w9wm
 
  در این زمینه امتحان دیگری که کردم این بود که فایل های مربوطه که از autostart application در لینوکس مینت بدست آورده بودم ، اینبار برداشتم و در مسیر
  دیگری یعنی /etc/xdg/autostart/ قرار دادم و باز هم در openbox جواب داد ولی در window manager های دیگر نه.
  نمی دانم مشکلم کجاست؟
عنوان: پاسخ : شخصی سازی JWM
ارسال شده توسط: َUxmlai-ad در 10 خرداد 1401، 07:21 ب‌ظ
نیازی به اون & بعد دستور اجرای تونار نیست
اون پایین تر رو نگاه کن ببین خودش آیکون ها رو معرفی کرده یا نه اگه کرده نیازی نیست مسیر کامل آیکون رو بنویسی

من برای مدیریت زبان ورودی از ibus استفاده می کنم. وقتی نصبش  کردم و تنظیمش  کردم اون پایین کنار ساعت نشونش  داد

با تشکر،
برای آیتم Volume در پانل چکار می نمایید؟
در مورد برنامه هایی مانند gparted و timeshift , synaptic که برای اجرا شدن نیازمند مجوز مدیریتی می باشند،
در سیستم من اگر دستور پایینی را در قسمت autostart مربوط به فایل کانفیگ window manager ها ننویسم، کادر محاوره ای
برای پرسیدن پسورد باز نمی شود و بدین علت این برنامه ها در محیط گرافیکی ام باز و اجرا نمی شوند. نمی دانم بغیر از این
روش آیا روش بهتری وجود دارد؟ آیا بنظرتان بایستی بسته خاصی نصب نمایم؟

/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 &

برای صدا هنوز کاری نکردم  ;D
این به حاطر اینه که jwm اصلا autostart نداره!‌  ولی یک راه که به ذهنم می رسه اینه که می تونید یک فایل دیگه بسازید و توی اون بگید که اون دستور رو اجرا کنه و اون رو ابتدای فایل .jwmrc معرفی کنید
البته حتما لازم نیست همه پیکربندی توی یک فایل باشه میشه بقیه رو توی یک فایل یا چند تا دیگه هم قرار بدید برای اینکار از include استفاده کنید برای اجرای اون دستور بعد از لاگین احتمالا این روش جواب بده اگه دبیان دارید می تونید فایل
/etc/jwm/debian-menuرو یه نگاه کنید و تگ <JWM> هم یادتون نره

احتمالا راهنمای خودش رو خوندید:
https://joewing.net/projects/jwm/config.html (https://joewing.net/projects/jwm/config.html)
عنوان: پاسخ : شخصی سازی JWM
ارسال شده توسط: norouzi90 در 10 خرداد 1401، 11:37 ب‌ظ
با سپاس و تشکر فراوان از دوست گلم آقای Aminavy  .
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 02 شهریور 1401، 11:30 ب‌ظ
۳- یک مشکلی که من در JWM دارم و در OPENBOX نداشتم این است که وقتی پنجره باز شده مربوط به یک برنامه را با ماوس می خواهم جابه جا کنم،
وقتی پنجره برنامه در لبه های دسکتاپ قرار می گیرد ، پنجره برنامه شروع به لرزیدن می کند. آیا راهکاری برای این مورد دارید؟

در این زمینه به نتایجی رسیدم.
در فایل   jwmrc.  قسمتی بدین صورت وجود دارد:

    <!-- The snap mode (none, screen, or border) -->
    <SnapMode distance="10">border</SnapMode>


و در تعریف این قسمت چنین آمده است:

SnapMode
The snap mode. The default is "border". Valid values are "none"
(for no snapping), "screen" (for snapping to the edge of the
screen), and "border" (for snapping to the borders of windows and
the screen). An optional attribute, distance, specifies the distance
for snapping. The default is 5. Valid values are between 1 and 32
inclusive.

حالت پیش‌فرض  border می‌باشد ، اگر من گزینه را بگذارم روی none این قضیه برایم حل می‌شود و دیگر  پنجره نمی لرزد.
ولی قضیه بهمین جا ختم نمی‌شود و یک مورد بخصوصی وجود دارد . چندین سال قبل یکی از توزیع‌های گنو/لینوکسی را نصب کرده بودم و داشتم امتحانش می‌کردم ، ولی نامش یادم نمی‌آید ، یک مشکل خاصی با این توزیع داشتم و آن این بود که موقع حرکت دادن پنجره ها ، پنجره ها می لرزیدند، این برایم حسابی مورد کلافه کننده ای بود و بنظرم می‌رسید که این بایستی یک باگ بوده باشد. بعد از کلی تحقیق ، آخر سر این را فهمیدم که این مورد باگ نمی باشد ، بلکه می‌توان گفت که این یک افکت مانندی است که باعث می‌شود که پنجره در حین حرکت حالت موج گونه و مواجی داشته باشد و راهکارش هم نصب بسته ای بود یا یک تنظیمی  بود ، خلاصه یادم نمی آید، بعد از نصب آن بسته یا انجام آن تنظیم ، پنجره ها در حین حرکت الکی و اعصاب خوردکن نمی لرزیدند و  بصورت مواج گونه زیبایی  حرکت می‌کردند.
هر چند که با none کردن این تنظیم در jwm ، دیگر پنجره هایم نمی لرزند ولی به احتمال قوی این بایستی یک افکتی باشد. ولی نمی‌دانم بایستی چه بسته ای نصب یا چه تنظیمی انجام دهم تا شاهد عمل‌کرد درست این گزینه بر روی سیستمم باشم!!
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 18 شهریور 1401، 04:10 ب‌ظ
بلاخره موضوع مربوط به SnapMode را حل کردم.
 از کامپوزیتور های xcompmgr  و همچنین compton دیگر استفاده نکردم و اینبار بجای آن‌ها  از
کامپوزیتور picom استفاده کردم ، بعد از نصب picom این دستور را در داخل فایل  jwmrc.  بکار بردم:

<StartupCommand>picom</StartupCommand>
و مشکل حل شد.لبه های پنجره ها دیگر نمی لرزند و توصیف دقیق حالت SnapMode  به این صورت می باشد:

همانطور که می‌بینید ، سه تا حالت دارد  none , screen,  border  .

screen :
وقتی که پنجره ای را جابجا می‌کنید با رسیدن لبه های پنجره جابجا شده به فاصله تعریف شده توسط distance  از کناره های صفحه مونیتور( یا همان screen )، پنجره جابجا شده آن لبه اش می‌رود می چسبد به کناره های screen  ، انگار که یک آهنربا جذبش کرده باشد.

border :
وقتی که پنجره ای را جابجا می‌کنید با رسیدن لبه های پنجره جابجا شده به فاصله تعریف شده توسط distance  از کناره های صفحه مونیتور یا لبه های پنجره های دیگر، پنجره جابجا شده آن لبه اش می‌رود می چسبد به کناره های screen  یا پنجره دیگر، انگار که یک آهنربا جذبش کرده باشد.


( فاصله مجاز برای  distance ، بین 1 و 32 می باشد.)
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 25 آذر 1401، 07:42 ب‌ظ
قسمت اول:

(تجربیات شخصی من از debian + jwm ، البته با الطافی که دوستان ارجمند تاکنون داشته اند.)

۱- نصب دبیان بصورت مینیمال.

۲- افزودن contrib  و  non-free  به  etc/apt/sources.list/

۳-
# apt update
۴-
# apt install firmware-linux
۵-
# reboot
۶-
# apt install firmware-realtek
۷-
# dpkg-reconfigure tzdata
نکته: اگر در هنگام نصب دبیان کشور دیگری را انتخاب کرده باشید و الان بخواهید آنرا تغییر بدهید تا ساعت شما مطابق، ساعت رسمی کشورتان باشد.

۸-
# apt install lightdm
۹-
# apt install jwm
۱۰-
# apt install synaptic
۱۱-
# apt install sudo
۱۲-
#  usermod -aG sudo username
نکته: کاربر اصلی اتان را عضو گروه sudo نمایید.

۱۳-
# reboot
۱۴-
$ sudo apt installpcmanfm    gvfs-backends    network-manager-gnome    firefox-esr    geany    alsa-utils    alsamixergui    pnmixer    fbxkb    mtp-tool    feh    gimp    xfce4-terminal 
gnome-screenshot    chromium    timeshift    gnome-disk-utility    virt-manager   parole 
libreoffice    libreoffice-gtk3    transmission    screenfetch    brasero    evince
packagekit-command-not-found    command-not-found    xpdf    net-tools    file-roller 
gparted    catfish    x11-xserver-utils     xscreensaver    lxappearance 
oxygen-icon-theme    gnome-brave-icon-theme    gnome-calculator    onboard    gdebi 
aria2  vlc  fsarchiver  netselect-apt  neofetch  tumbler    ffmpegthumbnailer    picom    eog    fonts-farsiweb    hplip-gui
photocollage

نکته: یا اینکه این بسته ها را در synaptic  نصب نمایید.
$ sudo synaptic
۱۵-
$ sudo  gnome-disks
automount  کردن پارتیشن های موردنظر و همچنین تنظیم  Identify As  توسط  نرم‌افزار Disks ،
از قسمت  Edit Mount Options  مربوط به این نرم افزار.

۱۶-
$ sudo reboot
۱۷-
$ mkdir -p ~/Pictures/wallpaper
نکته: عکس هایی را که می‌خواهید، بعنوان background در دسکتابتان قرار بگیرند، در این پوشه قرار بدهید.

۱۸- فایل ir.png  را که قبلاً تهیه کرده و تغییر ابعاد داده اید، به محل زیر کپی کنید:
(اینکار برای نشان دادن علامت پرچم موردنظرمان در system tray در پانل، برای زبان موردنظرمان انجام می گیرد.)
/usr/share/fbxkb/images
۱۹-
show list all users at login with lightdm
$ sudo nano /etc/lightdm/lightdm.conf
then  uncomment:
greeter-hide-users=false
۲۰- ایجاد کاربر جدید:
$ sudo adduser new-username
۲۱- Automatic login  برای کاربر موردنظر:
$ sudo passwd -d  usernameحذف پسورد برای کاربر موردنظر.

۲۲- اگر سیستم را با این روش نصب کرده باشید، در پانل در قسمت system tray ، در آیکن network ، لیستی را که نشان می دهد، اسامی wireless ها را نشان می‌دهد ولی برای wired چیزی را نشان نمی‌دهد که مثلاً وصل است و یا قطع است و یا بشود با آن wired را disconnect کرد.
و وقتی که بر روی علامت network در پانل کلیک راست می‌کنیم و گزینه connection information
را می‌زنیم این آلارم می آید:
Error displaying connection  information
No valid active connections found!

برای حل این موضوع از این روش استفاده می کنیم:
$ sudo nano /etc/network/interfaces
تمامی قسمت‌ها را کامنت یا پاک کنید ولی بغیر از این قسمت:
source /etc/network/interfaces.d/*
دلیل اینکه این سطر را کامنت یا پاک نکردیم این بود که اگر خواستیم یک تنظیمی توی
etc/network/interfaces.d  بگذاریم، قابل استفاده باشد. بعد از save کردن تغییرات در فایل،
کامپیوتر را restart می کنیم.
نکته: حتی برای حل شدن مشکل بالایی می‌توانید فایل etc/network/interfaces را حذف کنید یا کل محتویاتش را پاک کنید ولی بعلت دلیل ذکر شده در بالا، بهتر است که متن قسمت source باقی بماند.

۲۳-
sudo reboot
۲۴-
اگر بخواهید، بجای میزکار از window manager استفاده کنید،در برخی از window manager ها، مانند
openbox بصورت پیش‌فرض منو پویا اختصاص داده شده است. ولی در برخی دیگر مانند jwm منو بصورت استاتیک می باشد.
برای استفاده از منو پویا برای jwm ، به این آدرس بروید:

https://github.com/chiku/mjwm (https://github.com/chiku/mjwm)

این برنامه را نصب میکنیم.( بهتر است که اگر می توانید، ابتدا این برنامه را بصورت فایل deb. دربیاورید و به این صورت در سیستمتان نصب نمایید تا این برنامه، توسط پکیج منیجرتان قابل شناسایی باشد.)
بعد از نصب mjwm ، این دستور را در ترمینال بزنید:
$ mjwm
با زدن این دستور برای شما می‌نویسد که فایلی با نام jwmrc-mjwm.  در دایرکتوری خانگی تان ایجاد شده است.

نکته: اگر هم دوست دارید، میتوانید از برنامه‌های دیگری مانند menumaker و ... هم بجای این برنامه mjwm استفاده کنید.
اگر  دوست داشته باشید از menumaker استفاده کنید به یکی از این دو آدرس مراجعه کنید:

https://menumaker.sourceforge.net/ (https://menumaker.sourceforge.net/)

https://sourceforge.net/projects/menumaker/ (https://sourceforge.net/projects/menumaker/)

نکته: البته مجبور نیستید که از برنامه‌های بالا و یا هر برنامه دیگر برای ایجاد منو پویا استفاده کنید، در این حالت بایستی از روش منو ایستاتیک استفاده نمایید و خودتان در این حالت بایستی فایل jwmrc. ، برای این مورد ویرایش نمایید.

۲۵- با فرمان زیر فایل system.jwmrc  را به داخل دایرکتوری خانگی کاربر کپی می نماییم.
$ cp /etc/jwm/system.jwmrc  ~/
۲۶- با فرمان زیر، نام این فایل را به jwmrc.  تغییر نام می دهیم.
$ mv ~/system.jwmrc  ~/.jwmrc
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: Dragon- در 25 آذر 1401، 09:22 ب‌ظ
فکر کنم توی مرحله ۱۲ اون sudo که اول دستور گذاشتید زیادیه. چون دارید با کاربر روت دستکرات رو اجرا می‌کنید و کاربر روت به sudo نیازی نداره.
در ضمن لازم نیست کاربر روت عضو گروه sudo باشه.

پیکربندی پیش‌فرض pam که sudo هم از اون استفاده می‌کنه، به کاربر روت اجازه می‌ده بدون وارد کردن رمزش، بتونه از sudo استفاده کنه.
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 26 آذر 1401، 05:56 ب‌ظ
با تشکر، اصلاح گردید.
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 27 آذر 1401، 06:34 ب‌ظ
قسمت دوم:

محتوای فایل etc/jwm/system.jwmrc/  بصورت اورجینال و بدون ویرایش:

<?xml version="1.0"?>
<JWM>

    <!-- The root menu. -->
    <RootMenu onroot="12">
        <Include>/etc/jwm/debian-menu</Include>
        <Program icon="terminal.png" label="Terminal">xterm</Program>
        <Separator/>
        <Program icon="lock.png" label="Lock">
            xlock -mode blank
        </Program>
        <Separator/>
        <Restart label="Restart" icon="restart.png"/>
        <Exit label="Exit" confirm="true" icon="quit.png"/>
    </RootMenu>

    <!-- Options for program groups. -->
    <Group>
        <Option>tiled</Option>
        <Option>aerosnap</Option>
    </Group>
    <Group>
        <Class>Pidgin</Class>
        <Option>sticky</Option>
    </Group>
    <Group>
        <Name>xterm</Name>
        <Option>vmax</Option>
    </Group>
    <Group>
        <Name>xclock</Name>
        <Option>drag</Option>
        <Option>notitle</Option>
    </Group>

    <!-- Tray at the bottom. -->
    <Tray x="0" y="-1" height="25" autohide="off">

        <TrayButton icon="/usr/share/jwm/jwm-red.svg">root:1</TrayButton>
        <Spacer width="2"/>
        <TrayButton label="_">showdesktop</TrayButton>
        <Spacer width="2"/>

        <Pager labeled="true"/>

        <TaskList maxwidth="256"/>

        <Dock/>
        <Clock format="%H:%M"><Button mask="123">exec:xclock</Button></Clock>

    </Tray>

    <!-- Visual Styles -->
    <WindowStyle>
        <Font>Sans-9:bold</Font>
        <Width>4</Width>
        <Height>21</Height>
        <Corner>3</Corner>
        <Foreground>#FFFFFF</Foreground>
        <Background>#555555</Background>
        <Outline>#000000</Outline>
        <Opacity>0.5</Opacity>
        <Active>
            <Foreground>#FFFFFF</Foreground>
            <Background>#0077CC</Background>
            <Outline>#000000</Outline>
            <Opacity>1.0</Opacity>
        </Active>
    </WindowStyle>
    <TrayStyle group="true" list="all">
        <Font>Sans-9</Font>
        <Background>#333333</Background>
        <Foreground>#FFFFFF</Foreground>
        <Outline>#000000</Outline>
        <Opacity>0.75</Opacity>
    </TrayStyle>
    <TaskListStyle>
      <Font>Sans-9</Font>
      <Active>
        <Foreground>#FFFFFF</Foreground>
        <Background>#555555</Background>
      </Active>
      <Foreground>#FFFFFF</Foreground>
      <Background>#333333</Background>
    </TaskListStyle>
    <PagerStyle>
        <Outline>#000000</Outline>
        <Foreground>#555555</Foreground>
        <Background>#333333</Background>
        <Text>#FFFFFF</Text>
        <Active>
            <Foreground>#0077CC</Foreground>
            <Background>#004488</Background>
        </Active>
    </PagerStyle>
    <MenuStyle>
        <Font>Sans-9</Font>
        <Foreground>#FFFFFF</Foreground>
        <Background>#333333</Background>
        <Outline>#000000</Outline>
        <Active>
            <Foreground>#FFFFFF</Foreground>
            <Background>#0077CC</Background>
        </Active>
        <Opacity>0.85</Opacity>
    </MenuStyle>
    <PopupStyle>
        <Font>Sans-9</Font>
        <Foreground>#000000</Foreground>
        <Background>#999999</Background>
    </PopupStyle>

    <!-- Path where icons can be found.
         IconPath can be listed multiple times to allow searching
         for icons in multiple paths.
      -->
    <IconPath>/usr/share/icons/gnome/256x256/actions</IconPath>
    <IconPath>/usr/share/icons/gnome/256x256/apps</IconPath>
    <IconPath>/usr/share/icons/gnome/256x256/categories</IconPath>
    <IconPath>/usr/share/icons/gnome/256x256/devices</IconPath>
    <IconPath>/usr/share/icons/gnome/256x256/emblems</IconPath>
    <IconPath>/usr/share/icons/gnome/256x256/mimetypes</IconPath>
    <IconPath>/usr/share/icons/gnome/256x256/places</IconPath>
    <IconPath>/usr/share/icons/gnome/256x256/status</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/actions</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/animations</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/apps</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/categories</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/devices</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/emblems</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/mimetypes</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/places</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/status</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/actions</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/apps</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/categories</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/devices</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/emblems</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/mimetypes</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/places</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/status</IconPath>
    <IconPath>/usr/share/icons/hicolor/256x256/apps</IconPath>
    <IconPath>/usr/share/icons/hicolor/256x256/mimetypes</IconPath>
    <IconPath>/usr/share/icons/hicolor/32x32/actions</IconPath>
    <IconPath>/usr/share/icons/hicolor/32x32/apps</IconPath>
    <IconPath>/usr/share/icons/hicolor/32x32/categories</IconPath>
    <IconPath>/usr/share/icons/hicolor/32x32/devices</IconPath>
    <IconPath>/usr/share/icons/hicolor/32x32/emblems</IconPath>
    <IconPath>/usr/share/icons/hicolor/32x32/mimetypes</IconPath>
    <IconPath>/usr/share/icons/hicolor/32x32/status</IconPath>
    <IconPath>/usr/share/icons/hicolor/512x512/apps</IconPath>
    <IconPath>/usr/share/icons/hicolor/512x512/mimetypes</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/actions</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/apps</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/categories</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/devices</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/emblems</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/mimetypes</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/places</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/status</IconPath>
    <IconPath>/usr/share/icons</IconPath>
    <IconPath>/usr/share/pixmaps</IconPath>
    <IconPath>
        /usr/local/share/jwm
    </IconPath>

    <!-- Virtual Desktops -->
    <!-- Desktop tags can be contained within Desktops for desktop names. -->
    <Desktops width="4" height="1">
        <!-- Default background. Note that a Background tag can be
              contained within a Desktop tag to give a specific background
              for that desktop.
         -->
        <Background type="solid">#111111</Background>
    </Desktops>

    <!-- Double click speed (in milliseconds) -->
    <DoubleClickSpeed>400</DoubleClickSpeed>

    <!-- Double click delta (in pixels) -->
    <DoubleClickDelta>2</DoubleClickDelta>

    <!-- The focus model (sloppy or click) -->
    <FocusModel>sloppy</FocusModel>

    <!-- The snap mode (none, screen, or border) -->
    <SnapMode distance="10">border</SnapMode>

    <!-- The move mode (outline or opaque) -->
    <MoveMode>opaque</MoveMode>

    <!-- The resize mode (outline or opaque) -->
    <ResizeMode>opaque</ResizeMode>

    <!-- Key bindings -->
    <Key key="Up">up</Key>
    <Key key="Down">down</Key>
    <Key key="Right">right</Key>
    <Key key="Left">left</Key>
    <Key key="h">left</Key>
    <Key key="j">down</Key>
    <Key key="k">up</Key>
    <Key key="l">right</Key>
    <Key key="Return">select</Key>
    <Key key="Escape">escape</Key>

    <Key mask="A" key="Tab">nextstacked</Key>
    <Key mask="A" key="F4">close</Key>
    <Key mask="A" key="#">desktop#</Key>
    <Key mask="A" key="F1">root:1</Key>
    <Key mask="A" key="F2">window</Key>
    <Key mask="A" key="F10">maximize</Key>
    <Key mask="A" key="Right">rdesktop</Key>
    <Key mask="A" key="Left">ldesktop</Key>
    <Key mask="A" key="Up">udesktop</Key>
    <Key mask="A" key="Down">ddesktop</Key>

</JWM>


محتوای فایل jwmrc. ، ویرایش شده توسط خودم:

<?xml version="1.0"?>
<JWM>

    <!-- The root menu. -->
    <RootMenu onroot="12">
<!--        <Include>/etc/jwm/debian-menu                  -->

<Include>$HOME/.jwmrc-mjwm</Include>

<Program label="Terminal" icon="terminal.png">xfce4-terminal</Program>

        <Separator/>

        <Program label="Reset-Menu-Itemes" icon="edit-redo.png">
            rm ~/.jwmrc-mjwm
            jwm -reload
            mjwm
            jwm -reload
        </Program>
       
<!--        <Restart label="Restart" icon="view-refresh.png"/>       -->
       
        <Separator/>
       
        <Program label="xscreensaver" icon="xscreensaver.png">
xscreensaver-command -activate
</Program>

    <Program label="suspend" icon="stop.png">
systemctl suspend
</Program>
       
        <Exit label="Exit" confirm="true" icon="system-log-out.png"/>
       
<Program label="خاموش" icon="system-shutdown.png">
/usr/sbin/shutdown now
</Program>

    </RootMenu>

    <!-- Options for program groups. -->
    <Group>
        <Option>tiled</Option>
        <Option>aerosnap</Option>
    </Group>
    <Group>
        <Class>Pidgin</Class>
        <Option>sticky</Option>
    </Group>
    <Group>
        <Name>xterm</Name>
        <Option>vmax</Option>
    </Group>
    <Group>
        <Name>xclock</Name>
        <Option>drag</Option>
        <Option>notitle</Option>
    </Group>

    <!-- Tray at the bottom. -->
    <Tray x="0" y="-1" height="30" autohide="off">

        <TrayButton icon="/usr/share/jwm/jwm-red.svg">root:1</TrayButton>
        <Spacer width="2"/>
        <TrayButton label="_">showdesktop</TrayButton>
       
<TrayButton icon="system-file-manager.png" popup="File Manager PCManFM">exec:pcmanfm</TrayButton>
<TrayButton icon="synaptic_32x32.xpm" popup="Synaptic Package Manager">exec:synaptic-pkexec</TrayButton>
<TrayButton icon="xfce-terminal.png" popup="Xfce Terminal">exec:xfce4-terminal</TrayButton>
<TrayButton icon="accessories-text-editor.png" popup="Geany">exec:geany</TrayButton>
<TrayButton icon="libreoffice-writer.png" popup="LibreOffice Writer">exec:libreoffice --writer</TrayButton>
<TrayButton icon="default16.png" popup="Firefox ESR">exec:firefox</TrayButton>
<TrayButton icon="web-browser.png" popup="Chromium Web Browser">exec:chromium</TrayButton>
<TrayButton icon="applets-screenshooter.png" popup="Screenshot">exec:gnome-screenshot -i</TrayButton>
       
        <Spacer width="2"/>

        <Pager labeled="true"/>

        <TaskList maxwidth="256"/>

        <Dock/>
        <Clock format="%H:%M"><Button mask="123">exec:xclock</Button></Clock>

    </Tray>

    <!-- Visual Styles -->
    <WindowStyle>
        <Font>System-ui</Font>
        <Width>5</Width>
        <Height>30</Height>
        <Corner>3</Corner>
        <Foreground>#FFFFFF</Foreground>
        <Background>#555555</Background>
        <Outline>#000000</Outline>
        <Opacity>1.0</Opacity>
        <Active>
            <Foreground>#FFFFFF</Foreground>
            <Background>#0077CC</Background>
            <Outline>#000000</Outline>
            <Opacity>1.0</Opacity>
        </Active>
    </WindowStyle>
    <TrayStyle group="false" list="desktop">
        <Font>Sans-9</Font>
        <Background>#333333</Background>
        <Foreground>#FFFFFF</Foreground>
        <Outline>#000000</Outline>
        <Opacity>0.9</Opacity>
    </TrayStyle>
    <TaskListStyle>
      <Font>Sans-9</Font>
      <Active>
        <Foreground>#FFFFFF</Foreground>
        <Background>#555555</Background>
      </Active>
      <Foreground>#FFFFFF</Foreground>
      <Background>#333333</Background>
    </TaskListStyle>
    <PagerStyle>
        <Outline>#000000</Outline>
        <Foreground>#555555</Foreground>
        <Background>#7f6000</Background>
        <Text>#FFFFFF</Text>
        <Active>
            <Foreground>#0077CC</Foreground>
            <Background>#004488</Background>
        </Active>
    </PagerStyle>
    <MenuStyle>
        <Font>Sans-9</Font>
        <Foreground>#FFFFFF</Foreground>
        <Background>#333333</Background>
        <Outline>#000000</Outline>
        <Active>
            <Foreground>#FFFFFF</Foreground>
            <Background>#0077CC</Background>
        </Active>
        <Opacity>0.9</Opacity>
    </MenuStyle>
    <PopupStyle>
        <Font>Sans-9</Font>
        <Foreground>#000000</Foreground>
        <Background>#999999</Background>
    </PopupStyle>

    <!-- Path where icons can be found.
         IconPath can be listed multiple times to allow searching
         for icons in multiple paths.
      -->
    <IconPath>/usr/share/icons/gnome/256x256/actions</IconPath>
    <IconPath>/usr/share/icons/gnome/256x256/apps</IconPath>
    <IconPath>/usr/share/icons/gnome/256x256/categories</IconPath>
    <IconPath>/usr/share/icons/gnome/256x256/devices</IconPath>
    <IconPath>/usr/share/icons/gnome/256x256/emblems</IconPath>
    <IconPath>/usr/share/icons/gnome/256x256/mimetypes</IconPath>
    <IconPath>/usr/share/icons/gnome/256x256/places</IconPath>
    <IconPath>/usr/share/icons/gnome/256x256/status</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/actions</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/animations</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/apps</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/categories</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/devices</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/emblems</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/mimetypes</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/places</IconPath>
    <IconPath>/usr/share/icons/gnome/32x32/status</IconPath>
   
<IconPath>/usr/share/icons/gnome/22x22/apps</IconPath>
    <IconPath>/usr/share/synaptic/pixmaps</IconPath>
    <IconPath>/usr/share/firefox-esr/browser/chrome/icons/default</IconPath>
   
    <IconPath>/usr/share/icons/gnome/scalable/actions</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/apps</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/categories</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/devices</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/emblems</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/mimetypes</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/places</IconPath>
    <IconPath>/usr/share/icons/gnome/scalable/status</IconPath>
    <IconPath>/usr/share/icons/hicolor/256x256/apps</IconPath>
    <IconPath>/usr/share/icons/hicolor/256x256/mimetypes</IconPath>
    <IconPath>/usr/share/icons/hicolor/32x32/actions</IconPath>
    <IconPath>/usr/share/icons/hicolor/32x32/apps</IconPath>
    <IconPath>/usr/share/icons/hicolor/32x32/categories</IconPath>
    <IconPath>/usr/share/icons/hicolor/32x32/devices</IconPath>
    <IconPath>/usr/share/icons/hicolor/32x32/emblems</IconPath>
    <IconPath>/usr/share/icons/hicolor/32x32/mimetypes</IconPath>
    <IconPath>/usr/share/icons/hicolor/32x32/status</IconPath>
    <IconPath>/usr/share/icons/hicolor/512x512/apps</IconPath>
    <IconPath>/usr/share/icons/hicolor/512x512/mimetypes</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/actions</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/apps</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/categories</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/devices</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/emblems</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/mimetypes</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/places</IconPath>
    <IconPath>/usr/share/icons/hicolor/scalable/status</IconPath>
    <IconPath>/usr/share/icons</IconPath>
    <IconPath>/usr/share/pixmaps</IconPath>
    <IconPath>
        /usr/local/share/jwm
    </IconPath>

    <!-- Virtual Desktops -->
    <!-- Desktop tags can be contained within Desktops for desktop names. -->
    <Desktops width="4" height="1">
        <!-- Default background. Note that a Background tag can be
              contained within a Desktop tag to give a specific background
              for that desktop.
         -->
        <Background type="solid">#111111</Background>
    </Desktops>
   
<!-- <StartupCommand></StartupCommand-->

<StartupCommand>xrandr --size 1152x864</StartupCommand>
    <StartupCommand>feh --bg-fill --randomize ~/Pictures/wallpaper/*</StartupCommand>
    <StartupCommand>pnmixer</StartupCommand>
    <StartupCommand>(sleep 3s ; nm-applet)</StartupCommand>
    <StartupCommand>(sleep 4s ; fbxkb)</StartupCommand>
    <StartupCommand>/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1</StartupCommand>
    <StartupCommand>xdg-user-dirs-update</StartupCommand>
    <StartupCommand>rm ~/.config/user-dirs.dirs</StartupCommand>
    <StartupCommand>xdg-user-dirs-update</StartupCommand>
    <StartupCommand>picom</StartupCommand>
    <StartupCommand>xscreensaver -no-splash</StartupCommand>
<StartupCommand>rm ~/.jwmrc-mjwm ; jwm -reload ; mjwm ; jwm -reload</StartupCommand>
<!-- <StartupCommand>compton --vsync opengl-swc --backend glx</StartupCommand> -->
   

    <!-- Double click speed (in milliseconds) -->
    <DoubleClickSpeed>400</DoubleClickSpeed>

    <!-- Double click delta (in pixels) -->
    <DoubleClickDelta>2</DoubleClickDelta>

    <!-- The focus model (sloppy or click) -->
    <FocusModel>sloppy</FocusModel>

    <!-- The snap mode (none, screen, or border) -->
    <SnapMode distance="10">none</SnapMode>

    <!-- The move mode (outline or opaque) -->
    <MoveMode coordinates="off" delay="0">opaque</MoveMode>

    <!-- The resize mode (outline or opaque) -->
    <ResizeMode coordinates="off">outline</ResizeMode>

    <!-- Key bindings -->
    <Key key="Up">up</Key>
    <Key key="Down">down</Key>
    <Key key="Right">right</Key>
    <Key key="Left">left</Key>
    <Key key="h">left</Key>
    <Key key="j">down</Key>
    <Key key="k">up</Key>
    <Key key="l">right</Key>
    <Key key="Return">select</Key>
    <Key key="Escape">escape</Key>
   
<Key key="Print">exec: gnome-screenshot</Key>
<Key key="Super_L">root:1</Key>

    <Key mask="A" key="Tab">nextstacked</Key>
    <Key mask="A" key="F4">close</Key>
    <Key mask="A" key="#">desktop#</Key>
    <Key mask="A" key="F1">root:1</Key>
    <Key mask="A" key="F2">window</Key>
    <Key mask="A" key="F10">maximize</Key>
    <Key mask="A" key="Right">rdesktop</Key>
    <Key mask="A" key="Left">ldesktop</Key>
    <Key mask="A" key="Up">udesktop</Key>
    <Key mask="A" key="Down">ddesktop</Key>

</JWM>






عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 27 آذر 1401، 08:35 ب‌ظ
قسمت سوم:

( شرح فایل   jwmrc. )

وقتی که  jwm  را با فرمان
sudo apt install jwm
نصب می کنید، یک فایلی در مسیر  etc/jwm/system.jwmrc/   ایجاد می شود. که یک کپی از این فایل را در دایرکتوری خانگی تمامی کاربران کپی می‌کنیم و اسم آنرا به jwmrc.  تغییر می دهیم.
در این قسمت مروری خواهیم داشت بر محتویات این فایل.

اگر  نمی‌خواهید از میزکار استفاده کنید و بجایش از  window manager استفاده کنید، از هر
window manager ای که می‌خواهید استفاده کنید، مطالب زیر مهم هستند، بایستی در مورد آن‌ها اطلاعاتی کسب نمایید:

۱-آیا این window manager بصورت پیش فرض تنها برای استفاده از صفحه‌کلید طراحی و بهینه سازی شده یا اینکه با موس هم کاربرد دارد؟
۱- آیا از منو پویا استفاده می‌کند یا از منو استاتیک؟
۲- آیا بصورت پیش‌فرض پانل ارایه می‌کند و یا اینکه بایستی خودتان یکی نصب کنید؟
۳- تنظیمات root menu  در کدام فایل قرار دارد؟
۴- تنظیمات autostart  برنامه‌ها در کدام فایل قرار دارد؟
۵- میانبرهای صفحه کلید، تنظیمات دسکتاب، دسکتاب مجازی، تنظیمات پنجره برنامه‌ها و ...
در کدام فایل قرار دارد؟

مثلاً در openbox ، منو پویا ارایه شده ولی پانل پیش‌فرض ارایه نشده و برای تنظیمات دیگر برای هر کدام فایل تنظیمات جداگانه در نظر گرفته شده است.( یکی از نقاط قوت بسیار مهم openbox وجود منو پویا می باشد، وجود یا نبود پانل اصلاً موضوع مهمی نیست، در مخازن چندین پانل وجود دارد که یکی از آن‌ها را می‌توانید به سادگی با قرار دادن آن در فایل autostart استفاده نمایید.)

ولی در jwm ، منو پویا ارایه نشده و منو بصورت استاتیک می‌باشد، در قسمت قبل توضیح دادم که برای این مورد چکار بکنید. ولی بصورت پیش‌فرض یک پانل برایش در نظر گرفته شده است.
و همچنین نکته مهم این است که برای jwm ، تنها این فایل بعنوان فایل کانفیگ در نظر گرفته شده است، پس هر کاری که بخواهید در این زمینه بکنید در داخل این فایل بایستی انجام بدهید.پس مثل openbox ، چندین فایل مجزا برای کانفیگ وجود ندارد.


مفاهیم اولیه:

JWM : Joe s Window Manager

تعریف: JWM  ،  یک مدیر پنجره برای سیستم پنجره X11  است.

آپشن ها:
برخی از آپشن ها را می‌توانید بهمراه jwm بکار ببرید.

مثلا:
$ jwm -h
display X-  : صفحه نمایش  X  را برای استفاده تنظیم می کند.
exit- : : از jwm  خارج شوید.
f file- : از فایل پیکربندی مشخص شده استفاده کنید.
h-  : نمایش صفحه راهنما
p-  : پس از انجام تغییرات در فایل پیکربندی از این مورد استفاده کنید تا مطمئن شوید که هیچ خطایی وجود ندارد.
reload-  : بارگیری مجدد منو ( Reload Menu )
restart- : مجدداً JWM را راه اندازی کنید.( Restart JWM )
v- : نمایش اطلاعات نسخه

نکته:
از مهمترین آپشن ها، آپشن p- می باشد، سعی کنید که بعد از هر تغییری که در فایل jwmrc. ، می‌دهید، از این آپشن به صورت زیر استفاده کنید تا ببینید که خطایی را نشان می‌دهد یا نه؟

$ jwm -p
الان می‌رویم بسراغ فایل  و محتویات آن و بهینه سازی آن برای استفاده روزمره امان.


نکته:
در جاهایی که نیاز به کامنت یاتوضیح بوده از این علایم استفاده گردیده است:
<!--       -->
نکته:
<!-- The root menu. -->root menu  یا منوی ریشه، راه اصلی شروع برنامه‌ها در jwm است و همچنین راهی برای راه اندازی مجدد  ( restart ) و یا خروج از مدیر پنجره است.

نکته:
<RootMenu onroot="12">با کلیک راست یا چپ موس ( بسته به تعریفی که کرده‌اید ) بر روی دسکتاب یا کلیک بر روی آرم JWM بر روی پانل می‌توانید، این منو را باز کنید.
“onroot=”1  : با کلیک چپ موس، منو ریشه (root menu) باز می شود.
“onroot=”2  : با کلیک کلید وسطی موس یا فشردن اسکرول موس، منو ریشه (root menu) باز می شود.
“onroot=”3  : با کلیک راست موس، منو ریشه (root menu) باز می شود.
“onroot=”4  : با کلیک اسکرول به جلو یا عقب، منو ریشه (root menu) باز می شود.
“onroot=”12  : این حالت پیش‌فرض است و در این حالت می‌توان با کلیک چپ موس یا کلیک کلید وسطی موس یا فشردن اسکرول موس، منو ریشه (root menu) باز می شود.

نکته:
<Include>path of file</Include>می‌توان محتویات یک فایل را در ساختار منو قرار داد. خود آن فایل دیگر بایستی با یک تگ
”JWM” شروع شود، یعنی

<JWM>
محتوای فایل
<JWM/>

در اینجا مثلاً محتویات فایل  etc/jwm/debian-menu/ را بوسیله این کد در داخل فایل jwmrc. قرار دارد و اگر نگاه کنید به root menu ، آیتمی بنام Debian دارد، ولی چون من به این آیتم و زیر مجموعه های آن نیازی ندارم، این خط کد را از فایل jwmrc.  به حالت کامنت درآورده ام.(حتی اگر دوست داشته باشید، می‌توانید حذفش کنید.)

نکته:

<Include>$HOME/.jwmrc-mjwm</Include>(این کد را من اضافه کرده ام.)
من چون از برنامه mjwm استفاده می‌کنم تا منوی برنامه‌ها را بصورت پویا در root menu ایجاد گردد، این خط کد را به jwmrc. اضافه می نمایم.

نکته:
 برای اضافه کردن برنامه‌هایی که دوست دارید به root menu ، از این کد استفاده کنید:
<Program label=" " icon=" ">run command for program</Program>
بجای run command for program ، از دستوری که با بکارگیری آن برنامه موردنظر اجرا می شود، استفاده نمایید.


نکته:
<Separator/> این تگ به سادگی یک خط به root menu قرار میدهد که امکان تقسیم منو را فراهم می کند.

نکته:
label
برچسب برای نمایش، این نامی است که در root menu برای برنامه موردنظر نشان داده می شود.


نکته:
        <Program icon="lock.png" label="Lock">
            xlock -mode blank
        </Program>

این منو از root menu در دبیان کار نخواهد کرد چون بسته ای بنام xlock در دبیان نداریم، بجایش مثلاً می‌توانیم از بسته i3lock استفاده کنیم و بجای کد بالایی بنویسیم:

        <Program icon="lock.png" label="Lock">
            i3lock
        </Program>

اگر از این دستور می‌خواهید استفاده کنید، نیاز است که بسته i3lock را نصب کنید.


نکته:
 البته من از هیچکدام از کدهای lock بالایی استفاده نکردم، و بجای آن‌ها ابتدا به قسمت
Startup Command این کد را اضافه کردم:
<StartupCommand>xscreensaver -no-splash</StartupCommand>
چونکه بدون این کد، در اجرای منوهای suspend و xscreensaver دچار مشکل می شوم، مثلاً اصولی آنست که در هنگام suspend کردن، کامپیوتر خاموش شود ولی در هنگام روشن شدن کامپیوتر، اول رمز عبور پرسیده شود.
بدون اضافه کردن این کد به قسمت Startup Command، در suspend بعد از روشن شدن کامپیوتر رمز عبور پرسیده نمی شود، و بدون رمز عبور وارد سیستم می شد.( حتما توجه کنید، این کد را من به قسمت Startup Command در فایل jwmrc. اضافه کرده ام نه به قسمت مثلا Root Menu  در فایل jwmrc.  .)

نکته:
        <Program label="Reset-Menu-Itemes" icon="edit-redo.png">
            rm ~/.jwmrc-mjwm
            jwm -reload
            mjwm
            jwm -reload
        </Program>

(این کد را من اضافه کرده ام.)
بعد از اضافه یا حذف کردن اپلیکیشنی، برای اینکه به لیست منو اضافه یا کم بشود، این آیتم را به root menu اضافه کردم تا با کلیک کاربر بر روی این منو (Reset-Menu-Itemes) عمل بروزرسانی در این زمینه انجام بگیرد و همچنین برای اینکه همین کار با ورود و یا خروج کاربر همچنین عملی صورت بگیرد، این کد را به صورت زیر به قسمت Startup Command اضافه کردم:( تذکر مجدد، دستور زیری به  Startup Command اضافه شده نه به قسمت Root Menu )

<StartupCommand>rm ~/.jwmrc-mjwm ; jwm -reload ; mjwm ; jwm -reload</StartupCommand>
نکته:
همانطور که می‌بینید در قسمت <RootMenu>  از کارکتر
;
قابل استفاده نبود و کارآیی نداشت ولی در قسمت StartupCommand کارآیی داشت.

نکته:
<Restart label="Restart" icon="restart.png"/>
این آیتم Restart برای راه اندازی مجدد مدیر پنجره jwm کاربرد دارد و برای restart کردن کل سیستم نمی باشد. من به حالت کامنت درآوردم که در root menu دیده نشود.

نکته:
        <Program label="xscreensaver" icon="xscreensaver.png">
xscreensaver-command -activate
</Program>


(این کد را من اضافه کرده ام.)
این آیتم را برای رفتن به حالت screensaver من به منوها اضافه کرده ام.


نکته:
    <Program label="suspend" icon="stop.png">
systemctl suspend
</Program>
       

(این کد را من اضافه کرده ام.)
این آیتم را برای رفتن به حالت suspend  به لیست منو اضافه کرده ام.


نکته:
<Program label="خاموش" icon="system-shutdown.png">
/usr/sbin/shutdown now
</Program>


(این کد را من اضافه کرده ام.)
با کلیک بر روی این گزینه از root menu ، سیستم خاموش خواهد شد.


نکته:
پس کلیه آیتم های مربوط به Root Menu در داخل
    <!-- The root menu. -->
    <RootMenu onroot="12">
و
</RootMenu>قرار خواهند گرفت.

(ادامه دارد...)
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: سودو. در 27 آذر 1401، 09:40 ب‌ظ
چرا jwm رو انتخاب کردی؟
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 28 آذر 1401، 01:54 ب‌ظ
چرا jwm رو انتخاب کردی؟

jwm ،یک مدیر پنجره کاملاً دست کم گرفته شده است، بنابراین دلیل اینکه من می خواهم این پیکربندی ها را در اینجا نمایش دهم این است که نشان دهم jwm ، پتانسیل های پنهان زیادی دارد.

البته روی صحبت من فقط به علاقمندان استفاده از  jwm  ، نمی باشد. در بین مطالب ارائه شده، مطالبی خواهند بود که مورد استفاده برای سایر عزیزان که از مدیران پنجره دیگری استفاده می‌کنند، قرار خواهد گرفت.
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 18 دی 1401، 01:35 ب‌ظ
قسمت چهارم:

( شرح فایل   jwmrc. )

می رسیم به این قسمت:

   <!-- Options for program groups. -->
تنظیمات گروه:
گروه‌های برنامه به فرد اجازه می‌دهند تا گزینه‌هایی را که برای گروهی از برنامه‌ها با نام و/یا کلاس اعمال می‌شوند، مشخص کند.

مثلاً فرض کنیم می‌خواهیم وقتیکه پنجره مرورگر کرومیوم باز می شود، اصلاً نوار عنوان نداشته باشد.به این قسمت این کدها را اضافه می کنیم:
        <Group>
        <Name>chromium</Name>
        <Option>notitle</Option>
    </Group>
( نتیجه شکل notitle.png )


مثلاً فرض کنیم می‌خواهیم وقتیکه پنجره مرورگر کرومیوم باز می شود، اصلاً مولفه ماگزیمم  در نوار عنوان نداشته باشد.در این قسمت این کدها را اضافه می کنیم:
        <Group>
        <Name>chromium</Name>
        <Option>nomax</Option>
    </Group>
( نتیجه شکل nomax.png )


یا مثلاً فرض کنیم می‌خواهیم وقتیکه پنجره مرورگر کرومیوم باز می شود، اصلاً نتوانیم در دسکتاب پنجره آنرا جابجا کرده و حرکت بدهیم. در این قسمت این کدها را اضافه می کنیم:

        <Group>
        <Name>chromium</Name>
        <Option>nomove</Option>
    </Group>

در این زمینه دیگر آپشن ها و موارد به این قرار است:
Group Settings

Program groups allow one to specify options which apply to a group of programs by their name and/or class. A program group is created with the Group tag. As many program groups can be created as desired. Within the Group tag the following tags are supported.

    Name
    The window name of a program to match to be in this group (the first string in WM_CLASS). This field is parsed as an extended POSIX regular expression (see regex(7) for more information). If one or more Name tags is specified, at least one must be matched.
    Class
    The window class for a program to match to be in this group (the second string in WM_CLASS). This field is parsed as an extended POSIX regular expression (see regex(7) for more information). If one or more Class tags is specified, at least one must be matched.
    Option
    A option for this group. The table below lists possible options.

Option Description
aerosnap Enable auto-maximization.
border Enables the border on windows in this group.
centered Center windows in this group upon initial placement instead of using cascaded placement.
constrain Prevent clients in this group from moving off-screen.
desktop:# The desktop on which windows in this group will be started.
drag Do not pass mouse events to the window. Instead, use the mouse to move/resize the window.
fixed Fix the windows in this group to the current desktop. This will cause the desktop to change when the window is raised rather than the default behavior of moving the window to the current desktop.
height:n Set the initial height for windows in this group to n (pixels).
hmax Make windows in this group maximize horizontally by default.
icon:icon The icon to be used for windows in this group.
iignore Ignore the increment size hint when maximizing windows in this group.
layer:layer The layer on which windows in this group will be started. Valid ooptions are below, normal, and above.
maximized Make windows in this group maximized.
minimized Make windows in this group minimized.
noborder Disables the border for windows in this group.
noclose Hides the close button for windows in this group.
nodrag Disable mod1+drag for moving/resizing windows in this group.
nofocus Prevents windows in this group from grabbing the focus when mapped.
nofullscreen Prevents windows in this group from being fullscreen.
nolist Causes the tray to ignore windows in this group.
nomax Disallows maximization for windows in this group.
nomin Disallows minimization for windows in this group.
nomove Prevents windows in this group from being moved.
nopager Causes the pager to ignore windows in this group.
noresize Prevents windows in this group from being resized.
noshade Disallows shading for windows in this group.
notitle Disables the title bar for windows in this group.
noturgent Ignore the urgent hint for windows in this group. Without this option set, JWM will flash the border of urgent windows.
opacity:# Set the opacity for windows in this group. The value is a number between 0.0 and 1.0 inclusive.
pignore Ignore program-specified initial position.
shaded Make windows in this group shaded.
sticky Make windows in this group sticky.
tiled Attempt to tile windows in this group upon initial placement. If tiled placement fails, windows will fall back to cascaded (the default) or centered if specified.
title Enables the title bar for windows in this group.
vmax Make windows in this group maximize vertically by default.
width:n Set the initial width for windows in this group to n (pixels).
x:n Set the initial x-coordinate for windows in this group to n.
y:n Set the initial y-coordinate for windows in this group to n.

منبع:
https://joewing.net/projects/jwm/config.html (https://joewing.net/projects/jwm/config.html)

ادامه دارد...
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 22 بهمن 1401، 08:52 ب‌ظ
قسمت پنجم:

برای ادامه کار ابتدا بهتر است با مفاهیمی آشنا بشویم:

taskbar  یا نوار وظیفه معمولاً از سه قسمت تشکیل می شود:

۱)  quick launch bar    یا    نوار راه اندازی سریع .
محل قرارگیری: به طور پیش‌فرض در انتهای سمت چپ taskbar (نوار وظیفه) قرار دارد.
هدف: قرار دادن میانبرهایی برای برنامه‌هایی است که اغلب استفاده می شوند.
مانند مرورگر وب، واژه پرداز و  ...
امکان راه اندازی سریع برنامه‌ها فقط با یک کلیک.


۲)  task button area    یا   ناحیه دکمه وظیفه .
محل قرار گیری: در قسمت میانی taskbar  قرار دارد.
هدف: به راحتی بین برنامه‌های باز شده جابه جا شوید. هر بار که یک برنامه جدید را باز می‌کنید یک
task button  جدید ظاهر می شود.
همچنین ممکن است چندین برنامه از یک برنامه را باز کنید. از آنجایی که این مورد می‌تواند نوار وظیفه را شلوغ کند، طراحان، دکمه های پنجره یا window buttons را در یک دکمه برنامه واحد دسته بندی کردند.

۳)  system tray     یا   سینی سیستم   یا   منطقه اعلان .
محل قرارگیری: انتهای سمت راست  taskbar  .
هدف: نمادهایی برای برنامه‌های کاربردی و خدماتی که در حال اجرا هستند را نمایش می دهد.
مانند ساعت سیستم، نشانگر باطری، نشانگر شبکه، بلوتوث، فایروال، آنتی ویروس و ... .
 anti – virus  ,  firewall  ,  bluetooth service ,  network indicator , battery indicator ,  system  clock

سینی سیستم همچنین می‌تواند میانبرهای اختیاری را برای ابزارهای قابل تنظیمی که در حال اجرا هستند، مانند تنظیم صدای بلندگو و کارت گرافیک نگه دارد.



می‌رسیم به محتویات این قسمت:
<!-- Tray at the bottom. -->که اگر به قسمت دوم آموزشهایم مراجعه کنید، بصورت کامل کدهای مربوطه را مشاهده خواهید کرد.
این قسمت مربوط است به تنظیمات و آیتم های panel/taskbar  یا همان پنل / نوار وظیفه  پیش‌فرض jwm  .


    <Tray x="0"y="-1" height="30" autohide="off">اگر   y=-1  باشد، پانل در پایین دسکتاب قرار خواهد گرفت.
اگر   y=0  باشد، پانل در بالای دسکتاب قرار خواهد گرفت.
اگر   y=+1  باشد، پانل در بالای دسکتاب قرار خواهد گرفت.

همانطور که می‌بینید بصورت پیش‌فرض autohide پانل در حالت off قرار دارد ولی اگر خواستید آنرا فعال نمایید:
برای autohide کردن پانل، اگر y=-1 باشد، بایستی مقدار autohide=”bottom”  قرار بدهید.
برای autohide کردن پانل، اگر y=0 باشد، بایستی مقدار autohide=”top”  قرار بدهید.

همانطور که مشخص است با گزینه  height ، ارتفاع موردنظرتان برای پانل را تعریف می کنید.

در  tray ، یک تنظیمی داریم بنام layer که دارای سه حالت:
above  ،  normal  ،  below
که حالت پیش‌فرض above می باشد. در حالت above ، اگر پنجره ای باز باشد، پانل روی آن پنجره قرار می‌گیرد و پنجره در زیر پانل قرار می گیرد.
 همانطور که می‌بینید این گزینه نوشته نشده است ولی در عمل این گزینه اعمال می‌گردد ولی اگر بخواهید حالت پیش‌فرض را تغییر بدهید و مثلاً از حالت below استفاده کنید که در این حالت اگر پنجره ای باز باشد، پانل زیر آن پنجره قرار میگیرد و پنجره روی پانل قرار می گیرد. مثلا اینطوری بنویسید:
    <!-- Tray at the bottom. -->
    <Tray x="0"y="-1" height="30" autohide="off" layer="below">


بر روی پانل می‌توانید برای دسترسی سریعتر به برنامه‌های دلخواهتان آیکن آن برنامه را بعنوان شورتکات قرار بدهید، مثلاً برای فایر فاکس:
<TrayButton icon="default16.png" popup="Firefox ESR">exec:firefox</TrayButton>با آیتم icon می‌توانید، آیکن مورد نظرتان برای این برنامه در جایی از سیستمتان که این آیکن قرار گرفته به مدیر پنجره معرفی نمایید. این آدرس دهی به دو صورت کامل یا نسبی می‌تواند انجام بدهید. در آدرس دهی کامل مسیر کامل و دقیق محل قرار گیری آیکن را بنویسید ولی در آدرس دهی نسبی کافیست اگر محل دایرکتوری مربوط به قرار گیری آیکن ها را در قسمت:
    <!-- Path where icons can be found.
         IconPath can be listed multiple times to allow searching
         for icons in multiple paths.
      -->

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

قسمت popup هم برای این است که وقتی که نشانگر ماوس بر روی آیکن قرار گرفت نوشته کوچکی نشان بدهد که مثلاً نام این برنامه چیست.
در قسمت   :exec ، می‌خواهیم نشان دهیم اگر بر روی این آیکن کلیک کنیم چه دستوری اجرا شود،
مثلاً برای اجرا شدن فایرفاکس بنویسید:
exec:firefox و مثلاً برای اجرا شدنsynaptic بنویسید:
exec:synaptic-pkexec
البته حتماً قرار نیست همیشه از آیکن استفاده شود، مثلاً در مورد زیر:
<TrayButton label="_">showdesktop</TrayButton>
بجای icon  از  lable استفاده شده، که باعث می‌شود، با کلیک بر روی _  در پانل، تمامی پنجره ها مینیمایز بشوند و دسکتاب نشان داده شود.

اما در مورد کد زیر:
<Clock format="%H:%M"><Button mask="123">exec:xclock</Button></Clock> 
باعث می‌شود در قسمت راست پانل یعنی در قسمت system tray ، ساعت نشان داده شود.
نکته مهم اینجاست که برای اینکه نشانگر network connection و نشانگر زبان کیبورد و همچنین نشانگر ولوم صدا در قسمت  system tray     نشان داده شود، در این قسمت کار خاصی در این باره نداریم(شاید هم بشود و من بلد نیستم) و این کار را بایستی برویم در قسمت:
<!-- <StartupCommand></StartupCommand-->انجام بدهیم. که در نوشته‌های بعدی ان‌شاء‌الله به این قسمت هم خواهیم رسید.

ادامه دارد...
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: َUxmlai-ad در 14 اسفند 1401، 05:08 ب‌ظ
برای tray باید اضافه کنم که اینجا یه آپشن به اسم Swallow هست که میتونید پنجره برنامه های x11 رو داخلش بزارید مثلا می تونید از xclock استفاده کنید یا اگه لبتاپ دارید از یک برنامه استفاده کنید که میزان شارژ باتری رو نشون بده (احتمالا توی مخازن پیدا بشه)
مثلا برای ساعت:
<Swallow name="Clock">xclock</Swallow>

برای این چند تا آپشن دیگه غیر از name هست که width, height (عرض و ارتفاع) هستن (به پیکسل) صفر به معنای حداقل اندازه هست.
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 19 اسفند 1401، 01:21 ب‌ظ
قسمت ششم:

<!-- Visual Styles -->
Visual Styles یا سبک های بصری.
در این قسمت ما با موارد زیر سر و کار داریم:

- WindowStyle : تنظیمات سبک های بصری مربوط به پنجره ها.
- TrayStyle   : تنظیمات سبک های بصری مربوط به پانل .
- TaskListStyle :  تنظیمات سبک های بصری مربوط به task button area یا ناحیه دکمه وظیفه.( برای اطلاعات بیشتر به قسمت پنجم آموزش‌ها مراجعه فرمایید.)
- PagerStyle :  تنظیمات سبک های بصری مربوط به ناحیه ای از پانل که برای سوپیچ بین Virtual Desktops یا همان دسکتاپ های مجازی استفاده می شود.
- MenuStyle :  تنظیمات سبک های بصری مربوط به root menu یا منوی ریشه یا همان منوی ای که با کلیک راست بر روی دسکتاب برایتان باز می شود.
- PopupStyle :  تنظیمات سبک های بصری مربوط به قسمت popup ( popup یعنی وقتی که نشانگر ماوس بر روی آیکن برنامه در پانل قرار گرفت نوشته کوچکی نشان بدهد که مثلاً نام این برنامه چیست.)

برای نمونه آیتم های مربوط به  WindowStyle را شرح می دهم:

    <WindowStyle>
        <Font>Sans-9:bold</Font>
        <Width>4</Width>
        <Height>21</Height>
        <Corner>3</Corner>
        <Foreground>#FFFFFF</Foreground>
        <Background>#555555</Background>
        <Outline>#000000</Outline>
        <Opacity>0.5</Opacity>

<Font> : از چه فونتی برای نوشته نوار عنوان پنجره ها استفاده شود.(تمام پنجره ها)
<Width> :  یعنی ضخامت کناره یا نوار دور تا دور  پنجره چقدر باشد.(تمام پنجره ها)
<Height> : یعنی ارتفاع نوار عنوان پنجره چقدر باشد.(تمام پنجره ها)
<Foreground> : فونت نوشته‌های نوار عنوان پنجره به چه رنگی باشد.(پنجره های غیر فعال)
<Background> : پس زمینه نوار حاشیه‌ای دور تا دور و همچنین پس زمینه نوار عنوان پنجره ها به چه رنگی باشد.(پنجره های غیر فعال)
<Outline> : رنگ خارجی ترین لایه یا همان نوار بسیار نازک دور تا دور پنجره ها به چه رنگی باشد.(پنجره های غیر فعال)
<Opacity> : میزان شفافیت یا کدری پنجره (پنجره های غیر فعال)


        <Active>
            <Foreground>#FFFFFF</Foreground>
            <Background>#0077CC</Background>
            <Outline>#000000</Outline>
            <Opacity>1.0</Opacity>
        </Active>
    </WindowStyle>

<Foreground> :  فونت نوشته‌های نوار عنوان پنجره به چه رنگی باشد.(پنجره فعال)
<Background> : پس زمینه نوار حاشیه‌ای دور تا دور و همچنین پس زمینه نوار عنوان پنجره ها به چه رنگی باشد.(پنجره فعال)
<Outline> : رنگ خارجی ترین لایه یا همان نوار بسیار نازک دور تا دور پنجره ها به چه رنگی باشد.(پنجره  فعال)
<Opacity> : میزان شفافیت یا کدری پنجره (پنجره فعال)

نکته : اگر یک پنجره در محیط کاریتان باز کرده باشید آن پنجره فعال است ولی اگر چندین پنجره باز کرده باشید، پنجره فعال همان پنجره ای است که در حال حاضر از آن استفاده می کنید و بقیه غیرفعال هستند. پنجره فعال پنجره ای است که ورودی کاربر به آن می رود (به عنوان پنجره ای که فوکوس دارد نیز گفته می شود). این پنجره فعال معمولاً به نوعی برجسته می شود.

نکته : برای تغییر رنگ آیتم های مورد نظرتان در اینجا  از رنگ های هگزادسیمال یا HEX  استفاده نمایید.مثلا:

FFFFFF#  : سفید
#000000 : سیاه
FF0000 # : قرمز
 #00FF00 : سبز
#0000FF  : آبی

نکته:
<TrayStyle group="true" list="all">
اگر مقدار آیتم group را "true" قرار دهیم، پنجره های باز شده مربوط به یک نوع در پانل در یک دسته قرار می‌گیرند ولی اگر مقدار آیتم group  را "false" قرار بدهیم برای هر پنجره باز شده در پانل (در ناحیه task button area یا ناحیه دکمه وظیفه)، برای هر پنجره بدون توجه به نوعی که ازآن قرار دارد ، دکمه جداگانه ایجاد می‌شود.
مثلاً اگر   مقدار آیتم group  را "false" قرار بدهیم، و دو تا پنجره مرورگر فایرفاکس را باز نماییم،
در پانل برای هر کدام task button  جداگانه ایجاد می‌شود.

اگر مقدار آیتم  list را "all" قرار بدهیم، در پانل task button های مربوط به برنامه‌ها در تمامی Virtual Desktops یا همان دسکتاپ های مجازی نشان داده می‌شود، بدون توجه به اینکه این برنامه در کدام دسکتاب مجازی باز شده ولی اگر مقدار آیتم  list را  برابر "desktop" قرار بدهیم، task button مربوط به یک برنامه تنها در دسکتاب مجازی ای که آنرا باز کرده‌ایم نشان داده خواهد شد و در سایر دسکتاب ها task button آن برنامه را نخواهید دید.


ادامه دارد...

عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: thmkhtry در 25 اسفند 1401، 01:20 ق‌ظ
سلام جناب نوروزی من نصبش کردم دارم شروع میکنم . فقط یه سوال این که من وقتی توی منوی برنامه هاش ترمینال رو میزنم هیچگونه اتفاقی نمیوفته. یکم راهنمایی میدین؟من توزیعم آرچه و دسکتاپم کی دی ایه و بنابر این sddm دارم. باید lightdm استفاده کنم؟
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: thmkhtry در 25 اسفند 1401، 01:23 ق‌ظ
خیلی دوست داشتم یک مدیر پنجره رو خودم کانفیگ کنم ،ممنون
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: سودو در 25 اسفند 1401، 10:57 ق‌ظ
نوروزی‌جان، توصیه می‌کنم قبل از این‌که بیش‌تر پیش بری، ببرش تو ویکی که موندگار بشه.
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: thmkhtry در 25 اسفند 1401، 11:20 ق‌ظ
من اما ازش پشیمون شدم. نتونستم توش ترمینال باز کنم .میرم یه  i3  کانفیگ میکنم استفاده میکنم.
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 25 اسفند 1401، 02:37 ب‌ظ
من توزیعم آرچه و دسکتاپم کی دی ایه و بنابر این sddm دارم. باید lightdm استفاده کنم؟
SDDM ، یکپارچه سازی بسیار خوبی با KDE دارد.


فقط یه سوال این که من وقتی توی منوی برنامه هاش ترمینال رو میزنم هیچگونه اتفاقی نمیوفته. یکم راهنمایی میدین؟
۱- وقتی که برای اولین بار  JWM را نصب بکنید و بدون آنکه کار خاصی کرده باشید،  در محیط دسکتاب کلیک راست کنید، با منوی شکل 1 مواجه خواهید شد.
ولی وقتی در همین منو بر روی ترمینال کلیک می‌کنیم و هیچ اتفاقی نمی افتد.
اکثریت نصب کنندگان JWM با ناامیدی با آن خداحافظی می کنند. چرا؟
چون:
در JWM بصورت پیش‌فرض خبری از منوی پویا نیست. چیزی که در مقابل شما قرار دارد یک منوی استاتیک میباشد.
برای راه اندازی منوی پویا به قسمت اول آموزش‌ها مراجعه بفرمایید.
فرض کنیم شما می‌خواهید با همین منوی استاتیک که به صورت پیش‌فرض تعریف شده ادامه بدهید. پس من هم شما را تنها نمی‌گذارم و با هم ادامه می دهیم.

۲- در دبیان وقتی که شما JWM را نصب می کنید، در مسیر   etc/jwm/ دو تا فایل با نام های system.jwmrc و  debian-menu ایجاد می شود.
چون من آرچ ندارم، احتمال می‌دهم که در آرچ ، در آن مسیر تنها فایل  system.jwmrc ایجاد بشود و فایل debian-menu ایجاد نشود.
این فایل debian-menu چیست و به چه دردی می خورد؟
اگر دبیان نصب می‌کردید، بوسیله همین فایل  debian-menu ، در منویی که در دسکتاب با کلیک راست باز می شد، نگاه می کردید، منویی با نام Debian با زیر منوهایش قرار می گرفت.
خوب به چه دردمان می خورد؟
مثلاً اگر در همان منو به مسیر زیر بروید:

Debian  >>  Application >> Shells 

بروید، سه تا نرم‌افزار Bash و  Dash  و  Sh  در اختیارتان خواهد بود.( عکس‌های 2  و 3 )
با همین سه نرم‌افزار  می‌توانید کارهای مدنظرتان را انجام بدهید.
ولی فرض می‌کنیم، که الان ما آرچ داریم و (احتمالا) به این منو Debian دسترسی نداریم.
پس چکار بکنیم؟ با من همراه باشید و عجله نکنید تا بگویم.

۳- الان وقت آنست که برویم سر وقت پرسش اصلی و ببینیم که چه نیم کاسه ای زیر کاسه است که ما بر روی منو Terminal کلیک می‌کنیم و هیچ اتفاقی نمی افتد.
اینجاست که ما بایستی برویم سر وقت فایل  etc/jwm/system.jwmrc/  و ببینیم این ناقلا چرا ما را اذیت می کند.
به این کدها نگاه کنید:
    <!-- The root menu. -->
    <RootMenu onroot="12">
        <Include>/etc/jwm/debian-menu</Include>
        <Program icon="terminal.png" label="Terminal">xterm</Program>
        <Separator/>
        <Program icon="lock.png" label="Lock">
            xlock -mode blank
        </Program>
        <Separator/>
        <Restart label="Restart" icon="restart.png"/>
        <Exit label="Exit" confirm="true" icon="quit.png"/>
    </RootMenu>

وقتی کلیک راست می کنید، ساختار منوی مربوطه از این کدها ایجاد می گردد.
به این کد که قسمتی از کدهای بالایست، دقیقاً توجه کنید:
<Program icon="terminal.png" label="Terminal">xterm</Program>این کد می‌گوید در هنگام راست کلیک منویی با نام "Terminal" ایجاد کن و همچنین برای این منو آیکنی با شکل "terminal.png" در کنارش در همانجا ایجاد کن.
خوب وقتی که کاربر  این منو را انتخاب کنه  چه دستوری بایستی اجرا بشود؟
این دستور:
xterm

دوست عزیز چرا من پیرمرد را اذیت می کنی، ببین اصلاً نرم‌افزار xterm در سیستمت نصب است؟ نرم افزاری که نصب نیست، چطور می‌خواهد اجرا بشود؟!
پس برو xterm را نصب کن، آنوقت که می‌بینی مشکلی که پرسیدی حل می شود.(عکس 4 )

مثلاً من از ریخت و قیافه xterm خوشم نمی‌آید و با توسعه دهندگانش سر لج هستم،
 مثلاً بجایش از  xfce4-terminal خوشم می آید، خوب چکار می کنم، این کار را :
این دستور را جایگزین دستور بالایی می کنم:

<Program icon="terminal.png" label="Terminal">xfce4-terminal</Program>

(اگر بخواهی خیلی هم سلیقه بازی دربیاورید می توانید، حتی آیکن دقیق خود برنامه موردنظرتان را هم کنارش قرار بدهید.)

۴-
مطالب تکمیلی:
می‌شود با  ویرایش فایل  etc/jwm/system.jwmrc/  کارهایی را که گفتم انجام بگیرد ولی بهتر است بجای اینکار:
نقل‌قول
۲۵- با فرمان زیر فایل system.jwmrc  را به داخل دایرکتوری خانگی کاربر کپی می نماییم.
$ cp /etc/jwm/system.jwmrc  ~/
۲۶- با فرمان زیر، نام این فایل را به jwmrc.  تغییر نام می دهیم.
$ mv ~/system.jwmrc  ~/.jwmrc

چرا؟
یکی از دلایل مهمش این است که اگر بخواهید سیستمتان را آپدیت نمایید و برای این نرم‌افزار آپدیتی آمده باشد، فایل  etc/jwm/system.jwmrc/  اور رایت می‌شود و تمامی ویرایش هایتان بر روی این فایل می‌رود روی هوا. پس بهتر است این کارها را در فایل jwmrc. در همان home کاربریتان انجام دهید.
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 25 اسفند 1401، 02:49 ب‌ظ
نوروزی‌جان، توصیه می‌کنم قبل از این‌که بیش‌تر پیش بری، ببرش تو ویکی که موندگار بشه.

لطف دارید، فکر نکنم در حد ویکی باشد، بیشتر در حد دل نوشته اند.
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: thmkhtry در 25 اسفند 1401، 03:24 ب‌ظ
پس که اینطور. مال من تنظیمات jwm وجود نداشت پس تو دایرکتوری هوم میسازمش.
ویرایش:نه بودش
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 25 اسفند 1401، 06:11 ب‌ظ
 تعجبی ندارد. من از debian stable استفاده می‌کنم و ورژن JWM  برای من  Version: 2.3.7-5+deb11u1
می باشد. ولی چون  شما از آرچ استفاده می‌کنید و ورژن نسخه JWM شما از مال من به روزتر و جدیدتر می باشد،
 حتماً شاهد تفاوتهایی خواهید بود و حتماً توسعه‌دهنده اش تغییراتی اعمال کرده است.
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: thmkhtry در 25 اسفند 1401، 08:05 ب‌ظ
خدارو چه دیدی شاید اومدم . البته اگه با آپدیت نبودن دبیان کنار بیام.
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 15 فروردین 1402، 06:12 ب‌ظ
قسمت هفتم:

می رسیم به کدهای این قسمت: 
    <!-- Path where icons can be found.
         IconPath can be listed multiple times to allow searching
         for icons in multiple paths.
      -->

مسیری که آیکون ها را می توان یافت. به jwm نشان بده که آیکن ها در کدام پوشه ها قرار دارند.
 مثلاً من در پانل می‌خواهم میانبری برای نرم‌افزار فایرفاکس بصورت آیکن نماد فایرفاکس نشان داده شود. من دو کار می‌توانم انجام بدهم:

روش اول:
 بیایم در همین جا مسیر پوشه ای  که آیکن فایرفاکس قرار گرفته را تعریف کنم، مثلاً:

<IconPath>/usr/share/firefox-esr/browser/chrome/icons/default</IconPath>
و سپس بروم در قسمت
<!-- Tray at the bottom. -->
و در هنگام تعریف میانبر فایرفاکس در پانل در قسمت icon برای آن تنها نام آیکن را ذکر کنم مثلاً:

<TrayButton icon="default16.png" popup="Firefox ESR">exec:firefox</TrayButton>
روش دوم:
بدون آنکه در قسمت  Path where icons can be found  چیزی تعریف کرده باشم بروم و در قسمت
<!-- Tray at the bottom. -->و در هنگام تعریف میانبر فایرفاکس در پانل در قسمت icon، آنرا اینگونه تعریف کنم:

icon=/usr/share/firefox-esr/browser/chrome/icons/default/default16.png
که روش اول، تمیزتر است.

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

    <!-- Virtual Desktops -->
    <!-- Desktop tags can be contained within Desktops for desktop names. -->
    <Desktops width="4" height="1">
        <!-- Default background. Note that a Background tag can be
              contained within a Desktop tag to give a specific background
              for that desktop.
         -->
        <Background type="solid">#111111</Background>
    </Desktops>

width : تعداد دسکتاپ های مجازی در جهت افقی. پیش فرض 4 است.
Height : تعداد دسکتاپ های مجازی در جهت عمودی. پیش فرض 1 است.

مثلاً اگر شما انرا اینگونه تغییر بدهید که width=5  و   height=3  . در اینصورت در پانل در قسمت سوئیچ بین دسکتابهای مجازی شما دارای 15 دسکتاب مجازی خواهید بود که در ۵ ستون و در ۳ ردیف برای شما نشان داده خواهد شد.(عکس 1)

در قسمت Background می توانید، رنگ پس زمینه را تغییر بدهید یا برای پس زمینه اتان محل تصویر مورد نظرتان را تعریف کنید یا از دستوری برای حالتهای خاص استفاده کنید.
برای type می‌توانید از بین این گزینه ها یکی را انتخاب کنید. پیش‌فرض گزینه solid است.


حالتهای مختلف type :

solid
gradient
image
scale
tile
command


استفاده از solid :
مثلاً من می‌خواهم رنگ پس زمینه قرمز باشد. پس اینطوری کدها را تغییر می‌دهم:(عکس 2)

<Background type="solid">#FF0000</Background>
استفاده از gredient:
مثلاً من می‌خواهم از حالت gradient استفاده کنم، گرادیان ها عناصر CSS از نوع داده تصویر هستند که انتقال بین دو یا چند رنگ را نشان می دهند. این انتقال ها به صورت خطی یا شعاعی نشان داده می شوند.

ترکیبی از رنگهای قرمز و آبی:(عکس 3)
<Background type="gradient">red:blue</Background>
ترکیبی از رنگهای بنفش و زرد:(عکس 4)
Background type="gradient">purple:yellow</Background>
یادتان باشد در حالت  gradient ، رنگ‌ها را با دو نقطه از هم جدا کنید.

استفاده از image :
مثلاً می‌خواهم یک عکس را بعنوان پس زمینه بگذارم:
<Background type="image">/home/a/Pictures/wallpaper/3.jpg</Background>
استفاده از  tile :
مثلاً می‌خواهم یک عکسی را بصورت کاشی کاری شده نشان داده شود:
(عکس 5)
<Background type="tile">/home/a/Pictures/wallpaper/index.jpeg</Background>
استفاده از  command :
مثلاً من می‌خواهم دستوری بنویسم که عکس‌های پوشه ای را بصورت رندوم با لاگین کاربر عوض بشود:
<Background type="command">feh --bg-fill --randomize ~/Pictures/wallpaper/*</Background>یادتان باشد برای اینکه این دستور اجرا بشود اول بروید و feh را نصب کنید.

(داخل پارانتز:
یک نکته ریزی را بگویم اینکه شما میتوانید این قسمت را بهمان حالت پیش‌فرض بگذارید بماند، یعنی:
<Background type="solid">#111111</Background>
بعد می‌توانید بجای اینکه در اینجا از دستور command بالایی برای ایجاد حالت رندوم یا حالت image برای نشان دادن یک عکس ثابت استفاده کنید، این دستورات را در قسمت <StartupCommand> بکار بگیریم تا حالت دلخواهمان عوض این کدها در اینجا، با آن کدهایمان در آنجا اعمال بشود. فرقی نمی‌کند، هر دو حالت هم می‌شود. مثلاً در قسمت startup اینطوری بنویسیم:
<StartupCommand>feh --bg-fill --randomize ~/Pictures/wallpaper/*</StartupCommand>
)


ادامه دارد...
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 17 فروردین 1402، 11:10 ق‌ظ
قسمت هشتم:

<!-- <StartupCommand></StartupCommand-->
این قسمتی است که بصورت پیش‌فرض در فایل پیکربندی jwm نوشته نشده است. این قسمت یکی از مهمترین قسمتهای این فایل پیکربندی می باشد.که بایستی خودمان بنویسیم.
Startup دستورات و  کدهایی است که می‌خواهیم در هنگام لاگین کاربر اجرا شود.
مال من به اینصورت می باشد:

<!-- <StartupCommand></StartupCommand-->

<StartupCommand>xrandr --size 1152x864</StartupCommand>
<StartupCommand>pnmixer</StartupCommand>
<StartupCommand>(sleep 3s ; nm-applet)</StartupCommand>
<StartupCommand>(sleep 4s ; fbxkb)</StartupCommand>
<StartupCommand>/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1</StartupCommand>
<StartupCommand>xdg-user-dirs-update</StartupCommand>
<StartupCommand>rm ~/.config/user-dirs.dirs</StartupCommand>
<StartupCommand>xdg-user-dirs-update</StartupCommand>
<StartupCommand>picom</StartupCommand>
<StartupCommand>xscreensaver -no-splash</StartupCommand>
<StartupCommand>rm ~/.jwmrc-mjwm ; jwm -reload ; mjwm ; jwm -reload</StartupCommand>

کارکرد یکایک آن‌ها را توضیح می دهم:

<StartupCommand>xrandr --size 1152x864</StartupCommand>برای اجرای این کد لازم است که بسته  x11-xserver-utils  در سیستمتان نصب شده باشد.
در اینجا بصورت دستی تعیین می‌کنم که رزولویشن صفحه نمایش  چقدر باشد.


<StartupCommand>pnmixer</StartupCommand>برای اجرای این کد لازم است که بسته های   pnmixer و alsamixergui و alsa-utils  در سیستمتان نصب شده باشد.
این کد باعث می‌شود در هنگام لاگین کاربر نشانگر صدا در قسمت System tray نشان داده شود


<StartupCommand>(sleep 3s ; nm-applet)</StartupCommand>برای اجرای این کد لازم است که بسته   network-manager-gnome  در سیستمتان نصب شده باشد.
این کد باعث می‌شود در هنگام لاگین کاربر نشانگر کانکشن شبکه یا اینترنت در قسمت System tray نشان داده شود.


<StartupCommand>(sleep 4s ; fbxkb)</StartupCommand>برای اجرای این کد لازم است که بسته  fbxkb  در سیستمتان نصب شده باشد.
این کد باعث می‌شود در هنگام لاگین کاربر نشانگر صفحه کلید در قسمت System tray نشان داده شود.
البته شما می‌توانید بجای این کد و نصب نرم‌افزار  fbxkb ، بسادگی تنهانرم افزار ibus را نصب نمائید و در اینصورت با نصب  ibus نیازی به هیچ کار اضافی دیگری نیست و نشانگر مربوطه بصورت اتوماتیک در قسمت مربوطه در پانل قرار می گیرد.البته من  fbxkb را بیشتر دوست دارم.


<StartupCommand>/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1</StartupCommand>این کد برای این استکه اگر مثلاً نرم‌افزاری که در محیط گرافیکی و در غیر محیط ترمینالی که نیازمند مجوز مدیریتی (یعنی پسورد بخواهد) را بخواهید باز کنید، اجرا بشود.
به زبان خیلی ساده اگر شما بخواهید بجای میزکار از مدیر پنجره استفاده کنید و مثلاً بخواهید نرم‌افزار  Synaptic را باز کنید، اگر از این کد استفاده نکنید، نر م افزار Synaptic برایتان باز نخواهد شد.

تذکر مهم: در هنگام نصب دبیان بصورت مینیمال، بصورت پیش‌فرض  این polkit یعنی بسته libpolkit-agent-1-0 نصب می‌شود ولی اگر از توزیع دیگر استفاده کرده باشید شاید توسعه‌دهنده اش از polkit  دیگری مانند lxpolkit  یا mate-polkit یا polkit-kde-agent-1 و یا ... استفاده کرده باشیدیا حتی خودتان بخواهید از این‌ها استفاده نمائید، در اینصورت شما بایستی این کد بالایی را تغییر بدهید. برای راهنمایی بیشتر به ارسال هایم پیرامون openbox مراجعه نمائید.
وقتی   polkit فرق کند،یکی از فرق هایش این می‌شود که پنجره محاوره ای که برای پسورد خواستن برای باز کردن برنامه‌هایی که نیازمند مجوز مدیریتی هستند، شکل و شمایلشان فرق خواهد کرد.


<StartupCommand>xdg-user-dirs-update</StartupCommand>
<StartupCommand>rm ~/.config/user-dirs.dirs</StartupCommand>
<StartupCommand>xdg-user-dirs-update</StartupCommand>

این کد را به اینصورت با آزمایش و خطاهای فراوان نوشته‌ام .
Xdg-user-dirs-update ، ابزاری است برای کمک به مدیریت دایرکتوری های کاربر  مانند پوشه دسکتاپ و پوشه موسیقی و ... .
خیلی ساده‌اش این می‌شود که در هنگام لاگین به حساب کاربری خود می‌بینید که پوشه های
Desktop ، Documents  ، Downloads  ، Music  و ... در  Home کاربریتان موجود است.
فرض کنید یکی یا تعدادی از همین پوشه هایتان را حذف کنید و دوباره از سیستم لاگ اوت و سپس لاگین کنید خواهید دید که دوباره این پوشه ها دوباره بصورت اتوماتیک ایجاد شده اند، این‌ها همین کار را می‌کنند. در میزکارها اینکار بصورت اتوماتیک صورت می‌گیرد چون توسعه‌دهنده محترم زحمتش را کشیده و اگر بخواهیم از مدیر پنجره به جای میزکار استفاده کنیم بایستی خودمان زحمتش را بکشیم.
به نوعی Xdg-user-dirs-update کنترل می‌کند که پوشه هایی که در بالا نام بردم در هوم کاربر هست یا نیست، اگر نیست، در هنگام لاگین کاربر دستور میدهد ساخته شود.
در ضمن نام بسته آن  xdg-user-dirs می‌باشد که در هنگام نصب دبیان بصورت اتوماتیک نصب می‌شود اگر زمانی در این مورد دچار مشکل شدید ببینید که آیا این بسته از سیستمتان احیاناً حذف شده است یا نه.



<StartupCommand>picom</StartupCommand>برای اجرای این کد لازم است که بسته  picom  در سیستمتان نصب شده باشد.
picom یک کامپوزیتور برای X11 بر اساس xcompmgr است. البته مجبور نیست از picom  استفاده کنید، بجایش می‌توانید از کامپوزیتورهای دیگر مانند  xcompmgr یا compton استفاده کنید. با توجه به تجربیاتی که دارم در jwm گزینه picom ، عمل‌کرد بهتری دارد.
ولی اگر زمانی خواستید از کامپوزیتور  compton بجای  picom استفاده نمائید، بجای کد بالایی از این کد استفاده کنید:
<StartupCommand>compton --vsync opengl-swc --backend glx</StartupCommand>
البته توجه کنید از هر کامپوزیتوری که بخواهید استفاده نمائید بایستی قبلاً آنرا نصب کرده باشید.


<StartupCommand>xscreensaver -no-splash</StartupCommand>برای اجرای این کد لازم است که بسته  xscreensaver  در سیستمتان نصب شده باشد.
این کد برای عمل‌کرد   xscreensaver  می‌باشد.به زبان ساده این کد برای این استکه بنوعی سیستم از هنگام لاگین کاربر در حالت آماده باش برای وقتی است که من در root menu، منوی  xscreensaver را انتخاب کنم تا دستور :
        <Program label="xscreensaver" icon="xscreensaver.png">
xscreensaver-command -activate
</Program>
واقع در قسمت:
<!-- The root menu. --> اجرا شود.


<StartupCommand>rm ~/.jwmrc-mjwm ; jwm -reload ; mjwm ; jwm -reload</StartupCommand>این کد را هم به اینصورت با آزمایش و خطاهای فراوان نوشته‌ام . اگر بخواهید برای ایجاد منوی پویا در  Jwm از  mjwm  استفاده نمائید و عمل‌کرد درستی داشته باشد از این کد استفاده نمائید.



البته توجه کنید در جاهایی که لازم بوده از   sleep برای ایجاد وقفه برای انجام درست کدها و برنامه‌ها استفاده کرده ام.
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 13 خرداد 1402، 08:06 ب‌ظ

قسمت نهم:


    <!-- Double click speed (in milliseconds) -->
    <DoubleClickSpeed>400</DoubleClickSpeed>

نمی دانم.(هر وقت دانستم در همین جا توضیحش خواهم داد.)


    <!-- Double click delta (in pixels) -->
    <DoubleClickDelta>2</DoubleClickDelta>

نمی دانم.(هر وقت دانستم در همین جا توضیحش خواهم داد.)

    <!-- The focus model (sloppy or click) -->
    <FocusModel>sloppy</FocusModel>

برای این مورد ما چهار حالت داریم:
click
clicktitle
sloppy
sloppytitle

تفاوت بین حالت sloppy و  click :
بطور ساده بخواهیم بگوییم، فرض کنید چند تا پنجره باز کرده‌اید، اگر این حالت را بگذارید روی
sloppy یا sloppytitle  با بردن ماوس بر روی پنجره دلخواه، آن پنجره در حالت انتخاب شده قرار می گیرد.( مثلاً نوار عنوان و نوار کناره های  پنجره  به رنگ آبی در می‌آید و نوار عنوان و نوار کناره های پنجره های دیگر به رنگ خاکستری در می آید.) در این حالت اگر بخواهید پنجره ای از بین پنجره های موجود در حالت انتخاب شده قرار بگیرد کلیک لازم نیست، فقط کافیست ماوس را بر روی پنجره ببرید.
اگر این حالت را بگذارید روی click یا  clicktitle ، برای اینکه پنجره ای از بین پنجره باز شده در دسکتاب به حالت انتخاب شده در بیاید بایستی در داخل آن پنجره کلیک نمایید.

تفاوت بین حالت title و نبود این گزینه:
بطور ساده بخواهیم بگوییم، فرض کنید چند تا پنجره باز کرده‌اید و این پنجره ها تا حدودی بر هم افتاده اند. اگر این حالت را بگذارید روی  clicktitle و یا sloppytitle  ، برای اینکه پنجره دلخواهتان بالاتر از سایر پنجره ها قرار بگیرد، بایستی یا بر روی نوار عنوان یا بر روی  نوار کناره های  پنجره کلیک نمایید. توجه شود که با کلیک کردن در محیط داخلی پنجره این عمل صورت نمی گیرد.
ولی اگر این حالت را بگذارید بر روی  click یا sloppy ، برای اینکه پنجره دلخواهتان بالاتر از سایر پنجره ها قرار بگیرد، کافیست در هر قسمتی از پنجره دلخواهتان کلیک نمایید.


    <!-- The snap mode (none, screen, or border) -->
    <SnapMode distance="10">border</SnapMode>

سه حالت دارد:
none
screen
border

در حالت screen ، اگر پنجره ای را به لبه های screen یا همان صفحه نمایش  اتان ببرید، در فاصله‌ای که باdistance تعیین کرده اید، در آن فاصله پنجره اتان بطور اتوماتیک وار میچسبد به کناره screen اتان، مثل آهن ربا کناره های screen ، پنجره اتان را جذب می کند.
در حالت border هم اگر پنجره ای را به لبه های screen اتان و یا لبه پنجره ای دیگر نزدیک کنید،  در فاصله‌ای که باdistance تعیین کرده اید، در آن فاصله پنجره اتان بطور اتوماتیک وار میچسبد به کناره  screen اتان و یا لبه های پنجره دیگر.
بنا به تجربه شخصی ام برای اینکه این مورد بدرستی در سیستم شما کار بکند و با اجرای این حالت پنجره دچار لرز آزار دهنده نشود، لازم است بسته picom بر روی سیستم شما نصب باشد. ( بجای picom همچنین می‌توانید از بسته های compton و   xcompmgr  استفاده نمایید ولی درسیستم من عمل‌کرد این مورد تنها با picom درست بود نه با  compton و یا  xcompmgr .) و حتماً با کدهای زیر آنرا در قسمت StartupCommand قرار دهید تا در هنگام لاگین کاربر، picom بطور اتوماتیک وار شروع به کار بکند:
<StartupCommand>picom</StartupCommand>

    <!-- The move mode (outline or opaque) -->
    <MoveMode>opaque</MoveMode>
حالت و شکلی که پنجره در حین حرکت به خود می گیرد، که دارای دو حالت outline و opaque می باشد.


    <!-- The resize mode (outline or opaque) -->
    <ResizeMode coordinates="screen">outline</ResizeMode>

حالت و شکلی که پنجره در حین  resize  کردن پنجره یا همان تغییر اندازه دادن به ابعاد پنجره به خود می گیرد، که دارای دو حالت outline و opaque می باشد.


در این قسمت تنظیم دیگری بنام   coordinates داریم که دارای چهار حالت است:

off
corner
window
screen
می باشد، که در هنگام resize کردن پنجره یا همان تغییر اندازه دادن به ابعاد پنجره، مختصات پنجره را به ما نشان می دهد.
اگر از گزینه off استفاده کنیم، هیچ مختصاتی نشان داده نخواهد شد.
اگر از گزینه corner استفاده کنیم، مختصات پنجره در هنگام resize کردن را در گوشه بالا سمت چپ screen به ما نشان داده خواهد شد.
اگر از گزینه window استفاده کنیم، مختصات پنجره در هنگام resize کردن را درداخل خود پنجره به ما نشان داده خواهد شد.
اگر از گزینه screen استفاده کنیم، مختصات پنجره در هنگام resize کردن را در قسمت مرکزی screen به ما نشان داده خواهد شد.
سه تا عکس از حالت های corner ، window و  screen برای آشنایی بیشتر با این حالت‌ها گذاشته ام.

ادامه دارد...
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: aFard در 13 خرداد 1402، 08:22 ب‌ظ
ممنون از شما بزودی کانفیگ i3 راجبش یه پست میسازیم
عنوان: پاسخ : شخصی سازی JWM (حل شد)
ارسال شده توسط: norouzi90 در 19 خرداد 1402، 08:53 ب‌ظ
قسمت دهم :

    <!-- Key bindings -->
    <Key key="Up">up</Key>
    <Key key="Down">down</Key>
    <Key key="Right">right</Key>
    <Key key="Left">left</Key>
    <Key key="h">left</Key>
    <Key key="j">down</Key>
    <Key key="k">up</Key>
    <Key key="l">right</Key>
    <Key key="Return">select</Key>
    <Key key="Escape">escape</Key>

    <Key mask="A" key="Tab">nextstacked</Key>
    <Key mask="A" key="F4">close</Key>
    <Key mask="A" key="#">desktop#</Key>
    <Key mask="A" key="F1">root:1</Key>
    <Key mask="A" key="F2">window</Key>
    <Key mask="A" key="F10">maximize</Key>
    <Key mask="A" key="Right">rdesktop</Key>
    <Key mask="A" key="Left">ldesktop</Key>
    <Key mask="A" key="Up">udesktop</Key>
    <Key mask="A" key="Down">ddesktop</Key>

در این قسمت، میانبرهای صفحه‌کلید را تعریف می کنیم.
مثلاً برای اینکه با فشردن کلید Print صفحه کلید، عمل اسکرین شات گرفتن با استفاده از نرم‌افزار  gnome-screenshot  انجام بگیرد، از این کد استفاده می کنیم:
<Key key="Print">exec: gnome-screenshot</Key>
یا مثلاً برای اینکه با فشردن کلید Super سمت چپی صفحه کلید، منو اصلی نشان داده شود، از این کد استفاده می کنیم:
<Key key="Super_L">root:1</Key>

 اسامی تعدادی از کلیدهای صفحه کلید برای استفاده در این کدها، عبارتند از:

Shift_L

Shift_R

Caps_Lock

Control_L

Control_R

Alt_L

Alt_R

Num_Lock
Super_L

Super_R

Print

در اینجا به پایان بررسی فایل system.jwmrc  یا همان  jwmrc.  می رسیم.
پس ما تا اینجا :

۱- نصب دبیان بصورت مینیمال.
۲- نصب jwm  و پیکربندی آن.
۳- اگر بخواهیم از سیستممان بعنوان میزکار برای کارهای روزمره استفاده نماییم، نیازمندیم که تعدادی بسته نصب نماییم.
 اگر با عملکرد تعدادی از بسته های اصلی و ضروری آشنا نباشیم در  هنگام کار با توزیع نصب شده بصورت مینیمال با یک مدیر پنجره نصب شده بر روی آن به مشکل خواهیم خورد.
بنابراین در این قسمت به توضیح مختصری از بسته هایی که در ابتدا معرفی کردم، تا نصب گردند می پردازم، تعدادی از  این بسته ها اختیاری و بیشتر براساس سلیقه شخصی من می باشند ولی تعدادی از این بسته ها ضروری اند.

pcmanfm  :  یک فایل منیجر یا همان مدیر فایل بر اساس   + GTK  است. البته به جای این فایل منیجر می‌توانید از 
4pane  یا   caja  یا   dolphin  یا   nautilus   یا   nemo  یا  thunar   یا  ...  استفاده نمایید.


gvfs-backends  :   برای عملکرد کامل تر pcmanfm بایستی این بسته نصب گردد.

mtp-tool  :  این بسته حاوی ابزارهایی برای برقراری ارتباط با دستگاه های MTP است.
خیلی ساده بگوییم وقتی که موبایل را به سیستمتان وصل می کنید برای اینکه توسط فایل منیجر شناسایی شده و ارتباط برقرار شود.

network-manager-gnome  :    یک سرویس شبکه سیستمی است که دستگاه های و اتصالات شبکه شما را مدیریت می کند و همچنین تلاش برای حفظ اتصال شبکه فعال هنگامی که در دسترس اترنت، وای فای، پهنای باند موبایل (WWAN) و PPPoE را مدیریت می کند.

net-tools  :  این بسته شامل ابزارهای مهم برای کنترل شبکه می باشد. جعبه ابزار شبکه است.

netselect-apt  :   این بسته ابزاری را ارائه می دهد که می توانید بهترین آینه دبیان را انتخاب کنید.

neofetch  :   اطلاعات سیستم لینوکس شما را جمع آوری می کند و آن را در ترمینال نمایش می دهد.

screenfetch  :   اطلاعات سیستم لینوکس شما را جمع آوری می کند و آن را در ترمینال نمایش می دهد.

chromium  :   یک مرورگر وب است.

firefox-esr  :  یک مرورگر وب است.

geany  :    یک ویرایشگر متنِ سبک است.

alsa-utils  :   برای داشتن صدا در سیستمتان به این بسته نیاز خواهید داشت.

alsamixergui  :  یک برنامه میکسر صدا است و تکمیل کننده alsa-utils   است.( اگر بر روی آیکن صدا در پانل کلیک کنید، برای اینکه دکمه Mixer ای که برای شما نشان داده می شود کار بکند، نیاز به این بسته خواهید داشت.)

pnmixer  :   برای کار بر روی سیستم هایی طراحی شده است که از ALSA برای مدیریت صدا استفاده می کنند. یک برنامه Mixer ساده برای قسمت system tray  است.
خیلی ساده بگوییم از این بسته استفاده می کنیم تا اینکه آیکن صدا بر روی پانل در قسمت  system tray  نشان داده شود و بایستی حتما در قسمت StartupCommand ، کد مربوطه اش را برای اجرا شدن در هنگام لاگین کاربر نوشته شود.

virt-manager  :   یک رابط کاربری دسکتاپ برای مدیریت ماشین مجازی  از طریق  libvirt است.
خیلی ساده بگوییم یک ماشین مجازی است و من بجای VirtualBox  و یا VMware از این استفاده می کنم.


fbxkb  :  نشانگر و سوئیچر صفحه کلید بر پایه X11  است.
پرچمی از صفحه کلید کنونی را در یک ناحیه system tray نشان می دهد و به شما امکان می دهد به یکی دیگر سوئیچ کنید.
بجای این بسته می توانید از  بسته های   gxkb  یا  xxkb  یا ibus  استفاده کنید.
خیلی ساده بگوییم اگر این بسته را نصب کنید، زبان صفحه کلید به شکل پرچم در پانل برایتان نشان داده خواهد شد که بدانید که مثلا الان زبان صفحه کلیدتان بر روی انگلیسی است یا فارسی.

feh  : در اصل یک نمایشگر تصویر و عکس است. ولی اصلی ترین کاربردش برای من در هنگام کار با window manager ها برای قرار دادن عکس یا عکسهایی بعنوان بک گراند صفحه نمایش می باشد. قرار دادن عکس ها می تواند بصورت ثابت و یا چرخشی با توجه به کدی که در قسمت  StartupCommand  قرار می دهیم، باشد.

در jwm برای Background ، سه کار می توانید انجام دهید:

روش ۱- استفاده از کد پیش فرض:
<Background type="solid">#111111</Background>
و نام رنگ و یا کد رنگ دلخواهتان را بدهید.
مثلا:
<Background type="gradient">purple:yellow</Background>
روش ۲- استفاده از feh و همچنین کد پیش فرض برای نشان دادن عکس های دلخواهتان.
مثلا:
<Background>feh --bg-fill --randomize ~/Pictures/wallpaper/*</Background>
روش ۳- استفاده از feh در قسمت   StartupCommand   برای نشان دادن عکس های دلخواهتان.
مثلا:
<StartupCommand>feh --bg-fill --randomize ~/Pictures/wallpaper/*</StartupCommand>
اگر در window manager ای را که می خواهید، عکسی در background  قرار دهید، در فایل کانفیگ هایش  قسمتی برای background قرار نداده شده باشد از همین feh در قسمت startup آن مدیر پنجره استفاده نمایید.

eog  : یک نمایشگر گرافیکی برای نشان دادن تصاویر و عکس ها است.


gimp   :   یک ویرایشگر تصویر پیشرفته است.


xfce4-terminal  :   یک  شبیه ساز ترمینال  یا همان  terminal emulator   است.
بجای این بسته  می توانید از بسته های دیگر مانند موارد زیر استفاده نمایید:

gnome-terminal   ,    konsole  ,  lxterminal    ,   mate-terminal   ,    xterm  ,   termit  و ...



gnome-screenshot  :    این ابزار از دسکتاپ یا یک پنجره عکس می گیرد و آن را در یک فایل ذخیره می کند.

vlc  :  یک پخش کننده چند رسانه ای است. یا به زبان ساده فایل های ویدیویی اتان را پخش می کند.

parole  :  یک پخش کننده چند رسانه ای است. یا به زبان ساده فایل های ویدیویی اتان را پخش می کند.

timeshift  :  از ابزارهای بکاپ گیری از سیستم است.
یک ابزار بازیابی سیستم است که در فواصل منظم  عکس های فوری از سیستمتان می گیرد.

fsarchiver : از ابزارهای بکاپ گیری از سیستم است.
 یک ابزار سیستمی است که به شما امکان می دهد، محتویات سیستم فایل را به صورت یک فایل آرشیو فشرده ذخیره کنید.

gnome-disk-utility  :  یک ویرایشگر پارتیشن است.

gparted  :  یک ویرایشگر پارتیشن است.

libreoffice  :  یک مجموعه نرم افزارهای اداری است.

libreoffice-gtk3  :  این بسته شامل افزونه Gtk برای ترسیم ویجت های LibreOffices می باشد.
به زبان ساده مثلا برای اینکه پنجره های باز شده libreoffice در بعضی حالت ها درست نشان داده شود.

fonts-farsiweb  :  این بسته شامل مجموعه استانداردی از فونت های فارسی (فارسی) یونیکد از جمله:
 Titr, Nazli, Nazli Bold, and Homa   می باشد.

transmission  :  برای کار با  BitTorrent  بکار می رود.

brasero  :  یک برنامه ساده برای رایت، کپی و پاک کردن CD و DVD است.
بجای این بسته می توانید از k3b  استفاده نمایید.
اگر هم از فایل منیجر  Nautilus استفاده می کنید می توانید از بسته های
nautilus-extension-brasero  و  nautilus-extension-burner  استفاده نمایید.

packagekit-command-not-found   :  پیشنهاد نصب خودکار برنامه های از دست رفته (missing      programs ) در  خط فرمان .
با استفاده از این، بسته های گم شده را در خط فرمان نصب کنید.

command-not-found  : پیشنهاد نصب بسته ها برای برنامه هایی که در حال حاضر نصب نشده اند اما در مخازن موجود هستند.

evince  :  یک نمایشگر اسناد pdf  است.

xpdf  :   یک نمایشگر اسناد pdf  است.

file-roller  : یک مدیر آرشیو است.
مشاهده محتوای یک فایل فشرده با فرمت  zip یا gzip یا tar  یا ...
و همچنین استخراج فایل ها از حالت آرشیو یا همان فشرده.

catfish  :  یک ابزار مفید برای جستجوی فایل است.

x11-xserver-utils  : مجموعه ای از برنامه های کاربردی سرور X .
برای من  از برنامه های کاربردی متعددش، برنامه xrandr در مورد زیر  برایم کاربرد دارد.

با دستور xrandr می توان رزولوشن را تنظیم کرد، مثلا در قسمت StartupCommand این کد را گذاشت:
<StartupCommand>xrandr --size 1152x864</StartupCommand>

xscreensaver  :  یک محافظ صفحه نمایش و همچنین برای قفل کردن آن می باشد.

 lxappearance  :    یک برنامه رابط کاربری گرافیکی برای محیط دسکتاپ سبک X11 است.
این یک تعویض کننده تم +GTK  و  همچنین  تعویض کننده فونت ها و آیکن ها برای برنامه های مورد استفاده  می باشد. با نصب این برنامه، زیر منوی Customize Look and Feel  به  منوی  Settings در منوی اصلی یا همان root menu اضافه می شود.

 oxygen-icon-theme  :  نوعی تم آیکن .

gnome-brave-icon-theme  :  نوعی تم آیکن .

gnome-calculator  :  یک ماشین حساب گرافیکی.

onboard  :  صفحه کلید مجازی .

gdebi  : رابط کاربری گرافیکی ساده برای مشاهده و نصب فایل های deb است.

aria2  :  ابزار دانلود با سرعت بالا از طریق خط فرمان.

tumbler  :  یک سرویس D-Bus برای برنامه‌هایی است که می‌توانند thumbnails  یا همان تصاویر کوچک را برای برنامه‌های مختلف درخواست کنند.
 یک تصویر کوچک  سبک وزن است که می تواند توسط فایل منیجرتان برای ساخت  thumbnails از عکس ها و تصاویر  استفاده شود.
 

ffmpegthumbnailer  :  یک تصویر کوچک ویدیویی سبک وزن است که می تواند توسط فایل منیجرتان برای ساخت  thumbnails از فیلم ها و ویدیوها  استفاده شود.
به زبان خیلی ساده، اگر این بسته بر روی سیستم شما نصب باشد، اگر فایل ویدیویی در کامپیوترتان داشته باشید، بر روی فایل ویدیویی که توسط فایل منیجر مشاهده می کنید، یک تصویری از یک قسمت از آن ویدیو مشاهده خواهید کرد، اگر این بسته نصب نباشد بجای این تصویر از آن فیلم، تصویر لوگو فایل های ویدیویی را مشاهده خواهید کرد.

picom  :  یک کامپوزیتور برای X11 که بر اساس xcompmgr است.
از کامپوزیتور های دیگر بغییر از  picom که می توانید استفاده نمایید، عبارتند از:
compton  ،  xcompmgr   است.

کامپوزیتور چیست و چه کاربردی دارد؟
مثلا درفایل پیکربندی jwm در قسمت <-- Visual Styles --!> ، حاوی گزینه هایی برای Opacity یا همان میزان کدری و شفافیت پنجره های فعال و غیر فعال نسبت بهم و همچنین میزان کدری و شفافیت پانل و همجنین میزان کدری و شفافیت منو اصلی یا root menu می باشد. یعنی اگر مثلا کامپوزیتوری مانند picom در سیستمتان نصب نباشد  در نتیجه گزینه Opacity هم کار نخواهد کرد.

میزان کدری و شفافیت پنجره های فعال و غیر فعال نسبت بهم یعنی چه؟
مثلا دو تا پنجره باز کرده اید، یکی از پنجره ها را بگذارید روی پنجره دیگر، مثلا آیا می خواهید میزان شفافیت پنجره رویی را آنقدر بالا ببرید که محتویات پنجره زیری هم دیده شود؟!

hplip-gui  :  اگر پرینتر با مارک HP داشته باشید، می توانید از این بسته استفاده کنید.

photocollage  :  این امکان را می دهد به شما که  چند عکس را کنار هم بچسبانید تا تبدیل به یک عکس بشود.

synaptic  :  یک ابزار مدیریت بسته گرافیکی مبتنی بر +GTK  و APT است. Synaptic شما را قادر می سازد بسته های نرم افزاری را نصب، ارتقا و حذف کنید.
به زبان ساده مجبور نیستید برای نصب و حذف بسته ها اگر محیط ترمینال و خط فرمان را  دوست نداشته باشید، استفاده کنید، این یک رابط گرافیکی است که این کارها و خیلی کارهای دیگر مربوط به مدیریت بسته ها و نرم افزارها را برایتان بسادگی انجام می دهد.

بیشترین سعی ام در اینجا این بوده که الگویی هر چند ناقص برای کار با مدیران پنجره به خدمت دوستان تقدیم کنم.
خوشحال می شوم دوستان مطالب ارسالی بنده را تصحیح و یا تکمیل نمایند.
از دوستانی که در زمینه jwm سوالی دارند خواهشمندم برای اینکار موضوع جدیدی ایجاد نمایند.

این آخرین ارسالی من برای این موضوع می باشد و دیگر ارسالی جدید دیگری برای این موضوع در اینجا نخواهم داشت.

پایان