لینوکس و من

۲۱۶ مطلب با موضوع «ترفند» ثبت شده است

انتخاب عنوان خیلی سخت بود!
کاری که میخوایم بکنیم اینه که از یک مطلب چاپ شده که میتونه کتاب، نمونه سوال، مجله و هر چیزی باشه، عکس بگیریم و این عکس ها رو در یک PDF جمع کنیم. به طوری که کیفیت PDF مثل کتاب های چاپی باشه، و حجم زیادی هم نگیره.
 
تصویر اصلی که توسط گوشی گرفته شده
 
 
تصویر ویرایش شده توسط اسکریپت
 
 
اول باید دقت کنید که با موبایل یا اسکنر تصاویر رو به دقت تهیه کنید تا نیاز به برش یا crop تصاویر نباشه. اگر دقت نکنید اون وقت مجبورید دونه دونه عکس ها رو کراپ کنید. چون هر کدوم با دیگری متفاوته و نمیشه این کار رو توسط اسکریپت به صورت فله ای انجام داد.
اگر بخواید فقط از برنامه رسمی تلگرام نسخه دسکتاپ استفاده کنید و سراغ نسخه وب نرید، با یک ترفند ساده میتونیم بیش از یک session از تلگرام دسکتاپ رو در لینوکس اجرا کرد.
کافیه یک working directory جدید بسازیم و تحت اون تلگرام رو اجرا کنیم. مثلا:
mkdir ~/.local/share/TelegramDesktop2
این دایرکتوری میتونه هر جا و هر اسمی که دوست دارین داشته باشه. حالا با دستور زیر، تلگرام رو در این دایرکتوری اجرا میکنیم:
/PATH/TO/TG/Telegram -many -workdir ~/.local/share/TelegramDesktop2

/PATH/TO/TG یعنی جایی که تلگرام رو دانلود کردید و نصب کردید. 

پ.ن: نسخه دسکتاپ در حال حاضر در مخازن مانجارو وجود داره و به راحتی از این طریق هم قابل نصبه. اما ایرادی که به این روش وارده اینه که تلگرام زود به زود آپدیت های جدیدی برای اپ دسکتاپش ارائه میده و شما تا از طریق مخازن اون رو آپدیت نکنین، برنامه به روز نمیشه. و وقتی هم که این کار رو میکنین، مشکل dependency پیش میاد و مجبور میشین چیزای دیگه مثل qt5-base و غیره رو هم به روز کنید. و وقتی هم که اون ها رو بروز میکنین ممکنه برنامه های دیگه اجرا نشن! خلاصه اینکه برای آپدیت یه برنامه مجبورین کل سیستم رو بروزرسانی کنین که منطقی نیست.
اما نسخه تلگرامی که از سایت تلگرام دانلود کنین این مشکل رو نداره و هر بار که نسخه جدیدید ارائه میشه خودش رو آپدیت میکنه و هیچ مشکلی هم پیش نمیاد. بنابراین ترجیح من اینه که از این روش استفاده کنم.

نمایش thumbnails برای فایلهای XCF

فرمت XCF فرمت پیشفرض ذخیره سازی تصاویری است که در GIMP ساخته میشن. متاسفانه به طور پیشفرض در Nautilus این فایلها تصاویر بندانگشتی یا همون Thumbnail ندارن. اما چاره کار بسیار راحته. کافیه در آرچی ها با نصب یک پکیج از AUR این مورد رو برطرف کنیم (برای اوبونتو به لینک منبع مراجعه کنید)
yaourt -S gnome-xcf-thumbnailer
ممکنه از این طریق نصب نشه و به شما ارور validity بده. اگه این طور شد باید دستی این کار رو انجام بدیم!
اول به سایت AUR برای این پکیج میریم و با کلیک روی Download snapshot فایلش رو دانلود میکنیم. و در یک پوشه ای extract میکنیم. بعد با این دستور بسته نصبی رو میسازیم:
makepkg -g >> PKGBUILD && makepkg
و در پایان عملیات با این دستور کار نصب رو تموم میکنیم:
makepkg --install 
اگر احیانا بسته source دانلود نمیشه، میتونین با مراجعه مستقیم خود سورس رو دانلود کنید و در پوشه ای که فایل PKGBUILD قرار داره بذاریدش.
حالا باید تصاویر بندانگشتی فایلهایی که اصطلاحا fail شدن رو پاک کنیم تا دوباره برای ساختنشون تلاش کنه:
rm -r ~/.cache/thumbnails/fail
از این به بعد فایلهای XCF هم thumbnail خواهند داشت.

کشیدن Tab در کروم و بوکمارک کردن آن

مدت ها بود که از فایرفاکس در لینوکس استفاده میکردم. چند روزی است که دارم از کروم استفاده میکنم و میبینم چقدر خوبه! ولی یک امکانی که در فایرفاکس داریم اینه که وقتی یک Tab رو میگیرید و میکشید (drag & drop) میتونید اون رو روی bookmarks bar بیارید و بوکمارکش کنید. در حالی که اگر در کروم این کار رو بکنید اون Tab جدا میشه و یک New window ایجاد میشه.

اما راه حل خیلی ساده است! بجای کشیدن Tab باید URL اون صفحه رو بکشیم، و به راحتی اون صفحه رو وارد bookmarks bar کنیم. 

