Ext4 постоянно монтируется как только для чтения

Запуск приложения в фоновом режиме

решение ниже позволит Вам запускать Firefox (или любое другое приложение) в фоновом режиме, означая: без видимого окна . И при этом приложение не покажет в Тире как запущенное приложение:

enter image description here

enter image description here

при выборе Firefox Переключателя однако приложение сразу откроется:

enter image description here

, Как это работает

  1. , Если значок панелей (индикатор) запускает, он запускает новое firefox окно, но сразу скрывает его (включая возможный, существующий firefox окна) от поверхности земли, с помощью xdotool:

    xdotool windowunmap 
    

    Это не только скроет окно, но также и скроет то, которое firefox работает во всем , начиная с действий средства запуска единицы на явно существующих окнах.

  2. индикатор хранит идентификатор всех неотображенных окон в [1 111], чтобы быть отображенными на следующем разе Вы выбираете Firefox Переключателя из меню.

для сценария

#!/usr/bin/env python3
import subprocess
import os
import signal
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk, AppIndicator3
import time

app = "firefox"
winsdir = os.path.join(os.environ["HOME"], ".config/hidden_windows")

try:
    os.mkdir(winsdir)
except FileExistsError:
    pass

def checkruns(app):
    try:
        return subprocess.check_output(["pgrep", app]).decode("utf-8").strip()
    except subprocess.CalledProcessError:
        for w in os.listdir(winsdir):
            if w.startswith(app):
                os.remove(os.path.join(winsdir, w))

def get_currentwins(pid):
    wins = subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8").splitlines()
    return [l.split()[0] for l in wins if pid in l]

def hide_currentwins(matches):
    # open(os.path.join(winsdir, "windowlist"), "wt").write("\n".join(matches))
    for w in matches:
        open(os.path.join(winsdir, app+"_"+w), "wt")
        subprocess.Popen(["xdotool", "windowunmap", w])

def run_app(app):
    subprocess.Popen(app)
    while True:
        time.sleep(1)
        pid = checkruns(app)
        matches = get_currentwins(pid) if pid else None
        if matches:
            hide_currentwins(matches)
            break

def restore_wins():
    for w in [w for w in os.listdir(winsdir) if w.startswith(app)]:
        wid = w.split("_")[-1]
        subprocess.Popen(["xdotool", "windowmap", wid])
        os.remove(os.path.join(winsdir, w))

def toggle_app(*args):
    pid = checkruns(app)
    if pid:
        matches = get_currentwins(pid)
        if matches:
            hide_currentwins(matches)
        else:
            restore_wins()
    else:
        subprocess.Popen(app)

run_app(app)

class Indicator():
    def __init__(self):
        self.app = 'toggle_app'
        self.indicator = AppIndicator3.Indicator.new(
            self.app, app,
            AppIndicator3.IndicatorCategory.OTHER)
        self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)       
        self.indicator.set_menu(self.create_menu())

    def create_menu(self):
        self.menu = Gtk.Menu()
        item_toggle = Gtk.MenuItem('Toggle '+app)
        item_toggle.connect("activate", toggle_app)
        self.menu.append(item_toggle)
        sep1 = Gtk.SeparatorMenuItem()
        self.menu.append(sep1)
        item_quit = Gtk.MenuItem('Quit')
        item_quit.connect('activate', self.stop)
        self.menu.append(item_quit)
        self.menu.show_all()
        return self.menu

    def stop(self, source):
        Gtk.main_quit()

Indicator()
signal.signal(signal.SIGINT, signal.SIG_DFL)
Gtk.main()

, Как использовать

  1. сценарий, нужно и wmctrl и xdotool

    sudo apt-get install wmctrl xdotool
    
  2. Копия сценарий в пустой файл, сохраните его как [1 114]

  3. Test_run сценарий командой:

    python3 /path/to/firefox_bg.py
    
  4. , Если все хорошо работает, добавьте его для Запущения Приложений: Тире> Приложения Запуска> Добавляет. Добавьте команду:

    /bin/bash -c "sleep 10 && python3 /path/to/firefox_bg.py"
    

    , С другой стороны, копируют код ниже в пустой файл, сохраняют его как [1 115] в [1 116], выходят из системы и въезжают задним ходом.

    [Desktop Entry]
    Type=Application
    Exec=python3 /path/to/firefox_bg.py
    Name=Firefox Webbrowser Background Runner
    Icon=firefox
    StartupWMClasss=nonsense
    

    *The последняя строка, StartupWMClasss=nonsense должна удостовериться Firefox windows will appear under their own icon, not the one of the indicator.

    Никакая потребность упомянуть, что необходимо отредактировать Exec= строка для отражения реального (абсолютного) пути туда, где Вы сохранили firefox_bg.py

    Затем, Вы будете иметь бегуна панели в наличии от Тире:

    enter image description here

