فهرست مطالب

"برنامه‌ی مشاهده‌ی عکس feh"

مقدمه🔗

feh برنامه‌ی مشاهده‌ی عکس است که می‌تواند در محیط‌های گرافیکی X11 نصب شده و مورد استفاده قرار گیرد. هدف اولیه‌ی feh سبک بودن و مورد استفاده سریع قرار گرفتن از طریق خط فرمان است، با این وجود می‌تواند با برنامه‌های دیگر نیز هماهنگ شده و مورد استفاده قرار گیرد. feh بر مبنای کتابخانه Imlib2 طراحی شده و چندین مد کاربری دارد.

شکل کلی دستور feh به صورت زیر است:

SHELL
$ feh [option]  files or directories or URLs

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

نکته

یکی از مهمترین و کاربردی‌ترین ویژگی‌های feh قابلیت آن در نصب تصویر پس‌زمینه یا wallpaper است.

چند مثال و نکته برای شروع🔗

عکس‌های img-1.jpg و img-2.jpg و img-16.jpg را نمایش دهید.

SHELL
$ feh img-1.jpg img-2.jpg img-16.jpg

کلیه عکس‌های دایرکتوری فعلی را نمایش دهید.

SHELL
$ feh

کلیه عکس‌های قابل نمایش دایرکتوری فعلی را به صورت تمام صفحه یا full screen نمایش دهید.

SHELL
$ feh --fullscreen

عکس‌های دایرکتوری doc/pic/~ را نمایش دهید.

SHELL
$ feh ~/doc/pic
  • هنگام نمایش عکس اگر روی عکس، دگمه X و یا Q و یا Esc را بزنید از برنامه خارج می‌شوید.
  • دگمه P (ابتدای کلمه Previous) عکس قبلی و دگمه N (ابتدای کلمه Next) عکس بعدی را می‌آورد.
  • دگمه D نام و شماره عکس در میان کل عکس‌های موجود را، در بالا سمت چپ تصویر، نمایش می‌دهد. با زدن دوباره دگمه D این اطلاعات از روی تصویر حذف می‌شوند .

مدهای feh🔗

feh چندین مُد کاربری دارد. هر مد با استفاده از سوییچ ویژه‌ای در جلوی دستور feh مشخص می‌گردد. در زیر به بررسی این مدها می‌پردازیم.

مد slideshow🔗

مد پیش فرض feh است. یک پنجره باز می‌شود و عکس‌ها درون آن پنجره نمایش داده می‌شوند . با فشردن دگمه‌های Left و Right می‌توان در لیست عکس‌ها به عکس بعدی یا عکس قبلی رفت. در هر حال فقط یک عکس نمایش داده می‌شود. این مد به هیچ سوییچی نیاز ندارد.

عکس‌هایی که در نامشان عدد ۱ می‌باشد را نمایش بدهید.

SHELL
$ feh *1*

مد multiwindow🔗

اگر تعداد عکس‌هایتان زیاد است از این مد استفاده نکنید! این مد به ازای هر عکس یک پنجره جدید باز می‌کند. پنجره‌ها همزمان باز می‌شوند. برای استفاده از این مد از سوییچ --multiwindow استفاده کنید.

عکس‌هایی که نامشان با img-2 شروع می‌شوند را در پنجره‌های جداگانه نمایش دهید.

SHELL
$ feh --multiwindow img-2*

مد montage🔗

یک عکس از کلیه عکس‌های موجود در لیست نمایش، می‌سازد . این عکس می‌تواند نمایش داده شده و یا ذخیره شود. برای استفاده از این مد از سوییچ --montage استفاده کنید.

یک مونتاژ از عکس‌های موجود در دایرکتوری فعلی نمایش دهید.

SHELL
$ feh --montage

مد index🔗

مانند مد montage است. با این تفاوت که در زیر تمام عکس‌ها نام فایل عکس نیز نمایش داده می‌شود. این مد با سوییچ --index فعال می‌شود.

عکس‌های دایرکتوری فعلی را در مد index نمایش دهید.

SHELL
$ feh --index

مد thumbnails🔗

مانند مد index می‌باشد یعنی در عکسی که مونتاژ می‌کند، زیر هر عکس نام فایل عکس را نیز نمایش می‌دهد با این تفاوت که در اینجا تمام عکس‌های کوچک قابل کلیک هستند. با کلیک بر روی هر عکس کوچک، عکس اصلی در پنجره‌ای جداگانه و در مقیاس واقعی نمایش داده می‌شود. این مد با سوییچ --thumbnails فعال می‌شود.

عکس‌هایی که به 2.jpg ختم می‌شوند را در مد thumbnails نمایش دهید.

