Открытое приложение на пользовательском рабочем столе в xmonad

Я на самом деле сделал что-то подобное в начале 2011. Моя аппаратная плата RAID перестала работать (RAID 10), таким образом, я взял один из этих двух дисков и преобразовал в набег программного обеспечения. Это было немного хитро, но выполнимо. Я использую Debian, сжимают.

0) Я не ясен, если Вы хотите преобразовать от 32 битов до установки на 64 бита, или Вы просто хотите скопировать установку на 32 бита на машине на 64 бита и будете все еще выполнять 32 бита. В последнем случае 64 разрядности действительно ни к чему не относятся. Если первый, система, по крайней мере, является несовместимой. Вы просто сможете скопировать свои данные (/домой и т.д.) и иметь, чтобы сделать, система переустанавливает.

1) Я рекомендовал бы использовать LVM сверх набега программного обеспечения.

2) Личинка 2 может загрузиться от устройства LVM сверху устройства набега программного обеспечения. GRUB 1 не может. На самом деле я думаю, что это, вероятно, не может загрузиться от устройства набега программного обеспечения вообще. Я имел некоторые проблемы с Личинкой 2 работы гладко с набегом SW + LVM и должен был обновить до новейшего пакета GRUB 2 в экспериментальном, но надо надеяться GRUB 2 более стабилен теперь. Пока Вы придерживаетесь последних версий GRUB 2, Вы, вероятно, будете в порядке.

3) Сначала создайте коротковолновое устройство набега, затем устройства LVM вдобавок ко всему Затем скопируйте свои файловые системы на устройства LVM. Я рекомендую использовать partimage для этого.

4) Для начальной загрузки я использовал другую систему для монтирования новой системы как chroot, и затем chrooted в новую систему для установки GRUB 2. Это будет, вероятно, работать на Вас также. Отметьте это

grub-install /dev/md0

должен работать в chroot, хотя, чтобы это работало, необходимо будет снова переплести устройства в хосте chroot. Вы также захотите снова переплести обычные вещи как/proc,/sys,/dev/pts и т.д.

Не стесняйтесь задавать вопросы (если у Вас будут они) в комментариях, и если у меня будет что-либо полезное для добавления, то я обновлю этот ответ.

Править: Обновление в ответ на вопросы от @trbabb.

Вы могли говорить немного больше о преимуществах LVM? Я захочу разделить свои два массива RAID, таким образом, будет казаться, что каждый массив получит группу объема с 1 логическим томом каждый. Это походит на ненужный дополнительный слой абстракции...?

LVM полезен, если Вы позже хотите изменить размер своих объемов или добавить второе физическое устройство к объему. Я думаю, что традиционные устройства не вполне настолько удобны для работы с.

Кроме того, можно ли сказать мне немного больше о chrooting? Что я буду использовать chroot для,> и почему?

chroot - чтобы Вы смогли установить личинку и генерировать файл конфигурации для Вашей новой системы. Необходимо установить личинку так или иначе, и необходимо сделать это, прежде чем можно будет загрузиться. Если Вы (ре), устанавливающее ОС и только копирующее пользовательские данные, законченные в / домой или что бы то ни было, можно использовать установщик Debian, например, но если Вы не захотите к установке (ре) ОС, то установщик Debian, вероятно, не будет работать на Вас. Это настаивает на том, чтобы устанавливать систему. Могли бы быть другие способы сделать это, но chroot является довольно стандартным, я думаю.

И partimage будет необходим, если мне подключат старые/новые диски одновременно?

partimage является хорошим чистым, способ скопировать разделы, независимо от того, есть ли у Вас оба раздела, соединенные одновременно. Вы не должны использовать его. Можно использовать dd или даже cp -a но IMO partimage лучше.

2
19.10.2012, 18:31
3 ответа

В духе делают одну вещь и делают это хорошо, Круг дьявола был создан для этих видов проблем с любым совместимым стандартами WM (такой, как правильно настроено XMonad, также посмотрите FAQ).

Некоторая конфигурация вдоль строк (принятый из этого учебного руководства, я не знаю, проявляет ли этот способ соответствовать на самом деле работы, возможно, некоторый другой путь (см. документы), необходим)

(if
  (is (application_name) "Evince")
    (begin
    (set_workspace 5)
    (maximize)
  )
)

должен сделать задание. Обратите внимание, что Круг дьявола был упомянут довольно часто здесь, могла бы быть более полезная информация просто щелчок далеко.

1
27.01.2020, 22:07

Чистая xmonad конфигурация возможна для этого. В Вашем .xmonad/xmonad.hs необходимо установить manageHook для этого. Я включал больше чем одно "правило" нарочно.

theManageHook = composeAll [
    -- send applications to the right workspace
    className =? "Evince" --> doShift "5",
    className =? "Pidgin" --> doShift "4"
    --- more settings ...
]

main = do
    xmonad $ gnomeConfig { 
        manageHook = theManageHook <+> manageHook gnomeConfig
    }

Вы видите имя класса данного Окна с xprop и нажатие на желаемое окно. имя класса относится к второй записи в xprop-выводе. Если Вы только хотите некоторый xproperties, xprop принимает их как аргументы:

~ $ xprop WM_CLASS WM_NAME
WM_CLASS(STRING) = "evince", "Evince"
WM_NAME(STRING) = "Document Viewer"

Больше на этом может быть найден в FAQ Xmonad.

1
27.01.2020, 22:07
  • 1
    Спасибо, я знаю это. Я только хочу переместить приложение в определенный рабочий стол, если я запускаю его со своего emacs сценария. –  student 19.10.2012, 16:40
  • 2
    Хм, возможно, начальный WM_CLASS отличается. Можно ли попытаться соответствовать ресурсу вместо имени класса? Что emacs говорят об этом? –  kronn 19.10.2012, 17:58

Вот использование подхода xdotool для изменения класса окна затем, можно переместить его в Рабочий стол 5 с XMonad или круг дьявола.

#!/bin/sh
$1 &
NEW_WINDOW_PID=$!

WINDOW_EXISTENCE=$(xdotool search --pid ${NEW_WINDOW_PID} 2> /dev/null) #is empty if the window hasn't finished opening.
COUNTER=0
while [[ -z $WINDOW_EXISTENCE && $COUNTER < 6 ]] #waits for the window to open
do
    WINDOW_EXISTENCE=$(xdotool search --pid ${NEW_WINDOW_PID} 2> /dev/null)
    sleep 1
    (( COUNTER++ ))
done

if [ $COUNTER != "6" ]; then
    NEW_WINDOW_ID=$(xdotool search --onlyvisible --pid ${NEW_WINDOW_PID}) #finds the window that was just opened
    xdotool set_window --class yay ${NEW_WINDOW_ID}; #change the class of the window to yay
fi

И затем запишите функцию в emacs

(defun window-in-desktop-5 (cmd)
  "start shell command on desktop 5"
  (interactive "sshell-command: ")
  (shell-command  (concat "/path/to/xdotoolscript " cmd)))

Каждый раз, когда Вы называете программу через функцию emacs, она изменит имя класса окна, пока PID окна совпадает с функцией, которая назвала ее иначе, сценарий испытает таймаут после шести секунд.

1
27.01.2020, 22:07

Теги

Похожие вопросы