Архив рубрики: linux

Быстрое переключение рабочих столов в третьем гноме

С тех пор, как я из-под Windows переехал под юниксоподобные ОС, я в оконных средах стал использовать несколько рабочих столов, число коих в конце концов дошло до шести — стол для всяких задач, для редактора, терминала, браузера, почты∕аськи∕скайпа и для графики. Естественно, что между столами я переключаюсь с помощью клавиатуры, а не мыши — так быстрее.

Когда вышел Gnome 3, в нём пропала возможность задать через графический интерфейс сочетания клавиш для переключения на конкретный стол — осталась лишь возможность переходить к соседним, что для меня не совсем удобно. Именно это и мешало переходить к третьему гному, вынуждая сидеть на втором либо на его форке MATE.

Однако, нашёлся способ — он описан на https://github.com/linuxmint/Cinnamon/issues/544 — можно нужные последовательности задать с помощью dconf-editor, настройки клавиатурных команд хранятся в org.gnome.desktop.wm.keybindings

dconf-editor

UPDATE∕20:00: оказывается, полтора года назад я на эти грабли уже наступал.

И слово было — два байта

Когда-то давно мельком заметил я, что счётчик кадров в фотоаппарате Nikon D70s какой-то странный: номер не всегда возрастает. Порывшись в фотоархиве, нашёл я пачку кадров, где номер сбрасывается, проверил:

#!/bin/sh
for file in `ls 442*jpg`
do
    echo  -n $file
    exiftool $file | grep 'Shutter Count' | cut -c33-44
done

Так и есть!

4420.jpg: 65534
4421.jpg: 65535
4422.jpg: 0
4423.jpg: 1
4424.jpg: 2
4425.jpg: 3
4426.jpg: 4
4427.jpg: 5
4428.jpg: 6
4429.jpg: 7

Выходит, счётчик всего-навсего двухбайтовый. Что же, предполагалось, что камера не может сделать больше, чем 65535 кадров? И ведь ме́ста-то в EXIF для нормального счётчика хватает — поле имеет тип LONG (32-битное беззнаковое целое), но используется лишь наполовину.

Кстати, geeqie показывает некоторые тэги, которые exiftool не отображает и среди них есть Shutter Count 1 (Exif.NikonSi01xx.ShutterCount1), в котором хранятся целые числа со значениями около 869×10⁶ (хотя есть и другие, сильно отличающиеся значения), а также поле Shutter Count 2 (Exif.NikonSi01xx.ShutterCount2), где лежат па́ры небольших целых чисел. Что это за числа — не вышло ни понять, ни нагуглить.

Атомный редактор

Пробую очередной текстовый редактор — Atom. Поначалу не удавалось его запустить — на сайте выложена версия для архитектуры amd64, а собрать из исходников не получилось (не очень-то и хотелось), однако нашёлся вариант для ленивых — PPA с поддержкой 32-битных версий убунты.

Проверка синтаксиса в редакторе Atom

Хоть, конечно, и требует напильника, но пока нравится: работает шустро, клавиатурные сочетания для основных операций с текстом по умолчанию вполне подходящие плюс можно легко скачиватьи ставить модули для функций, которых по умолчанию нет. Вот, например, модуль linter-perl позволяет проверить синтаксис перловых файлов, а svn подсвечивает изменённые строки и файлы при использовании Subversion — до полноценного клиента, правда, ещё далеко.

И зрелищ!

Наконец-то разобрался, как в Pitivi растянуть выражения лиц бардам до нормальных пропорций и как прикрыть заглушкой те места, где изображение пропадало совсем. Собрал тестовую запись — концерт КСП «Моримоша» на открытии Лесной площадки XXXIX Ильменского фестиваля. Кому невтерпёж — можно смотреть прямо сейчас, со всеми глюками. Как дотянусь до файлов, что писались самими камерами — переделаю.

Настройки масштабирования в Pitivi

Видеозаписи трансляции с Лесной площадки XXXIX Ильменского фестиваля будут потихоньку выкладываться на video.mineralogy.ru/video/ilmenyfest/album/284

Закончу с этим годом — займусь прошлым.

Перловые модули вставали не туда