Другие приложения?

я протестировал ту же процедуру с [1 121] и Thunderbird (последний обычно не самое быстрое для запущений), и она работает отлично:

enter image description here

Для использования с другими приложениями просто отредактируйте строку:

app = "firefox"

Примечание однако, которое некоторые приложения, кажется, проверяют, успешно выполнилась ли их попытка создать окно и создать второе, если первый не отображается. Это произошло со мной с [1 123].

сценарий может даже затем отлично использоваться, хотя, но нуждался бы в маленьком редактировании. Если кто-либо когда-нибудь, возможно, должен был бы использовать его с [1 124], оставьте комментарий.

2
задан 15.04.2020, 12:35

3 ответа

Было бы разумно обеспечить резервное копирование ваших данных, поскольку вы можете столкнуться с проблемой сбоя диска.

Тот факт, что это часто происходит в нормальных условиях, указывает на аппаратную проблему. Известно, что жесткие диски выходят из строя.

Если вы работаете с основной версией Ubuntu, она включает в себя замечательный инструмент под названием Диски от Gnome (поиск из панели запуска, чтобы получить к нему доступ).

Вы можете выбрать свой привод слева, а затем, если вы нажмете на значок шестеренки в правом верхнем углу, вы получите меню и можете выбрать «интеллектуальные данные и тесты». Оттуда вы можете запускать интеллектуальные тесты (кнопка «начать самопроверку ...» внизу слева), я предлагаю расширенную опцию для запуска тщательного тестирования диска.

Disks

0
ответ дан 15.04.2020, 12:36

Сделайте резервную копию ваших данных и скоро смените HD, потому что вы могли бы испытать серьезную потерю данных.
После резервного копирования вы можете заставить HD использовать настройки по умолчанию (и всегда быть для чтения-записи), отредактировав /etc/fstab с помощью команды sudo nano /etc/fstab: в четвертом двоеточии записи корневой файловой системы замените опцию error на опция defaults.
Пример (с моего ПК):
UUID=fa7667f8-e8a4-44d9-8e51-92fb2496c8c1 / ext4 errors=remount-ro 0 1
... изменить его на: UUID=fa7667f8-e8a4-44d9-8e51-92fb2496c8c1 / ext4 defaults 0 1
Это не очень хорошая практика и если ваш HD действительно поврежден, вы можете нанести больше вреда, когда вы (или ваше программное обеспечение) записываете на него, это является причиной оригинального errors=remount-ro в файле fstab.
Сделайте резервную копию вашего файла fstab перед внесением каких-либо изменений и НИКОГДА ничего не копируйте и не вставляйте в него, редактируйте только вручную.
базовое руководство по файлу fstab (для вашего личного знания): man fstab
Полное руководство доступно в режиме онлайн, но не зависит от файловой системы и может измениться со временем; Вы можете использовать его, если опция по умолчанию не работает.
Предложение должно включить S.M.A.R.T. технологии в вашем BIOS, если она у вас есть, потому что она позволит вам предвидеть состояние вашего HD (это может спасти вашу работу!) с помощью специального программного обеспечения.
Извините за плохие новости, но это случилось и со мной некоторое время назад, это плохое предчувствие.

0
ответ дан 15.04.2020, 12:37

Просто для того, чтобы обновить всех, кому все равно, я решил заменить HD и скопировать как можно больше своих данных. У меня проблемы с загрузкой скопированного раздела Windows, но это уже другая история для другого сайта.

Во всяком случае, я думаю, что это в значительной степени разгадывает тайну. Спасибо за ваши предложения.

0
ответ дан 15.04.2020, 12:37

Теги

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