Возможно, вам понадобится чтобы изменить размер разделов, чтобы освободить место для вашего нового домашнего каталога, используя gparted.
Ссылка: Переезд домой в Ubuntu Wiki
Я опубликовал это некоторое время назад (теперь) удаленный Q / A. Возможно, это вам полезно.
Ниже приведенный патч позволит вам получать уведомления как долго как это требуется на рабочем столе:
В случае (очень) длинных уведомлений вместо этого:
вы увидите это:
Продолжительность сообщения автоматически устанавливается на длину текста.
Уведомления , отправить по notify-osd (notify-send), ограничены ок. 120 символов. Решение «прослушивает» отправленные сообщения, используя dbus-monitor. Если сообщение превышает 120 символов, оно берет на себя сообщения и использует «свое» окно сообщений для отображения уведомления, как показано выше.
#!/bin/bash
currdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
dbus-monitor "interface='org.freedesktop.Notifications'" |\
grep --line-buffered "string" |\
grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v |\
grep --line-buffered '.*(?=string)|(?<=string).*' -oPi |\
grep --line-buffered -v '^\s*$' |\
xargs -I '{}' $currdir/message {}
Скопируйте сценарий в пустой файл и сохраните его как catch_notifs.sh Сценарий, создающий замещающие уведомления: #!/usr/bin/env python3
import subprocess
import os
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import GObject, Gtk, Gdk, Pango
from threading import Thread
import time
import sys
text = sys.argv[1]
length = len(text)
showtime = length/20
def get_screen():
scr = [s.split("x") for s in subprocess.check_output([
"xrandr"]).decode("utf-8").split() if "+0+0" in s][0]
return int(scr[0]) -450
class Splash(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="splashtitle")
maingrid = Gtk.Grid()
self.add(maingrid)
maingrid.set_border_width(20)
label = Gtk.Label(text)
label.set_line_wrap(True)
label.set_max_width_chars(45)
label.modify_font(Pango.FontDescription('Ubuntu 11'))
maingrid.attach(label, 0, 0, 1, 1)
self.stop = Thread(target=self.close_window)
self.stop.start()
def close_window(self):
time.sleep(showtime)
Gtk.main_quit()
def splashwindow():
window = Splash()
window.set_decorated(False)
window.set_resizable(False)
window.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(0,0,0,1))
window.modify_fg(Gtk.StateFlags.NORMAL, Gdk.color_parse("white"))
# window.set_opacity(0.8)
window.move(get_screen(), 80)
window.set_keep_above(True)
window.show_all()
window.set_default_size(200, 500)
GObject.threads_init()
Gtk.main()
if len(text) > 120:
subprocess.Popen(["pkill", "notify-osd"])
splashwindow()
Скопируйте сценарий выше в пустой файл, сохраните его как (точно!) message (без расширения) и сделайте его исполняемым. Храните оба сценария в одном и том же каталоге. Протестируйте сценарий по команде (из окна терминала): /bin/bash /path/to/catch_notifs.sh
(продолжайте ее выполнение). Вы можете протестировать установку, запустив (в другом терминале): notify-send '<long_text>'
Если все работает нормально, добавьте его в приложения для запуска: Dash> Приложения для запуска> Добавить. Добавьте команду: /bin/bash /path/to/catch_notifs.sh
И она должна работать:)
Я опубликовал это некоторое время назад (теперь) удаленный Q / A. Возможно, это вам полезно.
Ниже приведенный патч позволит вам получать уведомления как долго как это требуется на рабочем столе:
В случае (очень) длинных уведомлений вместо этого:
вы увидите это:
Продолжительность сообщения автоматически устанавливается на длину текста.
Уведомления , отправить по notify-osd (notify-send), ограничены ок. 120 символов. Решение «прослушивает» отправленные сообщения, используя dbus-monitor. Если сообщение превышает 120 символов, оно берет на себя сообщения и использует «свое» окно сообщений для отображения уведомления, как показано выше.
#!/bin/bash
currdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
dbus-monitor "interface='org.freedesktop.Notifications'" |\
grep --line-buffered "string" |\
grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v |\
grep --line-buffered '.*(?=string)|(?<=string).*' -oPi |\
grep --line-buffered -v '^\s*$' |\
xargs -I '{}' $currdir/message {}
Скопируйте сценарий в пустой файл и сохраните его как catch_notifs.sh Сценарий, создающий замещающие уведомления: #!/usr/bin/env python3
import subprocess
import os
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import GObject, Gtk, Gdk, Pango
from threading import Thread
import time
import sys
text = sys.argv[1]
length = len(text)
showtime = length/20
def get_screen():
scr = [s.split("x") for s in subprocess.check_output([
"xrandr"]).decode("utf-8").split() if "+0+0" in s][0]
return int(scr[0]) -450
class Splash(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="splashtitle")
maingrid = Gtk.Grid()
self.add(maingrid)
maingrid.set_border_width(20)
label = Gtk.Label(text)
label.set_line_wrap(True)
label.set_max_width_chars(45)
label.modify_font(Pango.FontDescription('Ubuntu 11'))
maingrid.attach(label, 0, 0, 1, 1)
self.stop = Thread(target=self.close_window)
self.stop.start()
def close_window(self):
time.sleep(showtime)
Gtk.main_quit()
def splashwindow():
window = Splash()
window.set_decorated(False)
window.set_resizable(False)
window.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(0,0,0,1))
window.modify_fg(Gtk.StateFlags.NORMAL, Gdk.color_parse("white"))
# window.set_opacity(0.8)
window.move(get_screen(), 80)
window.set_keep_above(True)
window.show_all()
window.set_default_size(200, 500)
GObject.threads_init()
Gtk.main()
if len(text) > 120:
subprocess.Popen(["pkill", "notify-osd"])
splashwindow()
Скопируйте сценарий выше в пустой файл, сохраните его как (точно!) message (без расширения) и сделайте его исполняемым. Храните оба сценария в одном и том же каталоге. Протестируйте сценарий по команде (из окна терминала): /bin/bash /path/to/catch_notifs.sh
(продолжайте ее выполнение). Вы можете протестировать установку, запустив (в другом терминале): notify-send '<long_text>'
Если все работает нормально, добавьте его в приложения для запуска: Dash> Приложения для запуска> Добавить. Добавьте команду: /bin/bash /path/to/catch_notifs.sh
И она должна работать:)
Как я уже отмечал в комментариях, notify-osd не очень подходит для расширенных сообщений, и следует предпочесть zenity вместо этого.
Простым примером использования будет разворачивание диалога zenity через subprocess.call([COMMAND,OPTIONS])
import subprocess
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
command=['zenity', '--info', '--text="' +text + '"', '--width=250', '--height=300' ]
subprocess.call(command)
Очень простой пример. С чем-то, что требует проверки статуса выхода, например вопросов, вы можете захотеть использовать структуру try - except - else
import subprocess
text='Do you want to use Zenity?'
command=['zenity', '--question',
'--text="' +text + '"',
'--width=250', '--height=300' ]
try:
stdout = subprocess.check_call(command)
except subprocess.CalledProcessError:
pass # if return sttus is non-zero, do something here
else:
# if exit status was 0 , we do something here
print "Yes, I want to use Zenity too"
. Если вы хотите что-то более продвинутое, вероятно, подумайте об изучении одного из графических наборов инструментов, таких как PyQt или Gtk.
Как я уже отмечал в комментариях, notify-osd не очень подходит для расширенных сообщений, и следует предпочесть zenity вместо этого.
Простым примером использования будет разворачивание диалога zenity через subprocess.call([COMMAND,OPTIONS])
import subprocess
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
command=['zenity', '--info', '--text="' +text + '"', '--width=250', '--height=300' ]
subprocess.call(command)
Очень простой пример. С чем-то, что требует проверки статуса выхода, например вопросов, вы можете захотеть использовать структуру try - except - else
import subprocess
text='Do you want to use Zenity?'
command=['zenity', '--question',
'--text="' +text + '"',
'--width=250', '--height=300' ]
try:
stdout = subprocess.check_call(command)
except subprocess.CalledProcessError:
pass # if return sttus is non-zero, do something here
else:
# if exit status was 0 , we do something here
print "Yes, I want to use Zenity too"
. Если вы хотите что-то более продвинутое, вероятно, подумайте об изучении одного из графических наборов инструментов, таких как PyQt или Gtk.