SHELL
$ feh --thumbnails *2.jpg

مد list🔗

مد list هیچ تصویری نشان نمی‌دهد در عوض در خروجی استاندارد (اکثر مواقع ترمینال‌) اطلاعاتی از تصاویری که در لیست قابل نمایش خود دارد را با فرمتی شبیه به دستور ls -l نمایش می‌دهد. این اطلاعات شامل نام فایل، فرمت فایل، عرض و ارتفاع عکس، تعداد پیکسل و سایز تصویر و چند اطلاع دیگر است. این مد با سوییچ --list فعال می‌شود.

اطلاعات کلیه تصاویر موجود در دایرکتوری فعلی را نمایش دهید.

SHELL
$ feh --list
NUM FORMAT  WIDTH   HEIGHT  PIXELS  SIZE    ALPHA   FILENAME
1   png 540 598 322k     72k    X   ./f1.png
2   jpeg    460 288 132k     27k    -   ./img-1.jpg
3   jpeg    1280    960   1M    431k    -   ./img-10.jpg
4   jpeg    1280    1024      1M    350k    -   ./img-11.jpg
5   jpeg    1024    768 786k    340k    -   ./img-12.jpg
6   jpeg    1024    768 786k    341k    -   ./img-13.jpg
7   jpeg    2592    1944      5M    899k    -   ./img-14.jpg
8   jpeg    1024    768 786k    173k    -   ./img-15.jpg
9   jpeg    1280    854   1M    893k    -   ./img-16.jpg
10  jpeg    480 417 200k     49k    -   ./img-2.jpg
11  jpeg    816 612 499k     60k    -   ./img-3.jpg
12  jpeg    1280    1024      1M    997k    -   ./img-4.jpg
13  jpeg    600 400 240k     74k    -   ./img-5.jpg
14  jpeg    521 834 434k     36k    -   ./img-6.jpg
15  jpeg    1600    1200      1M    577k    -   ./img-7.jpg
16  jpeg    1600    1200      1M    309k    -   ./img-8.jpg
17  jpeg    1600    1200      1M    146k    -   ./img-9.jpg

اطلاعات ۵ عکس در دایرکتوری فعلی را که دارای بیشترین عرض و ارتفاع هستند را نمایش دهید.

SHELL
$ feh --list | sed '1 d' | sort -k3,3nr -k4,4nr | head -n 5
7   jpeg    2592    1944      5M    899k    -   ./img-14.jpg
15  jpeg    1600    1200      1M    577k    -   ./img-7.jpg
16  jpeg    1600    1200      1M    309k    -   ./img-8.jpg
17  jpeg    1600    1200      1M    146k    -   ./img-9.jpg
12  jpeg    1280    1024      1M    997k    -   ./img-4.jpg

مد loadable🔗

این مد عکسی نمایش نمی‌دهد بلکه نام کلیه فایل‌های قابل نمایش را در خروجی استاندارد می‌نویسد. این مد با سوییچ --loadable فعال می‌شود. از این مد می‌توان برای شناسایی عکس‌ها استفاده کرد.

نام کلیه عکس‌هایی که قابل load شدن توسط feh هستند را نمایش دهید.

SHELL
$ feh --loadable

مد unloadable🔗

مانند مد loadable عکسی نمایش نمی‌دهد ولی بر عکس آن، لیست فایل‌هایی که توسط feh قابل نمایش نیستند را نشان می‌دهد. این مد با سوییچ --unloadable فعال می‌شود.

فایل‌هایی که برای feh ناشناخته‌اند را لیست کنید.

SHELL
$ feh --unloadable
./1.sh

مد customlist🔗

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

نام فایل، عرض و ارتفاع عکس‌های دایرکتوری فعلی را در خروجی استاندارد چاپ کنید.

SHELL
$ feh --customlist "%n   %w   %h"
1.jpg   4000    3000
10.jpg  1974    3000
100.jpg 1920    1200
101.jpg 1920    1200
102.jpg 1536    2196

حل مشکل پنجره شناور feh با geometry--🔗

در مد slideshow پنجره نمایش‌دهنده عکس با توجه به عرض و ارتفاع هر عکس بزرگ و کوچک می‌شود. اگر این موضوع شما را آزار می‌دهد و یا اینکه خواسته شما را در لحظه‌ی بخصوصی برآورده نمی‌کند می‌توانید با استفاده از سوییچ --geometry طول و عرض پنجره را ثابت کنید.

عکس‌های دایرکتوری فعلی را در پنجره‌ای به ابعاد ثابت 600x450 باز کنید.

