воскресенье, 6 декабря 2015 г.

Сохранение яркости экрана при загрузке ноутбука на Ubuntu

Некоторые пользователи жалуются на то, что Ubuntu не запоминает установленный уровень яркости экрана. Каждый раз при перезагрузке или пробуждения машины со ждущего режима, яркость экрана сбрасывает, становиться максимального уровня.
screen - brightness скрипт для сохранения яркости экрана в Uubuntu
Благодаря одному пользователю Launchpad появился специальный скрипт. Norbert сделал sysvinit-backlight скрипт, который автоматически запоминает установленный уровень яркости экрана для всех видеоадаптеров и загружает его при загрузке, перезагрузке, или после пробуждения машины.

Чтобы установить скрипт яркости экрана Ubuntu:

Открыть терминал (Ctrl + Alt + T) и выполните следующие команды по добавлению соответствующего PPA репозитория:
Если вы не хотите, добавлять этот PPA репозиторий, тогда Вы можете, загрузит установочный пакет из этой страницы https://launchpad.net/~nrbrtx/+archive/ubuntu/sysvinit-backlight/+packages. Скрипт яркости экрана поддерживается в Ubuntu 14.10, Ubuntu 14.04 и даже Ubuntu 12.04.

суббота, 5 декабря 2015 г.

Перенос Google Chrome на RAM-диск в Linux

Опишу простой способ переноса кеша, настроек и прочих локальных данных Google Chrome на RAM-диск в Linux. Это ускорит скорость работы браузера и исключит насилие над диском (что особенно критично, если у вас SSD).

Статья не содержит ничего интересного для более-менее продвинутых пользователей Unix-like систем. Совсем ничего.



Linux предоставляет нам все средства для того, чтобы наша задача решалась за 10 минут, в лоб и правильно, как бы мы ни старались сделать всё через жопу. Я буду намеренно писать подробно.

1. Создаём RAM-диск



Никаких сторонних приложений не требуется. Linux поддерживает RAM-диски на уровне ядра. Эта штука называется tmpfs. Всё, что нам нужно, так это смонтировать tmpfs в любой удобное нам место. Создадим каталог.chrome/ramdisk в домашней директории и добавим следующую строку в /etc/fstab:

tmpfs /home/сс/.chrome/ramdisk tmpfs noatime,nodiratime,nodev,nosuid,uid=1000,gid=100,mode=0700,size=300M 0 0


заменив сс на имя вашего пользователя, uid и gid — на его идентификаторы (узнать их можно командой id),size — на желаемый размер диска. Если у вас оперативку хоть ложкой ешь, то размер можно взять и побольше. Особенностью tmpfs является то, что указанный размер не будет резервироваться в памяти — память не будет тратиться вообще, пока вы фактически не напихаете в RAM-диск данные. Командой df -h вы всегда можете посмотреть, насколько заполнен этот и другие смонтированные диски.

2. Отправляем локальные данные Хрома в наш RAM-диск



Никаких махинаций с настройками и ключами хрома делать не надо. Все юниксовые файловые системы поддерживают символические ссылки. Поэтому тупо перенаправим ~/.config/google-chrome и~/.cache/google-chrome в наш диск:

cd ~/.chrome/ramdisk
mkdir cache config
ln -s ~/.config/google-chrome config
ln -s ~/.cache/google-chrome cache


3. Ограничиваем размеры кеша в Google Chrome



Мы опять не будет играться с ключами, а используем политики. Для этого создадим файл/etc/opt/chrome/policies/managed/cache-size.json с таким содержанием:

{
    "DiskCacheSize":    40000000,
    "MediaCacheSize":   30000000
}

где циферки — это размеры общего кеша и медиа-кеша соответственно. Можете менять на свой вкус, но следя, чтобы размер ~/.config/google-chrome + указанные размеры заполняли диск процентов на 80. Ибо размер первого каталога никак не регулируется, а DiskCacheSize и MediaCacheSize вовсе не являются жёсткими границами: Хром может их немного превысить, если будет очень нужно. У меня на момент написания статьи RAM-диск используется на 83%:

$ df -h ~/.chrome/ramdisk
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           300M  249M   52M  83% /home/cc/.chrome/ramdisk


4. Поддерживаем состояние RAM-диска между перезагрузками компьютера



Как только вы нажали кнопочку «power off», все данные из оперативки улетели в рай для битов. Мы же не хотим начинать каждый день с нового листа — нам нужно сохранять RAM-диск на жёский или твердотельный диск при выходе из системы и восстанавливать его при загрузке. Есть примерно миллион способов это сделать. Если у вас systemd, то можно создать сервис /etc/systemd/system/chrome-ramdisk.service:

[Unit]
Description=Keep Chrome's RAM disk between power-offs

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/home/сс/bin/chrome-ramdisk restore
ExecStop=/home/сс/bin/chrome-ramdisk save

[Install]
WantedBy=multi-user.target

где ~/bin/chrome-ramdisk — простенький скрипт, который сохраняет RAM-диск в tar-архив или, наоборот, извлекает этот архив в пустой RAM-диск:
#!/bin/bash

shopt -s dotglob
cd /home/cc/.chrome

if [[ "$1" == "save" ]]; then
        rm ramdisk.tar
        tar cpf ramdisk.tar ramdisk/*
elif [[ "$1" == "restore" ]]; then
        rm -rf ramdisk/*
        tar xf ramdisk.tar
fi

Сервис включается командой
$ sudo systemctl enable chrome-ramdisk.service


Если вас научили ненавидеть Леннарта П., то аналогичный эффект можно получить и в старом добром init-scripts, используя rc.local, rc.local_shutdown или тому подобные скрипты.



P. S. Google Chrome и Chromium — не совсем одно и то же. В частности, у них разные пути к каталогам настроек, кеша и политик. Статья написана для Google Chrome. Минута гугления обеспечит вам нужными путями для хромиума.

Усё.

воскресенье, 29 ноября 2015 г.

Конвертировать изображения из PNG в JPG и наоборот с помощью командной строки в Linux

Мы очень часто в повседневной жизни сталкиваемся с словом - Конвертировать.Конвертировать - преобразовывать из одного формата в другой. Это касается когда мы конвертируем/преобразовываем деньги из одной валюты в другую, например, евро в долларили любую другую денежную единицу, конвертация в производстве, когда определённый вид продукции преобразовывается в иной, например, в металлургии получить металл путём обработки исходного продукта (руды) в конвертере (металлургическая печь) и т.п. 
В данной статье пойдёт речь о конвертации (преобразовании) формата файла изображения из PNG в JPG и наоборот, с помощью командной строки.

Программа convert входит в набор программ (консольных утилит) для чтения и редактирования файлов множества графических форматов — ImageMagick.

Как использовать команду Convert

Прежде всего в вашей системе должна быть установлена программа ImageMagick. Если она не установлена, выполните следующую команду в терминале для установки в Ubuntu и производные:

sudo apt-get install imagemagick


После того как вы убедитесь, что ImageMagick установлен в системе, можно приступить к конвертации путём применения команды convert входной файл выходной файл.

Например, у меня в папке Изображения, файлового менеджера, находится снимок в формате .png:


Прежде всего необходимо войти в данную папку командой в терминале:

cd ~/Изображения

Примечание. Если у вас снимок находится в другой папке, то нужно войти в эту папку, изменив в командеИзображения на название данной папки. Например, если у вас снимок находится в папке Загрузки, то команда будет выглядеть: cd ~/Загрузки и т.п.

После того как вы вошли в искомую папку, выполните в терминале команду, которая конвертирует (преобразует) формат файла из .png в .jpg:

convert терминал.png терминал.jpg


Как видно на снимке, теперь после выполнения команды в папке Изображения у меня появился конвертированный снимок в формате .jpg.

Таким же образом можно преобразовать изображение и наоборот, из формата .jpg в .png

Команда convert может быть использована более чем в 100 различных опциях.
Например, для изменения размеров снимка. Уменьшить размер изображения, прежде чем он превратится в формат.png:

convert терминал.jpg -resize 200 терминал.png



Для получения списка поддерживаемых форматов команды convert введите и выполните в терминале команду:

convert -list format 

суббота, 28 ноября 2015 г.

How to mount Google Drive on Linux

As I speak, more than 22,000 people signed up for a petition, desperately wanting to have an official native Linux client for Google Drive, and yet their voice is still being ignored by Google. Perhaps when it comes to boosting their bottom line, Linux desktop market is not a priority for Google.
They can ignore Linux desktop market all they want, but they cannot ignore the power of FOSS. Faced with the frustration, the open-source community responded, producing unofficial Google Drive clients such as Grive or SyncDrive. These clients are file synchronization tools which sync files and folders between local file system and remote Google Drive. As such, you cannot mount Google Drive using these tools.
If you want to mount Google Drive on Linux, you can try google-drive-ocamlfuse, which is a FUSE-based file system backed by Google Drive. Using this user-space file system, you can mount your Google Drive account on Linux, and have full read/write access to files/folders in Google Drive as if they were local files/folders.
In this tutorial, I will describe how to mount Google Drive on Linux with google-drive-ocamlfuse.

Install google-drive-ocamlfuse on Linux

google-drive-ocamlfuse is written in OCaml, and you can use OPAM (OCaml package manager) to build and install google-drive-ocamlfuse from its source. In this case, you need to install prerequisites such as FUSE. The following are distro-specific such instructions.
To install google-drive-ocamlfuse on Debian:
$ sudo apt-get install ocaml camlp4-extra
$ git clone https://github.com/OCamlPro/opam.git
$ cd opam
$ ./configure
$ make
$ sudo make install
$ sudo apt-get install m4 libcurl4-gnutls-dev libfuse-dev libsqlite3-dev
$ opam init
$ opam update
$ opam install google-drive-ocamlfuse
After successful build, the google-drive-ocamlfuse binary will be found in ~/.opam/system/bin. Add this path to your PATH environment variable as follows.
$ vi ~/.bashrc
PATH= $PATH:$HOME/.opam/system/bin
export PATH 
$ source ~/.bashrc
To install google-drive-ocamlfuse on Ubuntu or Linux Mint, you can use its official PPA as follows.
$ sudo add-apt-repository ppa:alessandro-strada/ppa
$ sudo apt-get update
$ sudo apt-get install google-drive-ocamlfuse
To install google-drive-ocamlfuse on Fedora:
$ sudo yum install ocaml ocaml-camlp4-devel ocaml-ocamldoc
$ git clone https://github.com/OCamlPro/opam.git
$ cd opam
$ ./configure
$ make
$ sudo make install
$ sudo yum install m4 fuse fuse-devel libcurl-devel libsqlite3x-devel zlib-devel
$ opam init
$ opam update
$ opam install google-drive-ocamlfuse
After successful build, the google-drive-ocamlfuse binary will be found in ~/.opam/system/bin. Add this path to your PATH environment variable as follows.
$ vi ~/.bashrc
PATH=$PATH:$HOME/.opam/system/bin
export PATH 
$ source ~/.bashrc
To install google-drive-ocamlfuse on CentOS or RHEL, you can follow the above Fedora instructions. However, the default version of OCaml installed on CentOS/RHEL does not meet the minimum version requirement (3.12.1) for building OPAM. Therefore you need to upgrade OCaml by installing it from source.

Mount Google Drive with google-drive-ocamlfuse

The first step is to add your user name to Linux group named fuse as follows, so that Google Drive can be mounted by you (i.e., a non-root user).
$ sudo usermod -a -G fuse <user_name>
$ exec su -l $USER
Next, configure google-drive-ocamlfuse by running it without any argument:
$ google-drive-ocamlfuse
This will open up a web browser window, asking you to log in to your Google account. After logging in, you will see the following screen, requesting for permission. Click on "Accept".
Next you have to grant "gdfuse OAuth2 Endpoint" access to your Google account. For that, log in to your Google account again.
Click on "Allow" button.
Then you should see a message saying that google-drive-ocamlfuse was successfully granted access. Close the browser tab / window to finalize.
At this point, the initial configuration is completed. You should see a new directory named ~/.gdfuse/default created, which contains the configuration file "config", application state and file cache.
Now proceed to create a mount point, and mount Google Drive as follows.
$ mkdir ~/googledrive
$ google-drive-ocamlfuse ~/googledrive
Use mount command to check if Google Drive is mounted successfully.
$ mount
google-drive-ocamlfuse on /home/dev/googledrive type fuse.google-drive-ocamlfuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
You can also check how much space is left on your Google Drive account by using df command.
$ df
google-drive-ocamlfuse  15728640     304  15728336   1% /home/dev/googledrive
To unmount the Google Drive file system, simply run:
$ fusermount -u ~/googledrive

Mount Multiple Google Drive Accounts Simultaneously

If you have more than one Google Drive account, you can mount them simultaneously. In this case, use "-label" option to distinguish between them as follows.
$ google-drive-ocamlfuse -label [label] [mountpoint]
The first time you run google-drive-ocamlfuse with a given label, you will need to go through the same Google authentication procedure as before, but for a different Google account. After that, ~/.gdfuse/[label] will be created to store configuration data for the different Google account.

Auto-mount Google Drive upon Boot

If you want to have Google Drive mounted automatically upon boot, you can follow the steps below. The credit goes to Alessandro Strada, the original author of google-drive-ocamlfuse.
Create a shell script named "gdfuse" in /usr/bin (as root) with this content:
$ sudo vi /usr/bin/gdfuse
#!/bin/bash

google-drive-ocamlfuse -label $1 $*
exit 0
Give it exec permissions:
$ sudo chmod +x /usr/bin/gdfuse
Copy your directory ~/.gdfuse in root home (that's because mount is executed by root)
$ sudo cp -r /home/[user]/.gdfuse /root/
Edit /etc/fstab adding a line like this:
gdfuse#default  /mnt/gdrive     fuse    allow_other     0       0
And then you can use mount command to run google-drive-ocamlfuse:
$ sudo mount /mnt/gdrive
If you want, you can change the owner of the filesystem by adding a line to /etc/fstab (if the user id is 1000):
gdfuse#default  /mnt/gdrive     fuse    allow_other,uid=1000,gid=1000   0       0
If you have more than one Google drive accounts, you can also mount them by adding their corresponding label after the # (in /etc/fstab):
gdfuse#label  /mnt/gdrive     fuse    allow_other     0       0

Backup (System Restore Point) your Ubuntu/Linux Mint with SystemBack

System Restore is must have feature for any OS that allows the user to revert their computer's state (including system files, installed applications, and system settings) to that of a previous point in time, which can be used to recover from system malfunctions or other problems.
Sometimes installing a program or driver can make your OS go to blank screen. System Restore can return your PC's system files and programs to a time when everything was working fine, potentially preventing hours of troubleshooting headaches. It won't affect your documents, pictures, or other data.
Simple system backup and restore application with extra features. Systemback makes it easy to create backups of system and users configuration files. In case of problems you can easily restore the previous state of the system. There are extra features like system copying, system installation and Live system creation.

Screenshots
systemback
systemback systemback
systemback systemback

Note: Using System Restore will not restore documents, music, emails, or personal files of any kind. Depending on your perspective, this is both a positive and negative feature. The bad news is that it won't restore that accidentally deleted file you wish you could get back, though a file recovery program might solve that problem.
If no restore point exists on your computer, System Restore has nothing to revert to so the tool won't work for you. If you're trying to recover from a major problem, you'll need to move on to another troubleshooting step.

>>> Available for Ubuntu 15.10 Wily/16.04/15.04 Vivid/14.04 Trusty/Linux Mint 17.x/other Ubuntu derivatives
To install SystemBack Application in Ubuntu/Linux Mint open Terminal (Press Ctrl+Alt+T) and copy the following commands in the Terminal:
That's it