راه اندازی مجدد Gnome Shell از یک نشست دیگر

ممکنه براتون پیش بیاد که گنوم شل حالا به هر دلیلی هنگ کنه و هیچ راهی نداشته باشید که اون رو مجدد restart کنید. حتی کلید Alt + F2

برای اینکار میتونید با رفتن به یک TTY دیگه، مثلا با Ctrl + Alt + F3 و لاگین کردن به حساب کاربریتون و اجرای دستور زیر در توزیع های آرچی گنوم شل رو restart کنید:

pkill -HUP gnome-shell
و بعد به TTY قبلی که بصورت پیش فرض احتمالا F2 باشه برگردید: Ctrl + Alt + F2

نمایش ستاره در محل تایپ پسورد sudo

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


برای این کار باید فایل etc/sudoers/ رو ویرایش کنیم. راه صحیح و اصولیش اینه که با این دستور این کار رو بکنیم:
 sudo visudo
اما کار با این روش خیلی روی اعصابه! من با gedit به راحتی این کار رو میکنم:
sudo gedit /etc/sudoers
دنبال عبارت Defaults env_reset بگردید. و اون رو به Defaults env_reset,pwfeedback تغییر بدید. اگر نبود، اضافه کنید. فایل رو ذخیره کنید و در ترمینال دستور reset رو اجرا کنید تا تغییرات اعمال بشه.

تغییر خودکار هدست بلوتوث بعد از اتصال

وقتی یک هدست بلوتوث کانکت میکنیم، باید به تنظیمات صدا بریم و خروجی رو روی اون تنظیم کنیم. میتونیم این کار رو خودکار کنیم! یعنی وقتی هدست کانکت شد، خروجی صدا به هدست منتقل بشه و دیگه لازم نباشه وارد تنظیمات بشیم.

باید فایل etc/pulse/default.pa/ رو باز کنیم و عبارت زیر رو بهش اضافه کنیم:
# automatically switch to newly-connected devices
load-module module-switch-on-connect
و بعد یک بار restart (البته میشه خود pulse رو ری استارت کرد: pulseaudio -k)

انجام Hybernate بعد از مدت مشخصی Suspend

ما معمولا در لینوکس سیستم رو suspend میکنیم. خب این کار هزینه داره و از باتری یا برق برای فعال بودن استفاده میکنه. میتونیم در آرچی ها با سرویسی که در ادامه ایجاد میکنیم به سیستم میگیم که اگر بعد از ۲ ساعت suspend کسی resume نکرد، سیستم رو hybernate کن. این طوری مصرف باتری‌مون بهینه تر میشه و منطقی تر هم هست. البته به شرطی که swap داشته باشید.

ابتدا باید سرویس مورد نظرمون رو در systemd بسازیم:
--------------------------------------------------------
sudo gedit /etc/systemd/system/suspend-to-hibernate.service
--------------------------------------------------------

[Unit]
Description=Delayed hibernation trigger
Documentation=https://bbs.archlinux.org/viewtopic.php?pid=1420279#p1420279
Documentation=https://wiki.archlinux.org/index.php/Power_management
Conflicts=hibernate.target hybrid-sleep.target
Before=sleep.target
StopWhenUnneeded=true

[Service]
Type=oneshot
RemainAfterExit=yes
Environment="WAKEALARM=/sys/class/rtc/rtc0/wakealarm"
Environment="SLEEPLENGTH=+2hour"
ExecStart=-/usr/bin/sh -c 'echo -n "alarm set for "; date +%%s -d$SLEEPLENGTH | tee $WAKEALARM'
ExecStop=-/usr/bin/sh -c '\
  alarm=$(cat $WAKEALARM); \
  now=$(date +%%s); \
  if [ -z "$alarm" ] || [ "$now" -ge "$alarm" ]; then \
     echo "hibernate triggered"; \
     systemctl hibernate; \
  else \
     echo "normal wakeup"; \
  fi; \
  echo 0 > $WAKEALARM; \
'

[Install]
WantedBy=sleep.target


و بعد سرویس رو فعال می کنیم:
1. sudo systemctl enable disable-usb-wakeup.service
2. sudo systemctl start disable-usb-wakeup.service

غیر فعال کردن wakeup برای USBها

متوجه شدم که ماوس وایرلس باعث میشه بعد از suspend با حرکت دادن یا کلیک کردن، لپتاپ resume بشه. گشتی زدیم و راه حل یافتیم. باید یک سرویس برای systemd درست کنیم و این موضوع رو غیر فعال کنیم!

--------------------------------------------------------
sudo nano /etc/systemd/system/disable-usb-wakeup.service
--------------------------------------------------------
[Unit]
Description=Disable USB wakeup triggers in /proc/acpi/wakeup

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo XHC > /proc/acpi/wakeup; echo WLAN > /proc/acpi/wakeup"
ExecStop=/bin/sh -c "echo XHC > /proc/acpi/wakeup; echo WLAN > /proc/acpi/wakeup"
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

حالا سرویس رو فعال میکنیم:
1. sudo systemctl enable disable-usb-wakeup.service
2. sudo systemctl start disable-usb-wakeup.service


ویلند(wayland)