Только сейчас обнаружил интересную штуковину: если в убунте выполнять общесистемную установку перловых модулей командой

sudo cpan Имя::Модуля

то модуль встаёт куда надо — в моём случае это /usr/local/share/perl/5.18.2 (а мануалы ложатся в /usr/local/man/man3), но если сначала взять себе рутовую консоль командой

sudo bash

и из такой консоли запускать cpan — модули встанут в ~/perl5/lib/perl5, чего я не ожидал.

P. S. Про sudo apt-get install libимя-модуля-perl я в курсе.

Настройка клавиатурных команд в старом гноме под новой убунтой

Как известно, каждая свежая версия Ubuntu не только приносит что-то новое, но и обязательно ломает что-то, спокойно работавшее раньше. Вот сейчас, например, в процессе настройки ноутбука жены вместо снова сдохшего своего, я обнаружил, что в старом гноме (gnome-fallback) пропала возможность менять некоторые клавиатурные команды через System Settings. Точнее, возможность задавать нужные клавиатурные команды осталась, но оттуда пропали некоторые команды, которые мне нужны, например те, что позволяют выбрать нужный рабочий стол (у меня их шесть). Что странно — на рабочем компьютере, где стоит та же самая Ubuntu 14.04 LTS, такую проблему я не встречал.

Нашёл такой метод: указать нужные сочетания клавиш через dconf-editor, в разделе org.gnome.desktop.wm.keybindings. Попробовал — получилось.

Настройка клавиатурных команд через dconf-editor

Свежий JOSM не любит шестую яву

С недавних пор JOSM перестал запускаться под шестой явой — для его работы нужна Java версии не ниже 7. Это не стало сюрпризом — в конце концов, об этом уж несколько месяцев как предупреждают. Сюрпризом стало другое: вместо того, чтобы просто тихо проигнорировать шестую яву, JOSM упорно пытается использовать её, если находит. И падает. С точки зрения обычного пользователя — молча и непонятно. С точки зрения вооружённого терминалом — нормально падает, не молча:

Using /usr/lib/jvm/java-6-openjdk-i386/bin/java to execute josm.
Exception in thread "main" java.lang.UnsupportedClassVersionError: JOSM : Unsupported major.minor version 51.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: JOSM. Program will exit.

Как выяснилось, в кода скрипта, запускающего JOSM, ничего не поменялось.

Надеюсь, скоро эту ошибку устранят. Ну а тот, кому не терпится, может подправить нужный файл (в Ubuntu это /usr/bin/josm) самостоятельно, убрав из него упоминания шестой явы:

--- josm.ORIG	2013-08-09 20:11:05.000000000 +0600
+++ josm	2014-06-05 12:28:03.797657191 +0600
@@ -11,9 +11,9 @@
 
 # If OpenJDK is only available headless, do not try it
 if dpkg --get-selections 'openjdk-*-jre' | grep install$ > /dev/null ; then
-	JAVA_CMDS="$JAVA_HOME/bin/java /usr/lib/jvm/java-7-openjdk/bin/java /usr/lib/jvm/java-7-openjdk-$ARCH/bin/java /usr/lib/jvm/java-7-oracle/bin/java /usr/lib/jvm/java-6-openjdk/bin/java /usr/lib/jvm/java-6-openjdk-$ARCH/bin/java /usr/lib/jvm/java-6-sun/bin/java"
+	JAVA_CMDS="$JAVA_HOME/bin/java /usr/lib/jvm/java-7-openjdk/bin/java /usr/lib/jvm/java-7-openjdk-$ARCH/bin/java /usr/lib/jvm/java-7-oracle/bin/java"
 else
-	JAVA_CMDS="$JAVA_HOME/bin/java /usr/lib/jvm/java-7-oracle/bin/java /usr/lib/jvm/java-6-sun/bin/java /usr/bin/java"
+	JAVA_CMDS="$JAVA_HOME/bin/java /usr/lib/jvm/java-7-oracle/bin/java /usr/bin/java"
 fi
 
 JAVA_OPTS="-Djosm.restart=true -Djava.net.useSystemProxies=true $JAVA_OPTS"

update/05.06.2014: defect #10099 JOSM tries to use Java 6 when installed