SHELL
$ feh --geometry 600x450 --scale-down

نکته

در مثال فوق برای اینکه تصاویر به طور کامل در پنجره نمایش داده شوند و نیاز به اسکرول نداشته باشند از سوییچ --scale-down استفاده می‌کنیم.

format specification ها یا جانگهدارها🔗

بعضی از سوییچ‌های feh بر مبنای خواست کاربر می‌توانند اطلاعات تعریف شده‌ای را نمایش دهند. مثلا سوییچ --title برای نمایش title پنجره عکس استفاده می‌شود. کاربری علاقه دارد عنوان پنجره فقط نام عکس باشد، دیگری علاقمند است که این عنوان مسیر کامل فایل عکس باشد و کاربر دیگری می‌خواهد شماره عکس در میان کل عکس‌ها به اضافه نام عکس نمایش داده شود مثلا: 8 of 39 - london.jpg

برای برآورده‌ کردن این خواسته ابتدا می‌بایست جانگهدارهای تعریف شده را بشناسیم.

ردیف جا نگهدار توضیحات
۱ f% مسیر فایل عکس همراه با نام عکس را بر می‌گرداند.
۲ F% مانند f% بجز اینکه رشته برگشتی escape شده است و مناسب استفاده در shell script می‌باشد.
۳ w% عرض عکس. w ابتدای کلمه width است.
۴ h% ارتفاع عکس. h ابتدای کلمه height است.
۵ u% شماره فایل عکس جاری داخل لیست عکس‌ها. مثلا عکس شماره ۸ از ۴۰
۶ l% تعداد فایل‌های داخل لیست عکس‌ها. l ابتدای کلمه length می‌باشد.
۷ n% نام فایل عکس.
۸ N% نام فایل عکس به صورت Escape شده. مناسب استفاده در shell script
۹ m% مد فعلی feh
۱۰ p% تعداد پیکسل‌های عکس. p ابتدای کلمه pixel است.
۱۱ P% تعداد پیکسل‌های عکس به صورت کیلو پیکسل و مگا پیکسل
۱۲ s% حجم عکس به صورت بایت. s ابتدای کلمه size است.
۱۳ S% حجم عکس به صورت قابل خواندن مثلا بر حسب کیلو بایت و مگا بایت
۱۴ t% فرمت عکس. t ابتدای کلمه type است.
۱۵ o% آفست پنجره عکس از گوشه تصویر یعنی فاصله بالا سمت چپ عکس از بالا سمت چپ صفحه نمایش.
۱۶ r% گردش عکس فعلی (rotation)
۱۷ z% زوم عکس فعلی
۱۸ v% شماره نسخه کنونی feh. حرف v ابتدای کلمه version می‌باشد.

معرفی چند سوییچ مفید و پر کاربرد🔗

هر دستوری قدرت اصلی خود را از سوییچ‌هایش می‌گیرد. feh هم از این قاعده مستثنی نیست. سوییچ‌های بسیاری در دستور feh تعبیه شده است که در مواقع مورد نیاز گره از کار باز می‌کنند. در این قسمت به بررسی چند سوییچ می‌پردازیم.

سوییچ info--🔗

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

نام عکس و تاریخ دقیق را در کنار هر عکس نمایش دهید.

SHELL
$ feh --geometry 500x400 --info "echo -n %n \"  \"; date" ~/doc/pic

سوییچ scale-down--🔗

این سوییچ عرض و ارتفاع عکس‌های بزرگ را کوچک می‌کند یا به عبارت دیگر عکس را scale می‌کند تا تمامی عکس در صفحه قابل نمایش باشد.

عکس‌های دایرکتوری doc/pic/~ را به صورت scale-down نمایش دهید.

SHELL
$ feh --scale-down ~/doc/pic

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

سوییچ title--🔗

این سوییچ عنوان پنجره نمایش عکس را تنظیم می‌کند و می‌تواند شامل جانگه‌دارها هم باشد. متن و مقدار جایگزین جانگه‌دارهایی که در جلوی سوییچ می‌آیند در عنوان پنجره عکس نمایش داده می‌شوند.

عکس‌های دایرکتوری doc/pic/~ را نمایش بدهید. عنوان پنجره را به این صورت تنظیم کنید: dokaj.ir - [current Image Number] of [Total Image Number] - [Image Name]

SHELL
$ feh --scale-down --title "dokaj.ir - %u of %l - %n" ~/doc/pic

سوییچ filelist--🔗

دقیقا مشابه play list نرم‌افزارهای پخش موسیقی! نام یک فایل در جلوی سوییچ --filelist قرار می‌گیرد. محتوای هر خط این فایل آدرس یک عکس است و feh تنها عکس‌های موجود در این فایل را نمایش می‌دهد.

