تبلیغات
لینوکس و من - مطالب ترفند
لینوکس و من

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

نویسنده : محسن شایان | تاریخ: 1397/08/14

این روش با روش قبلی فرق داره !

به about:config برید و یک string جدید به نام widget.content.gtk-theme-override درست کنید و مقدارش رو برای مثال Adwaita:light قرار بدید.

اسکن اسناد و تبدیل به PDF هایی با کیفیت چاپی، در لینوکس

نویسنده : امین | تاریخ: 1397/04/25

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

تصویر اصلی که توسط گوشی گرفته شده

 
تصویر ویرایش شده توسط اسکریپت


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

۱- همه عکس ها رو در یک فولدر قرار بدید. چون عکس ها پشت سر هم گرفته شدن، پس نیازی به تغییر نام و مرتب کردن اونها نیست. 
۲- باید imagemagic رو در لینوکس خودتون نصب داشته باشید.
۳- اسکریپت زیر رو یک جا ذخیره کنید و بهش مجوز اجرایی بدید:

#!/bin/bash
#
# Digital Camera + This Software + Printer = A Document Photocopier
#
# Input:  pictures of B&W Text documents taken with a digital camera using
#         flash from about 3 feet away with no dark border around the page.
#
# Output1: b-file.tif (a very small B&W TIF file)
# Output2: g-file.jpg (a alternative grayscale file)
#
# If input is purely black and white,  Output1 should be better
# If input is not purely black and white, Output2 may be better
#
# Corey Satten, corey @ cac.washington.edu, March 2007

do1 () {
   echo starting $1 1>&2
   BASE="${1##*/}"; NAME=${BASE%.[jJ][pP][gG]}; TMP1="t-$BASE"; TMP2="x-$BASE"
   trap 'rm -f "$TMP1" "$TMP2"; exit' 0 1 2 13 15
   CGQ="-colorspace gray -quality"
   CGT="-compress group4 -density 480x480"

   convert $CGQ 99 "$1" -resize 5120x5120 "$TMP2"
   convert $CGQ 99 "$1" -resize 1024x1024 -negate -blur 15,15 -resize 5120x5120 "$TMP1"
   composite $CGQ 99 -compose plus "$TMP2" "$TMP1" "$TMP1"
   convert $CGQ 60 "$TMP1" -normalize -level 50,85% "g-$BASE"
   convert $CGT "$TMP1" -normalize -threshold 85% "b-$NAME.tif"
   rm -f "$TMP1" "$TMP2"
}

# This tries to detect multiprocessors and run 2 conversions in parallel
# Move CPUS=1 after the test to effectively disable the test.
CPUS=1
if [ -f /proc/cpuinfo ] ;then
    CPUS=`grep ^processor /proc/cpuinfo | wc -l`
    if [ "$CPUS" -lt 2 ] ;then CPUS=1; fi
fi

for i in "$@"; do
   case $#/$CPUS in
    0/*) exit;;                                     # done
    1/*) do1 "$1"; shift;;                          # only one file to do
    */1) do1 "$1"; shift;;                          # only one cpu to use
      *) do1 "$1" & do1 "$2"; wait; shift; shift;;  # process 2 files at once
   esac
done

exit 0

۴- حالا باید این اسکریپت رو در فولدری که عکسهاتون قرار داره اجرا کنید. مثلا:
/PATH/TO/scan /PATH/TO/*.jpg

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

۵- حالا میخوایم از تصاویر تولید شده، یک PDF بسازیم. به راحتی با این دستور میتونیم فایلهای tiff رو تبدیل به یک فایل PDF کنیم:
convert /PATH/TO/*.tif /PATH/TO/custom.pdf

توجه داشته باشید که نتیجه به صورت سیاه و سفید خواهد بود. شما میتونید با تغییر پارامترها در اسکریپت بالا، نتیجه رو به دلخواه خودتون عوض کنید.
اگر شما از قبل یک PDF داشتید که از یک کتابی تهیه شده و صرفا عکسها رو برداشتن PDF کردند، بدون اینکه این کارها رو روشون انجام بدن، میتونین با دستور زیر به سادگی یک فایل PDF رو یه فایلهای jpg تبدیل کنید. یعنی مثلا یک فایل PDF صد صفحه ای، تبدیل خواهد شد به صد تا فایل jpg و اونوقت میتونین عملیات دلخواهتون رو روی این عکسها انجام بدید و مجدد خروجی PDF تولید کنید. 
برای این کار نیاز به نصب pdftoppm خواهید داشت
 pdftoppm /PATH/TO/file.pdf  filename -jpeg
قسمت filename اسم فایلهای jpeg است که قرار است تولید شوند. ضمنا شما میتونید بجای آپشن jpeg از png هم استفاده کنین.

لینک‌های مرتبط

چگونه بیش از یک تلگرام در دسکتاپ لینوکس داشته باشیم؟

نویسنده : امین | تاریخ: 1397/04/6

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

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

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

لینک‌های مرتبط

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

نویسنده : امین | تاریخ: 1397/03/24

فرمت 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 در کروم و بوکمارک کردن آن

نویسنده : امین | تاریخ: 1397/03/23

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

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

لینک‌های مرتبط

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

نویسنده : امین | تاریخ: 1397/02/11

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

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

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

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

نویسنده : امین | تاریخ: 1396/10/25

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


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

لینک‌های مرتبط

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

نویسنده : امین | تاریخ: 1396/10/3

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

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

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

نویسنده : امین | تاریخ: 1396/09/27

ما معمولا در لینوکس سیستم رو 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ها

نویسنده : امین | تاریخ: 1396/09/27

متوجه شدم که ماوس وایرلس باعث میشه بعد از 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


1 2 3 4 5 6 7 ...