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

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: شخصی سازی JWM (حل شد)  (دفعات بازدید: 2532 بار)

0 کاربر و 2 مهمان درحال مشاهده موضوع.

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #15 : 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

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

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #16 : 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-->انجام بدهیم. که در نوشته‌های بعدی ان‌شاء‌الله به این قسمت هم خواهیم رسید.

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

آفلاین َUxmlai-ad

  • Sr. Member
  • *
  • ارسال: 486
  • جنسیت : پسر
  • متنفر از گنو و FSF
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #17 : 14 اسفند 1401، 05:08 ب‌ظ »
برای tray باید اضافه کنم که اینجا یه آپشن به اسم Swallow هست که میتونید پنجره برنامه های x11 رو داخلش بزارید مثلا می تونید از xclock استفاده کنید یا اگه لبتاپ دارید از یک برنامه استفاده کنید که میزان شارژ باتری رو نشون بده (احتمالا توی مخازن پیدا بشه)
مثلا برای ساعت:
<Swallow name="Clock">xclock</Swallow>

برای این چند تا آپشن دیگه غیر از name هست که width, height (عرض و ارتفاع) هستن (به پیکسل) صفر به معنای حداقل اندازه هست.
« آخرین ویرایش: 14 اسفند 1401، 05:10 ب‌ظ توسط Aminavy »
متنفر از گنو و FSF

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #18 : 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 آن برنامه را نخواهید دید.


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


آفلاین thmkhtry

  • Hero Member
  • *
  • ارسال: 975
  • جنسیت : پسر
  • Fedora Linux
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #19 : 25 اسفند 1401، 01:20 ق‌ظ »
سلام جناب نوروزی من نصبش کردم دارم شروع میکنم . فقط یه سوال این که من وقتی توی منوی برنامه هاش ترمینال رو میزنم هیچگونه اتفاقی نمیوفته. یکم راهنمایی میدین؟من توزیعم آرچه و دسکتاپم کی دی ایه و بنابر این sddm دارم. باید lightdm استفاده کنم؟

آفلاین thmkhtry

  • Hero Member
  • *
  • ارسال: 975
  • جنسیت : پسر
  • Fedora Linux
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #20 : 25 اسفند 1401، 01:23 ق‌ظ »
خیلی دوست داشتم یک مدیر پنجره رو خودم کانفیگ کنم ،ممنون

آفلاین سودو

  • Full Member
  • *
  • ارسال: 191
  • جنسیت : پسر
  • :(){ :|:& };:
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #21 : 25 اسفند 1401، 10:57 ق‌ظ »
نوروزی‌جان، توصیه می‌کنم قبل از این‌که بیش‌تر پیش بری، ببرش تو ویکی که موندگار بشه.

آفلاین thmkhtry

  • Hero Member
  • *
  • ارسال: 975
  • جنسیت : پسر
  • Fedora Linux
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #22 : 25 اسفند 1401، 11:20 ق‌ظ »
من اما ازش پشیمون شدم. نتونستم توش ترمینال باز کنم .میرم یه  i3  کانفیگ میکنم استفاده میکنم.

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #23 : 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 کاربریتان انجام دهید.

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #24 : 25 اسفند 1401، 02:49 ب‌ظ »
نوروزی‌جان، توصیه می‌کنم قبل از این‌که بیش‌تر پیش بری، ببرش تو ویکی که موندگار بشه.

لطف دارید، فکر نکنم در حد ویکی باشد، بیشتر در حد دل نوشته اند.

آفلاین thmkhtry

  • Hero Member
  • *
  • ارسال: 975
  • جنسیت : پسر
  • Fedora Linux
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #25 : 25 اسفند 1401، 03:24 ب‌ظ »
پس که اینطور. مال من تنظیمات jwm وجود نداشت پس تو دایرکتوری هوم میسازمش.
ویرایش:نه بودش
« آخرین ویرایش: 25 اسفند 1401، 03:54 ب‌ظ توسط TahaMokhtary »

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #26 : 25 اسفند 1401، 06:11 ب‌ظ »
 تعجبی ندارد. من از debian stable استفاده می‌کنم و ورژن JWM  برای من  Version: 2.3.7-5+deb11u1
می باشد. ولی چون  شما از آرچ استفاده می‌کنید و ورژن نسخه JWM شما از مال من به روزتر و جدیدتر می باشد،
 حتماً شاهد تفاوتهایی خواهید بود و حتماً توسعه‌دهنده اش تغییراتی اعمال کرده است.

آفلاین thmkhtry

  • Hero Member
  • *
  • ارسال: 975
  • جنسیت : پسر
  • Fedora Linux
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #27 : 25 اسفند 1401، 08:05 ب‌ظ »
خدارو چه دیدی شاید اومدم . البته اگه با آپدیت نبودن دبیان کنار بیام.

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #28 : 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>
)


ادامه دارد...
« آخرین ویرایش: 15 فروردین 1402، 06:26 ب‌ظ توسط norouzi90 »

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : شخصی سازی JWM (حل شد)
« پاسخ #29 : 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 برای ایجاد وقفه برای انجام درست کدها و برنامه‌ها استفاده کرده ام.