اگر نام فایل - (علامت dash) باشد به معنای ورودی استاندارد است و لیست عکس‌ها از ورودی استاندارد (در اینجا اکثرا pipe) خوانده می‌شود. توجه کنید که ورودی استاندارد در اکثر مواقع صفحه کلید است ولی اینجا تایپ کردن آدرس تک تک عکس‌ها برای نمایش منطقی نیست!

نکته

به جای سوییچ طولانی --filelist می‌توانید از سوییچ مختصر -f نیز استفاده کنید.

عکس‌های موجود در دایرکتوری فعلی را، از حجم بزرگتر به کوچکتر نمایش دهید.

SHELL
$ ls -S | feh --scale-down --filelist -

کلیه عکس‌های jpg دایرکتوری فعلی را نمایش دهید.

SHELL
$ find . -d 1 -iname "*.jpg" >filelist
$ feh --scale-down --filelist filelist

سوییچ slideshow-delay--🔗

هنگامی که در مد slideshow یعنی همان مد پیش فرض feh هستید برای نمایش عکس بعدی می‌بایست از دگمه Right استفاده کنید. ولی گاهی اوقات مثلا برای ارائه‌ی مطلب نیاز دارید تا تصویر، بعد از مدتی خود به خود عوض شده و تصویر بعدی به نمایش درآید. در این صورت می‌بایست از سوییچ --slideshow-delay استفاده کنید. این ویژگی در ساخت screen-saver هم به کار می‌آید.

اگر هنگام نمایش اسلایدها دگمه H را بزنید حرکت خودکار عکس‌ها متوقف می‌شود. برای شروع دوباره می‌بایست مجددا کلید H را فشار دهید.

عکس‌های دایرکتوری فعلی را به صورت تمام صفحه نمایش دهید. هر عکس ۵ ثانیه نمایش داده شود و بعد به صورت خودکار عکس بعدی بیاید.

SHELL
$ feh --fullscreen --slideshow-delay 5

سوییچ recursive--🔗

کلیه تصاویر یک دایرکتوری و کلیه زیر دایرکتوری‌های آن را به صورت تو در تو بررسی می‌کند و بسته به اینکه از کدام مد استفاده می‌کنید آن‌ها را نمایش داده و یا اینکه در خروجی استاندارد می‌نویسد.

نکته

به جای استفاده از سوییچ طولانی --recursive می‌توانید از سوییچ کوتاه -r استفاده کنید.

کلیه عکس‌های دایرکتوری doc/pic/~ و زیر دایرکتوری‌های آن را نمایش دهید. مدت زمان نمایش هر عکس ۱۰ ثانیه باشد و عکس‌ها به صورت fullscreen به نمایش در بیایند.

SHELL
$ feh --fullscreen --recursive --slideshow-delay  10  ~/doc/pic

سوییچ randomize--🔗

در هنگام نمایش عکس‌ها به صورت slideshow لیست عکس‌ها را بُر زده و سپس اقدام به نمایش پنجره عکس می‌کند.

عکس‌هایی که با img-1 شروع می‌شوند را به صورت تصادفی نمایش دهید.

SHELL
$ feh --scale-down --randomize img-1*

سوییچ sort--🔗

این سوییچ لیست عکس‌ها را بر مبنای یکی از کلمات کلیدی زیر به صورت صعودی مرتب کرده و آماده استفاده می‌کند:

  1. name
  2. filename
  3. width
  4. height
  5. pixels
  6. size
  7. format

غیر از دو مرتب‌سازی name و filename، مقداری تاخیر در شروع برنامه داریم، چون feh می‌بایست اطلاعات عکس‌ها را استخراج کند و سپس مرتب‌سازی را انجام دهد.

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

SHELL
$ feh --scale-down --sort name

عکس‌های دایرکتوری فعلی را بر مبنای عرض مرتب کرده و نمایش دهید.

SHELL
$ feh --scale-down  --sort width

سوییچ reverse--🔗

لیست عکس‌ها را معکوس می‌کند.

عکس‌های دایرکتوری doc/pic/~ و کلیه زیر دایرکتوری‌های آن را از بزرگترین عرض به کوچکترین عرض نمایش دهید.

SHELL
$ feh --info "echo '%wx%h'" --geometry 700x550 --recursive --sort width --reverse ~/doc/pic

برای اینکه ابعاد پنجره، بسته به اندازه‌ی هر عکس تغییر نکند و شناور نباشد با استفاده از سوییچ --geometry ابعاد پنجره را در 700x550 ثابت و برای اینکه تمام عکس در پنجره نمایش داده شود از سوییچ --scale-down استفاده کرده‌ایم. با استفاده از سوییچ --info ابعاد واقعی عکس را در قسمت پایین سمت چپ عکس می‌نویسیم تا درستی عملکرد دستور را تصدیق کنیم.

بسته به تعداد عکس‌ها ممکن است آماده شدن تصاویر طول بکشد چون feh می‌بایست ابتدا کلیه عکس‌ها را بررسی کرده و عرض آن‌ها را به دست بیاورد، سپس عمل مرتب‌سازی را انجام داده و نهایتا لیست حاصل شده را بر عکس کرده و مورد استفاده قرار دهد. البته عمل زمانبر، همان بررسی عرض عکس‌هاست و نه مرتب‌سازی و معکوس کردن.

سوییچ cycle-once--🔗

به صورت پیش فرض feh در حالت slideshow بعد از نمایش آخرین عکس، اقدام به نمایش اولین عکس موجود در لیست عکس‌ها می‌کند. سوییچ --cycle-once به این حالت پایان می‌دهد، یعنی بعد از نمایش آخرین عکس، پنجره نمایش بسته و feh خاتمه می‌یابد.

فقط یک‌بار تمام عکس‌های png دایرکتوری فعلی را نمایش بده.

SHELL
$ find . -d 1 -iname "*.png" | feh --scale-down --filelist - --cycle-once

سوییچ draw-tinted--🔗

بعضی سوییچ‌ها باعث می‌شوند که متنی روی عکس نوشته شود. سوییچ --draw-tinted پس زمینه متن مورد نظر را کمی شفاف‌تر می کند تا بیشتر قابل مشاهده باشد.

مثال در سوییچ --draw-filename

سوییچ draw-filename--🔗

این سوییچ نام فایل عکس را در بالا سمت چپ تصویر می‌نویسد.

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

SHELL
$ feh --scale-down --recursive --sort filename --draw-filename --draw-tinted

سوییچ start-at--🔗

بعد از سوییچ --start-at نام یک فایل عکس می‌آید. این سوییچ به feh می‌گوید که در لیست عکس‌ها بگرد و عکس با نام داده شده را پیدا کن و از این عکس به بعد اقدام به نمایش عکس‌ها کن. این سوییچ مناسب جلسات ارایه مطلب می‌باشد آنجاییکه در مد پیش فرض slideshow هستید و می‌خواهید از یک عکس به خصوص به بعد بحث را شروع یا پیگیری کنید.

عکس‌های من با پیشوند -img شروع می‌شوند و سپس یک عدد به دنبال هر عکس می‌آید. این عدد به صورت صعودی می‌باشد. یعنی اول ۱ و بعد ۲ و الی آخر. عکس‌ها را مرتب کرده و سپس از عکس img-8.jpg به بعد اقدام به نمایش عکس‌ها کنید.

SHELL
$ ls | sort -k1.5,1.10n | feh --start-at img-8.jpg --filelist -

سوییچ hide-pointer--🔗

این سوییچ باعث عدم نمایش نشانگر موس می‌شود.

مثال در معرفی سوییچ --fullscreen

سوییچ fullscreen--🔗

با استفاده از این سوییچ عکس‌ها در حالت تمام صفحه به نمایش در می‌آیند.

کلیه عکس‌هایی که نامشان متشکل از ۹ حرف است را در حالت تمام صفحه نمایش دهید. کاربر امکان کار با موس را نداشته باشد و نام فایل به صورت خوانا روی عکس نمایش داده شود.

SHELL
$ feh --draw-filename --draw-tinted --fullscreen --hide-pointer ?????????

نکته

انتخاب عکس‌هایی که نامشان دقیقا ۹ کاراکتر دارد را SHELL انجام می‌دهد و نه feh. این کار با تفسیر ۹ علامت ? متوالی که در انتهای دستور وارد کرده‌ایم توسط شِل انجام می‌شود. ما از قابلیت‌های پوسته همزمان با امکانات feh استفاده کرده‌ایم تا نتیجه‌ی مورد نظرمان را بگیریم.

سوییچ index-info--🔗

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

یک عکس از کلیه عکس‌های موجود در دایرکتوری فعلی تهیه کنید. زیر هر عکس نام آن و عرض و ارتفاع مربوط به آن نوشته شده باشد.

SHELL
$ feh --index --index-info "%n\n%wx%h"

سوییچ fullindex--🔗

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

--index --index-info "%n\n%S\n%wx%h"

است. مشاهده می‌کنید که این سوییچ مد index را فعال می‌کند و فقط متن زیر هر عکسِ کوچک، حاوی اطلاعات بیشتری نسبت به مد index معمولی است. این اطلاعات شامل نام فایل عکس، حجم عکس به صورت خوانا (human readable) و عرض و ارتفاع هر عکس می‌باشد.

سوییچ max-dimension--🔗

کاربرد این سوییچ به این صورت است:

--max-dimension [width]x[height]

با استفاده از این سوییچ feh تنها عکس‌هایی را نمایش می‌دهد که عرض آن width و یا کمتر و ارتفاعش height و یا کمتر باشد. اگر عرض یا ارتفاعی برای شما اهمیت ندارد عدد آن را یا یک مقدار بسیار بزرگ و یا ۱- بگذارید.

نکته مهم اینست که برای این منظور feh می‌بایست عرض و ارتفاع تمام عکس‌ها را محاسبه کند لذا ممکن است در زمان شروع برنامه کمی تاخیر به وجود بیاید.

عکس‌های دایرکتوری doc/pic/~ و کلیه زیر دایرکتوری‌های آن را که نهایتا ابعادی به اندازه 800x600 دارند به صورت اسلایدی و با توقف هر اسلاید ۳ ثانیه نمایش دهید.

SHELL
$ feh --slideshow-delay 3 --recursive --max-dimension 800x600 ~/doc/pic

سوییچ min-dimension--🔗

کاربرد این سوییچ به این صورت است:

--min-dimension [width]x[height]

در صورت استفاده از این سوییچ feh تنها عکس‌هایی را نشان می‌دهد که حداقل عرض و ارتفاعش اعداد داده شده باشند. اگر عرض یا ارتفاعی برای شما اهمیت ندارد آن را صفر بگذارید.

عکس‌های دایرکتوری doc/pic/~ را نمایش دهید. حداقل ارتفاع عکس‌ها می‌بایست ۴۵۰ پیکسل باشد.

SHELL
$ feh --info "echo %wx%h" --geometry 700x550 --min-dimension 0x450 ~/doc/pic

برای کنترل پنجره نمایش عکس، آن را در ابعاد 700x500 محصور کرده‌ایم. ابعاد واقعی عکس را با استفاده از سوییچ --info در پایین سمت چپ هر عکس می‌نویسیم تا درستی عملکرد دستور را مشاهده کنیم.

سوییچ no-menus--🔗

به صورت پیش فرض می‌توان روی هر عکس کلیک راست کرد و در این صورت منویی باز می‌شود. برای غیر فعال کردن این ویژگی از سوییچ --no-menus استفاده می‌شود.

عکس‌های دایرکتوری doc/pic/~ را به صورت تو در تو و تمام صفحه نمایش دهید. بعد از ۳ ثانیه مکث روی هر عکس، عکس بعدی به نمایش در بیاید. امکان راست کلیک کردن روی عکس را از کاربر بگیرید.

SHELL
$ feh --recursive --fullscreen --slideshow-delay 3 --no-menus ~/doc/pic

سوییچ version--🔗

شماره نسخه کنونی برنامه feh را در خروجی استاندارد (اکثرا ترمینال) می‌نویسد.

از چه نسخه‌ی feh استفاده می‌کنید؟

SHELL
$ feh --version
feh version 3.6.3
Compile-time switches: curl exif verscmp xinerama

سوییچ image-bg--🔗

تنها سه مقدار تعریف شده می‌گیرد : checks یا white یا black. گاهی اوقات در حاشیه عکس فضای شفاف و استفاده نشده‌ای قرار می‌گیرد. مثلا در سوییچ --geometry که عکس‌های بزرگ با توجه به ابعاد پنجره به نسبت عرض و ارتفاع کوچک می‌شوند ممکن است در اطراف عکس فضای خالی وجود داشته باشد. با استفاده از سوییچ --image-bg این فضای خالی را می‌توانیم با سه رنگ شطرنجی، سفید و یا سیاه پر کنیم.

عکس‌های دایرکتوری doc/pic/~ را در پنجره‌ای به ابعاد 750x450 نمایش دهید. فضای اطراف عکس‌ها سیاه رنگ باشد. نام و عرض و ارتفاع واقعی هر عکس را نیز درون عکس نمایش دهید.

SHELL
$ feh --image-bg black --draw-tinted --info "echo %n; echo %wx%h" --geometry 750x450 ~/doc/pic

سوییچ caption-path--🔗

اگر نام عکسی name.jpg باشد می‌توان هرگونه اطلاعاتی در مورد آن عکس را در فایلی به نام name.jpg.txt ذخیره کرد و از feh خواست که آن متن را درون عکس نمایش دهد. با استفاده از سوییچ --caption-path به feh می‌گویید که فایل‌های caption در کجا قرار گرفته است.

caption هر عکس را در صورت وجود، روی عکس نمایش دهید.

SHELL
$ feh --geometry 750x450 --recursive --scale-down --caption-path . ~/doc/pic

نکته مهم

آدرس وارد شده در جلوی --caption-path به صورت نسبی و نسبت به آدرس هر عکس سنجیده می‌شود. به عنوان نمونه در مثال بالا، فایل caption هر عکس باید دقیقا در دایرکتوری همان عکس باشد.

action ها🔗

خوشبختانه feh علاوه بر تعریف امکانات درونی بسیار زیاد، امکان تعریف ۱۰ عملیات شخصی کاربر را نیز فراهم می‌کند. این ۱۰ عملیات از سوییچ --action و --action1 شروع و تا --action9 ادامه دارد.

در جلوی این سوییچ‌ها دستور دلخواه کاربر می‌آید که در محیط SHELL اجرا می‌شود. از جانگه‌دار‌ها نیز می‌توان بسته به نوع هر دستور استفاده کرد. سوییچ --action با زدن دگمه 0 اجرا می‌شود. سوییچ --action1 باز زدن دگمه 1 و به همین ترتیب action های بعدی با کلیدهای متناظر با شماره‌شان اجرا می‌گردند.

نکته

با اجرا شدن هر اکشن به صورت پیش فرض عکس بعدی به نمایش در می‌آید. برای غیر فعال کردن این حالت قبل از دستور ; بگذارید.

دستور feh بنویسید که با زدن دگمه 7 آدرس فایل و عرض و ارتفاع عکس نمایش داده شده را در خروجی استاندارد (ترمینال) چاپ کند.

SHELL
$ feh --geometry 750x450 --action7 "echo '%f ---> %wx%h'" ~/doc/pic

دستور feh بنویسید که با زدن دگمه 9 آدرس دقیق عکس را در فایل images.txt/~ ذخیره کند. بعد از اجرا شدن دستور، عکس عوض نشود و همان عکسی که آدرسش در فایل قرار گرفته است نمایش داده شود.

SHELL
$ feh --geometry 750x450 --action9 ';y=`realpath "%f"`; echo "$y" >>~/images.txt' ~/doc/pic

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

سوییچ draw-action--🔗

با استفاده از این سوییچ در صورتیکه action یا action هایی تعریف کرده باشیم، لیست آن‌ها در بالا سمت چپ عکس نمایش داده می‌شود.

دستور feh بنویسید که با زدن دگمه 8 عکس جاری را در دایرکتوری images/~ کپی کند. لطفا لیست اکشن‌ها را در هر عکس نمایش دهید.

SHELL
$ mkdir ~/images
$ feh --draw-action --action8 ';cp "%f" ~/images' ~/doc/pic

نکته مهم

جا‌نگه‌دار f% را بین "" محصور کرده‌ایم تا فایل‌هایی که حاوی space در نامشان هستند درست quote شوند.

به جای استفاده از سوییچ --draw-action، می‌توان هنگام نمایش عکس، دگمه A را زد. برای پنهان کردن اکشن‌ها، مجددا هنگامی که فوکوس روی عکس است دگمه‌ی A را فشار دهید.

سیگنالها و feh🔗

دو سیگنال SIGUSR1 و SIGUSR2 در feh به ترتیب برای رفتن به عکس بعدی و رفتن به عکس قبلی استفاده می‌شوند. به مثال زیر توجه کنید.

با استفاده از سیگنال SIGUSR1 عکس‌های دایرکتوری doc/pic/~ را به صورت اسلاید نمایش دهید. مدت نمایش هر عکس ۳ ثانیه باشد.

SHELL
$ feh --geometry 500x500 --scale-down ~/doc/pic &
$ while pidof feh 1>/dev/null 2>&1
do 
    kill -SIGUSR1 `pidof feh`
    sleep 3
done

در مثال فوق ابتدا feh را در پس زمینه اجرا می‌کنیم تا خط فرمان برای پذیرش دستورات بعدی آزاد شود. سپس در حلقه while مدام از وجود پروسس feh اطمینان حاصل می‌کنیم. اگر پروسس وجود داشت با استفاده از دستور kill سیگنال SIGUSR1 را به آن ارسال می‌کنیم.

استفاده از سیگنال SIGUSR2 برای نمایش عکس قبلی دقیقا مشابه سیگنال SIGUSR1 است.

عکس‌های دایرکتوری فعلی را بر حسب حجم فایل به صورت نزولی مرتب کنید ولی با استفاده از سیگنال SIGUSR2 لیست عکس‌ها را به صورت معکوس (از کمترین به بیشترین حجم) مرور کنید.

SHELL
$ ls -S  | feh --filelist - --geometry 500x500 --scale-down &
$ while pidof feh 1>/dev/null 2>&1
do 
    kill -SIGUSR2 `pidof feh`
    sleep 3
done

feh بعنوان تنظیم کننده wallpaper🔗

یکی از مفیدترین قابلیت‌های feh قابلیت نصب wallpaper است. feh به صورت پیش فرض کد اجرا شده جهت نصب wallpaper جدید را در فایل fehbg./~ قرار میدهد. با قرار دادن آدرس این فایل در فایل startup محیط گرافیگی خود (فایل xinitrc.) همیشه می‌توانید آخرین wallpaper را در background داشته باشید.

feh قابلیت نصب عکس زمینه در ۵ حالت مختلف را دارد. این حالت‌ها را به صورت جداگانه در زیر مرور می‌کنیم. لطفا بعد از خواندن توضیحات سه عکس با این ابعاد انتخاب کنید: یکی بسیار بزرگ، دومی متوسط و سومی کوچک و ۵ سوییچ زیر را روی هر ۳ عکس اجرا کنید تا تفاوت سوییچ‌ها را بهتر متوجه شوید.

سوییچ bg-center--🔗

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

عکس doc/pic/5.jpg/~ را به عنوان عکس پس زمینه به حالت center استفاده کنید.

SHELL
$ feh --bg-center ~/doc/pic/5.jpg

سوییچ bg-fill--🔗

عکس تمام صفحه‌ی پس زمینه را می‌پوشاند. ممکن است عکس کوچک و بزرگ شود ولی نسبت عرض و ارتفاع آن حفظ می‌شود و همچنین احتمال دارد قسمتهایی از عکس در پس زمینه حذف شود.

عکس doc/pic/5.jpg/~ را به عنوان عکس پس زمینه به حالت fill استفاده کنید.

SHELL
$ feh --bg-fill ~/doc/pic/5.jpg

سوییچ bg-max--🔗

مانند سوییچ --bg-fill نسبت عرض و ارتفاع عکس را حفظ می‌کند ولی سعی در پوشاندن کل فضای پس زمینه ندارد بلکه تصویر را به حدی بزرگ یا کوچک می‌کند که یک طرف صفحه نمایش فضای سیاه رنگ داشته باشد. کل عکس بدون حذف‌شدگی در پس زمینه نمایش داده می‌شود.

عکس doc/pic/5.jpg/~ را به عنوان عکس پس زمینه به حالت max استفاده کنید.

SHELL
$ feh --bg-max ~/doc/pic/5.jpg

سوییچ bg-scale--🔗

عکس تمام صفحه را می‌پوشاند و ممکن است عکس کوچک و بزرگ شود و در این کوچک و بزرگ شدن نسبت عرض و ارتفاع حفظ نمی‌شود.

عکس doc/pic/5.jpg/~ را به عنوان عکس پس زمینه به حالت scale استفاده کنید.

SHELL
$ feh --bg-scale ~/doc/pic/5.jpg

سوییچ bg-tile--🔗

اگر عکس کوچک باشد آن را به صورت کاشی‌وار در پس زمینه نشان می‌دهد. عکس‌ها کوچک و بزرگ نمی‌شوند.

عکس doc/pic/5.jpg/~ را به عنوان عکس پس زمینه به حالت tile استفاده کنید.

SHELL
$ feh --bg-tile ~/doc/pic/5.jpg

پایان مطلب و نتیجه گیری🔗

اگر بخواهم مختصر و مفید این مبحث را نتیجه‌گیری کنم باید بگویم «feh فوق‌العاده است.» به شخصه قبل از آشنایی با feh درکی از قابلیت‌هایی که یک نرم‌افزار مشاهده‌ی عکس می‌تواند داشته باشد نداشتم.

به نظرم با feh می‌توان هم زمان از تصویر و نرم‌افزار لذت برد.

شاد باشید.

نوشته شده در: 1402-02-03 (1 سال 6 ماه 4 هفته پیش)

من محسن هستم؛ برنامه‌نویس سابق PHP و Laravel و Zend Framework و پایتون و فلسک. تمرکزم بیشتر روی لاراول بود! الان از صفر مشغول مطالعات اقتصادی هستم.

برای ارتباط با من یا در همین سایت کامنت بگذارید و یا به dokaj.ir(at)gmail.com ایمیل بزنید.

در مورد این مطلب یادداشتی بنویسید.