LINUX.ORG.RU

Сообщения Xintrea

 

Как правильно перевести «guitar case»? Это корпус гитары или чехол для гитары?

Форум — Talks

В следующем тексте используется словосочетание «guitar case». Как правильно его перевести?

I am a singer/songwriter and was looking for a travel guitar since my Vintage Martin Backpacker guitar has a raised bridge and a crack in the wood from age and temperature changes making it increasing difficult to comfortably play.

So when I watched nearly every single review video on youtube about the guitar, I felt confident that this guitar would be an ideal choice for my intended purposes. Unfortunately out of all the ‘sponsored in one way or another Nova Go endorsements’ that I watched, not one reviewer mentioned the odor that is emitted from the guitar case from the petrochemicals it is made from!

So I am primarily motivated to share this review because even though I watched over several dozen it is incredulous to me that no one mentioned even in passing the stench of this guitar case which actually permeates the guitar itself.

This was highly disappointing because I bought this combo in a large part because of the form fitting guitar case which would easily fit in my car when traveling. Yet, there is no way I can put this case in my car without the odor which smells like over heated car tires when you brake too much going down hill permeating my entire car.

I tried airing out the case for days and the smell hasn’t dissipated which is disheartening because I really like the guitar yet didn’t want to fork over more money to buy a case that wouldn’t be as form fitting as the petroleum based case it came with. I also would need to replace the guitar strap because it’s made from the same awful smelling material. In the past, I purchased a keyboard case made from the same pungent stuff and the scent never went away so I doubt that this case will be any different.

For me the odor issue is frustrating and an inconvenience to have to buy a different case yet for someone with chemical sensitivities the substance this case is comprised of could really jeopardize someones health by causing an allergic reaction to the petrochemicals.

I’m not recommending not buying this combo because the guitar is ideal for travel if you don’t want to ruin your wood guitar by moisture, heat or cold. Nice for taking to the beach and camping. Just don’t think for a minute you could hike with it because it is heavy for it’s size where you will also experience neck dive so you do need to play it while using a strap.

If you want a guitar to backpack with, the Martin Backpacker guitar ($299.00 with exceptional fabric case that doesn’t off gas) is truly the only sized guitar for the task. Yet the Nova Go’s sound is much better than the Martin so save yourself some money by buying the Nova as long as you factor in the cost of a different guitar case which may or may not make the Nova Go a financially feasible purchase for you.

When I expressed my disappointment with the Nova Go case with Enya, I dealt with August a stellar representative who is a credit to their company. And I was impressed with both her and Enya’s responsiveness to my concerns which were resolved in such a way that I decided to keep the guitar even though I will be out of pocket for buying a different case and strap to complete the original combo.

The way they quickly, consistently and compassionately responded to me over multiple interactions engendered a trust in their company which I don’t experience much on Amazon. So much so that I am considering upgrading to their Nova Go Smart Guitar when it debuts on Amazon especially if they include a different non-off gassing case with it.

For what appears to me to be a customer oriented based company, I would hope that in the future Enya would supply a different case with their guitar combos that doesn’t off gas toxic petrochemicals which not only make it intolerable to smell yet could present a serious health concern to the many individuals who suffer from chemical sensitivities. Perhaps an inexpensively produced case like the many foam ones found on amazon could be an alternative to their petroleum based case. I surely hope they will seriously change the case material because I would like to become a lifelong customer in both buying and recommending their products.

 , ,

Xintrea
()

Как понять, какая программа (сервис) пытается законнектиться на сервер?

Форум — Admin

На Linux-сервере видны непрекращающиеся попытки хоста 192.168.1.95 соединиться на портах 57770 ... 57776, где-то в этом диапазоне.

На самом хосте тоже видны эти подключения, но непонятно кто их создает:

> netstat -np
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 192.168.1.95:57770      192.168.1.251:22        TIME_WAIT   -
tcp        0      0 192.168.1.95:47942      192.168.1.251:389       ESTABLISHED -
tcp        0      0 192.168.1.95:57776      192.168.1.251:22        TIME_WAIT   -
tcp        0      0 192.168.1.95:43086      192.168.1.251:5222      ESTABLISHED 2465/psi-plus
tcp        0      0 192.168.1.95:49960      192.168.1.251:389       TIME_WAIT   -
tcp        0      0 192.168.1.95:49958      192.168.1.251:389       TIME_WAIT   -
tcp        0      0 192.168.1.95:49456      192.168.1.251:749       ESTABLISHED -


Как можно выяснить, какая часть системы за это ответственна?

Дистрибутив Astra Linux (Debian 9).

 , , , ,

Xintrea
()

Как сгенерировать заданный код выхода (exit code) одной командой?

Форум — Admin

Мне нужно выполнить такую команду, которая бы возвратила заданный код возврата. Код возврата принимается из входного потока.

Пытаюсь сделать так:

> echo 32 | xargs exit
xargs: exit: Нет такого файла или каталога
Неожиданный сюрприз. Какого-то черта xargs не работает со встроенными командами шелла...

Как по-другому можно решить эту задачу?

Может быть, даже через inline perl / python или еще каким командным извратом.


Перемещено hobbit из general

 , exit code, код ошибки

Xintrea
()

Можно ли перенаправить стандартный поток одновременно в несколько приемников?

Форум — General

Я читаю статьи про потоки в Linux, и не могу взять в толк: а имеется ли возможность перенаправить поток так, чтобы он попадал не в один приемник, а сразу в несколько? Например, направить какой-нибудь /dev/pts/15 в /dev/ttyS3 и одновременно в файл и одновременно в /dev/pts/32?

Все примеры в статьях крутятся вокруг того, что поток перенаправляется только в один приемник, и все.

Может быть есть какой-то специальный приемник, или стандартная утилита, через которые поток можно «разветвить»? Вроде как имеется утилита tee, но похоже, что она работает только через «|» (stdout левой в stdin правой команды), причем непонятно что она будет делать если у выполняемой команды перенаправлены потоки через «<» и «>».

Если что, вопрос возник вот в этом обсуждении: Xterm в Tk. Почему не каждый цветной терминальный вывод отображается через Popen+communicate? (комментарий)

 , , , ,

Xintrea
()

Xterm в Tk. Почему не каждый цветной терминальный вывод отображается через Popen+communicate?

Форум — Development

Имеется процесс xterm, который «вставлен» в Tk-окно:

class Terminal(tk.Frame):

    def __init__(self, parent):
        ...
        # Получение tty с которым будет работать терминал (грубый хак)
        os.system('xterm -into %d -geometry 160x50 -sb -e "tty > /tmp/ttyinfo.txt"' % self.wid)
        fp=open('/tmp/ttyinfo.txt', 'r')
        self.tty=fp.readline().strip();
        fp.close();
        print("tty info: "+self.tty)

        # Открытие терминала с bash. Перед запуском bash выводится рабочий tty
        os.system('xterm -into '+str(self.wid)+' -geometry 160x50 -sb -e "tty ; bash -norc" &')

Выполнение команд в этом xterm-терминале сделано двумя способами:

  • Через os.system().
  • Через Popen+communicate.


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

1: ip -color addr
2: ansible-playbook ourPlaybook.yml
И вот какая проблема проявилась:

  • Способ запуска через os.system() всегда работает правильно. Для обеих команд вывод в xterm цветной.
  • Способ запуска через Popen+communicate() правильно работает только для «ip -color addr». Но для Ansible почему-то генерируется монохромный вывод.


А нужно чтобы и через Popen+communicate() правильно генерировался цветной вывод в терминал для любой команды. Потому что только этим способом можно получить stdOut + stdErr + errCode. Ведь в os.system доступен только код возврата.

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

    # Выполнение команды в терминале - вариант 1
    def doCommand1(self, text) :
        cmdLine="(%s) <%s >%s 2> %s" % (text, self.tty, self.tty, self.tty)
        result=os.system(cmdLine)
        ...
        return result

    # Выполнение команды в терминале - вариант 2
    def doCommand2(self, text) :
        cmdLine="%s" % (text)
        resultTriada=command.run(cmdLine)
        log.echo("* Результат: "   +resultTriada[0])
        log.echo("* Вывод ошибок: "+resultTriada[1])
        log.echo("* Код возврата: "+str(resultTriada[2]))
        ...
        # Возвращается кортеж из stdOut, stdErr, errCode
        return resultTriada

Во втором случае используется метод с вызовом Popen+communicate():
class Command():

  # Запуск внешней программы
  def run(self, cmd):
    p=Popen(cmd, stdout=PIPE, shell=True)
    stdOutData, stdErrData = p.communicate()
    errCode=p.returncode

    outData=""
    errData=""

    if not stdOutData is None :
      outData=stdOutData.decode()

    if not stdErrData is None :
      errData=stdErrData.decode()

    # Убирается последний перенос строк, чтобы в конце небыло пустой строки
    outData=re.sub("\n$", '', outData)
    errData=re.sub("\n$", '', errData)

    return(outData, errData, errCode)

В примере сделано 4 кнопки (то есть, со всеми возможными вариантами):

- IP адрес (os.system)
- IP адрес (Popen)
- Ansible (os.system)
- Ansible (Popen)

Первые три генерируют цветной вывод, а четвертая - монохромный.

Так вот, надо добиться, чтобы и вариант на 4-й кнопке, обязательно делал цветной вывод.

Ссылка на пример: https://files.fm/u/ex9nfywf2

Скриншот: https://i.ibb.co/FKZQYkt/screenshot-2023-04-25-15-45-51.png
(На нем видна часть цветного вывода 3-й кнопки, и монохромный вывод 4-й кнопки).

 , , , ,

Xintrea
()

Как в os.system() экранировать специальные символы? Не могу написать bash-промпт PS1

Форум — Development

Мне нужно вызвать окно xterm с запущенным bash так, чтобы в нем было специальное приглашение ввода (оно же prompt).

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

xterm -geometry 160x50 -sb -e "tty ; export PS1=\"\\u-\\h:\\W\\> \" ; bash -norc"

И нужно эту команду запустить из Python-скрипта, через os.system(). Я пробую сделать так:
#!/usr/bin/python3
import os
os.system('xterm -geometry 160x50 -sb -e "tty ; export PS1=\"\\u-\\h:\\W\\> \" ; bash -norc"')

Однако в этом случае xterm стартует с ошибкой:
xterm: Can't execvp tty ; export PS1=u-h:W>: Нет такого файла или каталога

И промпт, естественно, остается не настроенным.

Вопрос: как правильно засунуть все нужные символы в строку, которая будет выполнена через os.system() ?

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

 , , , ,

Xintrea
()

Теряется ввод терминала, как можно исправить?

Форум — General

Имеется два скрипта.

Первый terminal.py - скрипт на Python3 и Tkinter. В нем создается окошко xterm, а под ним поле ввода команды и кнопка исполнения.

Второй input.sh - это демонстрационный bash-скрипт с командой read, чтобы продемонстрировать проблему.


Итак, запускается terminal.py. В области xterm можно напрямую вводить команды, и они исполняются. И если в нем запустить ./input.sh, то ввод работает без проблем, скрипт выполняется как положено.

Если же запустить команду ./input.sh в нижнем поле ввода окошка terminal.py и отправить ее на исполнение (все потоки 0, 1, 2 будут направлены в tty, где запущен xterm), то ввод read будет «проглатывать» символы. Хорошо если появится 1 из 10. И кнопку Enter в конце ввода сложно нажать. А если она все-таки нажмется, то окажется, что происходил не ввод текстовых данных через read, а происходил ввод bash-команды, которая, естественно, не выполнится и будет ошибка:

sh: 234: команда не найдена

В общем, не могу разобраться, можно ли что-нибудь в этой ситуации сделать, чтобы ввод read не терялся и работал правильно.

Сами скрипты даны ниже:

terminal.py
#!/usr/bin/python3

from tkinter import *
import os
import re

ttyDevice=""


def escapeString(s) :
    result = re.sub(r'([ \"\'\|\<\>])', r'\\\1', s)
    return result

def send_entry_to_terminal(*args) :
    # Параметр *args необходим из-за того, что данная функция
    # может быть вызвана без параметра (из кнопки)
    # или с одним параметром (из поля ввода)

    tty=ttyDevice
    print('tty: '+tty)

    command=commandEntry.get()
    print('Command: '+command)

    # Вывод в терминал строки команды, которая будет выполняться
    cmdLine="echo %s <%s >%s 2> %s" % (escapeString(command), tty, tty, tty)
    print('Echo line:')
    print(cmdLine)
    os.system(cmdLine)

    # Выполнение команды в терминале
    cmdLine="(%s) <%s >%s 2> %s" % (command, tty, tty, tty)
    print('Command line:')
    print(cmdLine)
    os.system(cmdLine)


root = Tk()

# Место для вставки терминала
termFrame = Frame(root, height=700, width=1000)
termFrame.pack(fill=BOTH, expand=YES)
wid = termFrame.winfo_id()
print("Terminal window id: "+str(wid))

# Панель для ввода отправляемой команды
panelFrame=Frame(root)

Label(panelFrame, text="Command:").pack(side=LEFT)
commandEntry = Entry(panelFrame)
commandEntry.insert(0, "ls -l")
commandEntry.pack(side=LEFT,fill=X,expand=1)
commandEntry.bind("<Return>", send_entry_to_terminal)

buttonSend = Button(panelFrame, text="Send", command=send_entry_to_terminal)
buttonSend.pack(side=LEFT)

panelFrame.pack(fill=X, expand=1)

# Получение tty с которым будет работать терминал
os.system('xterm -into %d -geometry 160x50 -sb -e "tty > /tmp/pyguitty.txt"' % wid)
fp=open('/tmp/pyguitty.txt', 'r')
ttyDevice=fp.readline().strip();
fp.close();
print("tty info: "+ttyDevice)

# Открытие терминала с шеллом. Перед запуском шелла выводится рабочий tty
os.system('xterm -into %d -geometry 160x50 -sb -e "tty; sh" &' % wid)

root.mainloop()


input.sh
#!/bin/bash

echo "Укажите третий октет IPv4 адреса:"
read -p "> " subNet
echo "Вы ввели $subNet"

echo "Задержка 3 секунды..."
sleep 3

echo "Скрипт завершен"

 , , , ,

Xintrea
()

Как заставить tty+xterm отображать приглашение ввода после выполнения «удаленной» команды?

Форум — General

Есть tty-терминал, пусть это будет /dev/pts/25. В нем запущен xterm.

Находясь в другой консоли, можно выполнить команду так, что результат ее работы отразится в /dev/pts/25. Например, для получения списка файлов можно выполнить:

(ls) </dev/pts/25 >/dev/pts/25 2> /dev/pts/25
Но тут есть проблема. После выполнения такой команды, в /dev/pts/25 не появляется приглашение ввода. А нужно, чтоб появлялось.

Другими словами, после выполнения такой «удаленной» команды приходится переключаться на окно терминала /dev/pts/25, нажимать «Enter» и только тогда появляется приглашение ввода.

Важное замечание: Утилиты xdotool в системе нет и не предвидится. Автоматизация делается через python 3.5, но библиотеки python-xlib в системе нет и не предвидится.

 , , , ,

Xintrea
()

Как «объединить» команды, у которых перенаправляются стандартные потоки?

Форум — General

Имеется tty с файлом устройства /dev/pts/25.

Нужно выполнить bash-команду так, чтобы все стандартные потоки попали в /dev/pts/25. Причем необходимо, чтобы даже составная команда сработала как единое целое.

Другими словами, отдельная команда работает без ошибок:

ls -l </dev/pts/25 >/dev/pts/25 2> /dev/pts/25

А составная выдает ошибку:
ls -l | grep lib </dev/pts/25 >/dev/pts/25 2> /dev/pts/25
ls: ошибка записи: Обрыв канала

Вопрос: как сделать так, чтобы составная команда ls -l | grep lib рассматривалась как «единая» и не было вышеуказанной ошибки?

 , , ,

Xintrea
()

Как установить PyCharm Community?

Форум — Development

Имеется Astra Linux 1.6
В нем имеется Python 3.5.3

При запуске PyCharm Community через ./bin/pycharm.sh, PyCharm почему-то считает что в системе Python 3.12. Но такой версии Питона в системе, на самом деле, нет вообще.

Ошибка такая:

/usr/bin/python3 /opt/pycharm-community-2023.1/plugins/python-ce/helpers/virtualenv-20.16.7.pyz /home/<user>
/work/develop/python/pycharm_first_project/venv

Make sure that you use a version of Python supported by this package. Currently, you are using Python 3.12.

Traceback (most recent call last):
  File "/usr/lib/python3.5/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.5/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/opt/pycharm-community-2023.1/plugins/python-ce/helpers/virtualenv-20.16.7.pyz/__main__.py", line 16
7, in <module>
  File "/opt/pycharm-community-2023.1/plugins/python-ce/helpers/virtualenv-20.16.7.pyz/__main__.py", line 16
1, in run
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 634, in _load_backward_compatible
  File "/opt/pycharm-community-2023.1/plugins/python-ce/helpers/virtualenv-20.16.7.pyz/virtualenv/__init__.p
y", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 954, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 896, in _find_spec
  File "<frozen importlib._bootstrap_external>", line 1147, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1123, in _get_spec
  File "<frozen importlib._bootstrap_external>", line 1104, in _legacy_get_spec
  File "<frozen importlib._bootstrap>", line 444, in spec_from_loader
  File "<frozen importlib._bootstrap_external>", line 541, in spec_from_file_location
  File "/opt/pycharm-community-2023.1/plugins/python-ce/helpers/virtualenv-20.16.7.pyz/virtualenv/run/__init
__.py", line 70
    raise RuntimeError(f"failed to find interpreter for {discover}")
                                                                  ^
SyntaxError: invalid syntax

На официальной странице системные требования следующие:

https://www.jetbrains.com/pycharm/download/#section=linux
System requirements
Python 2.7, or Python 3.5 or newer


То есть, вроде как IDE должно работать.

Я в Python не силен, но вроде как проблема возникла в f-строке какого-то внутреннего скрипта PyCharm. А f-строки появились в Python 3.6. Тогда какого черта в системных требованиях 3.5? А может, в глубинах PyCharm действительно впихнули Python 3.12, забыли про это и теперь через этот вариант среды исполнения ничего не работает?

Как блин установить PyCharm?

 , ,

Xintrea
()

Tkinter+xterm. Почему терминал xterm не выводит результат работы программы?

Форум — Development

Имеется два примера на библиотеке Tkinter, в которых в Tk-рамку вставлен xterm. Когда примеры стартуют, в этом xterm показывается имя файла устройства tty, который првязан к данному xterm.

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

Второй пример работает неправильно. Дополнительного поля в нем нет, вместо этого значение tty запоминается в переменную. Все остальное ровно то же самое. И почему-то команды не отправляются в xterm, а результат их работы виден в консоли, в которой запущен python-скрипт.

Нужно, чтобы второй пример заработал правильно.

Отличия скриптов: https://i.ibb.co/HCSS70T/Screenshot-20230411-145913.png

Первый скрипт (работает правильно):

#!/usr/bin/python3

from tkinter import *
import os
import subprocess


def send_entry_to_terminal(*args):
    # *args needed since callback may be called from no arg (button)
    # or one arg (entry)

    command=commandEntry.get()
    tty="/dev/pts/%s" % tty_index.get()

    print('Command: '+command)
    print('tty: '+tty)

    os.system("%s <%s >%s 2> %s" % (command, tty, tty, tty))


root = Tk()

termFrame = Frame(root, height=700, width=1000)
termFrame.pack(fill=BOTH, expand=YES)
wid = termFrame.winfo_id()
print("Terminal window id: "+str(wid))

panelFrame=Frame(root)

Label(panelFrame, text="Command:").pack(side=LEFT)
commandEntry = Entry(panelFrame)
commandEntry.insert(0, "ls -l")
commandEntry.pack(side=LEFT,fill=X,expand=1)
commandEntry.bind("<Return>", send_entry_to_terminal)

buttonSend = Button(panelFrame, text="Send", command=send_entry_to_terminal)
buttonSend.pack(side=LEFT)

Label(panelFrame,text="/dev/pts/").pack(side=LEFT)
tty_index = Entry(panelFrame, width=3)
tty_index.insert(0, "1")
tty_index.pack(side=LEFT)

panelFrame.pack(fill=X, expand=1)

os.system('xterm -into %d -geometry 160x50 -sb -e "tty > /tmp/pyguitty.txt"' % wid)
fp=open('/tmp/pyguitty.txt', 'r')
ttyDevice=fp.readline();
fp.close();
print("tty info: "+ttyDevice)

os.system('xterm -into %d -geometry 160x50 -sb -e "tty; sh" &' % wid)

root.mainloop()


Второй скрипт (работает неправильно):
#!/usr/bin/python3

from tkinter import *
import os
import subprocess

ttyDevice=""


def send_entry_to_terminal(*args):
    # *args needed since callback may be called from no arg (button)
    # or one arg (entry)

    command=commandEntry.get()
    tty=ttyDevice

    print('Command: '+command)
    print('tty: '+tty)

    os.system("%s <%s >%s 2> %s" % (command, tty, tty, tty))


root = Tk()

termFrame = Frame(root, height=700, width=1000)
termFrame.pack(fill=BOTH, expand=YES)
wid = termFrame.winfo_id()
print("Terminal window id: "+str(wid))

panelFrame=Frame(root)

Label(panelFrame, text="Command:").pack(side=LEFT)
commandEntry = Entry(panelFrame)
commandEntry.insert(0, "ls -l")
commandEntry.pack(side=LEFT,fill=X,expand=1)
commandEntry.bind("<Return>", send_entry_to_terminal)

buttonSend = Button(panelFrame, text="Send", command=send_entry_to_terminal)
buttonSend.pack(side=LEFT)

panelFrame.pack(fill=X, expand=1)

os.system('xterm -into %d -geometry 160x50 -sb -e "tty > /tmp/pyguitty.txt"' % wid)
fp=open('/tmp/pyguitty.txt', 'r')
ttyDevice=fp.readline();
fp.close();
print("tty info: "+ttyDevice)

os.system('xterm -into %d -geometry 160x50 -sb -e "tty; sh" &' % wid)

root.mainloop()


Консольный вывод первого скрипта (ничего лишнего, вывод списка файлов остался в xterm):
$ ./guiterminal_correct.py
Terminal window id: 85983236
tty info: /dev/pts/42

Command: ls -l
tty: /dev/pts/42


Консольный вывод второго скрипта (виден список файлов, который должен был бы показываться в xterm):
$ ./guiterminal_incorrect.py
Terminal window id: 12163482
tty info: /dev/pts/43

Command: ls -l
tty: /dev/pts/43

итого 20
-rwxr-xr-x 1 xintrea Domain Users 1353 апр 11 14:25 guiterminal_correct.py
-rwxr-xr-x 1 xintrea Domain Users 1203 апр 11 14:25 guiterminal_incorrect.py

 , , , ,

Xintrea
()

Существует ли в природе цветной терминал для tkinter?

Форум — Development

Мне нужен виджет терминала для tkinter. Главное требование, чтобы он поддерживал цветной вывод.

Нашел только такой вариант, но на проверку оказалось, что он цвет не поддерживает:

https://pypi.org/project/tkterminal/
https://github.com/Saadmairaj/tkterminal

Вопрос: где взять цветной терминал?

 , , , ,

Xintrea
()

Tkinter - не пойму в какой момент виджет был размещен в окне

Форум — Development

В нижеприведенном коде есть создание переменной app. Она является экземпляром класса Example, который в свою очередь является расширением от класса Frame.

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

Как это происходит? Сам код:

from tkinter import Tk, Frame, Checkbutton
from tkinter import BooleanVar, BOTH
 
class Example(Frame):
    def __init__(self):
        super().__init__()
        self.initUI()
 
    def initUI(self):
        self.master.title("Флажки")
        self.pack(fill=BOTH, expand=True)
        self.var = BooleanVar()
 
        cb = Checkbutton(self, text="Показать заголовок", variable=self.var, command=self.onClick)
        cb.select()
        cb.place(x=50, y=50)
 
    def onClick(self):
        if self.var.get():
            self.master.title("Флажки")
        else:
            self.master.title("")
 
 
def main():
    root = Tk()
    root.geometry("250x150+300+300")
    app = Example()
    root.mainloop()
 
 
if __name__ == '__main__':
    main()

 ,

Xintrea
()

MidnightCommander не может нарисовать восемь нулей

Форум — Desktop

Просматривал один бинарный файл, и наткнулся на такое:

https://i.ibb.co/J55rTHF/2023-03-30-09-37-56.png

Причем этот глюк повторяется и в других местах.

MC v.4.8.26

Это что за?


Перемещено hobbit из general

 , ,

Xintrea
()

Как перезагрузить/перезапустить USB-хаб не перегружая Linux? (проблема с KVM)

Форум — Linux-hardware

USB-клавиатура и мышка подключены к компьютеру через тупой KVM. В течении дня приходится много раз переключаться.

Когда USB device number становится в районе 80...100, отваливается некий USB hub. И клавиатура и мышка перестают на данном компьютере работать. На другом компьютере, который тоже к этому KVM подключен, все прекрасно продолжает работать, то есть дело не в KVM, тем более что он тупой - просто переключатель.

Ядро если что 5.18.0-2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 5.18.5-1 (2022-06-16) x86_64 GNU/Linux

В dmesg такие строки:

[17305.244294] input: Metadot - Das Keyboard Das Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.4
[17305.301099] hid-generic 0003:24F0:0140.004B: input,hidraw2: USB HID v1.10 Keyboard [Metadot - Das Keyboar
[17312.879768] usb 1-5: USB disconnect, device number 76
[17312.879779] usb 1-5.3: USB disconnect, device number 77
[17313.266706] usb 1-5.4: USB disconnect, device number 78
[17315.659333] usb 1-5.4.4: USB disconnect, device number 79
[17317.128923] usb 1-5: new high-speed USB device number 80 using xhci_hcd
[17317.277184] usb 1-5: New USB device found, idVendor=1a40, idProduct=0101, bcdDevice= 1.11
[17317.277196] usb 1-5: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[17317.277202] usb 1-5: Product: USB 2.0 Hub
[17317.278455] hub 1-5:1.0: USB hub found
[17317.278605] hub 1-5:1.0: 4 ports detected
[17317.684917] usb 1-5.3: new full-speed USB device number 81 using xhci_hcd
[17333.265009] usb 1-5.3: device descriptor read/64, error -110
[17348.881067] usb 1-5.3: device descriptor read/64, error -110
[17349.173045] usb 1-5.3: new full-speed USB device number 82 using xhci_hcd
[17364.753124] usb 1-5.3: device descriptor read/64, error -110
[17380.369206] usb 1-5.3: device descriptor read/64, error -110
[17380.477295] usb 1-5-port3: attempt power cycle
[17381.201173] usb 1-5.3: new full-speed USB device number 83 using xhci_hcd
[17386.313220] xhci_hcd 0000:00:14.0: Timeout while waiting for setup device command


К этому же компьютеру подключена клавиатура по PS/2. Когда отваливается USB-клавиатура и мыша, приходится доставать ее с полки и перегружать машину.

Вопрос: а можно ли какими-то командами заставить переинициализироваться этот проблемный USB-хаб, чтобы не перегружаясь, вновь заставить работать USB-клаву и мышку?



Перемещено hobbit из general

 , ,

Xintrea
()

Как переформатировать «книжные» абзацы с переносами в длинные строки?

Форум — General

Имеется текст, в котором абзацы разбиты на строки, причем в словах имеются переносы. Выглядит текст вот так:

Это такой текст в котором есть переносы
строк. Причем строки переносятся не толь-
ко на границах слов, но и с помощью сим-
волов переноса (символ "тире").

Каждый абзац отделяется от другого пустой
строкой.

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

Каждый абзац отделяется от другого пустой строкой.

Как это можно быстро сделать? Есть ли готовые утилиты? Может быть, есть какой-то сервис онлайн?

 ,

Xintrea
()

Как уменьшить количество цветов при SSH X11 Forwarding?

Форум — General

Вытягиваю себе на рабочий стол кучу окошек приложений с удаленного сервера по ssh с опцией -X. Все красиво, все работает.

Однако, чтобы ускорить отрисовку и уменьшить количество данных по сети, хочу чтобы картинка GUI мне приходила в 256 цветах вместо фуллколора. Начал искать, нигде такой настройки найти не могу.

Можно ли как-нибудь снизить цветность в SSH X11 Forwarding? Или это принципиально не настраивается?

Прим.: Воспользоваться VNC не могу потому что Astra, а в ней Fly, а Fly это не то что KDE/Gnome/LxDE/etc, в нем своя подсистема безопасности, и с ней VNC не работает.

 , , ,

Xintrea
()

PulseAudio - постоянно слетает громкость в FireFox

Форум — General

Имеется Debian Linux 11 Stable с Pulseaudio 14.2 из стандартного репозитария.

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

Выглядит это так:

YouTube Проблема с громкостью звука на Debian Linux 11 Stable

Что и где надо настраивать, чтобы и канал не слетал и уровень громкости запоминался?

 , ,

Xintrea
()

Почему killall не может найти процесс, а kill может?

Форум — General

Сейчас столкнулся с такой проблемой. Имеется следующий запущенный процесс:

$ ps aux | grep oks
user 2099 14.7 26.1 1908224 532140 ? Sl   08:52   4:48 /usr/bin/valgrind.bin --suppressions=/tmp/valgrind.supp --vgdb=yes --vgdb-error=1 ./oks

Пытаюсь удалить его по имени:
$ killall -9 valgrind
valgrind: процесс не найден

$ killall -9 valgrind.bin
valgrind.bin: процесс не найден

$ killall -9 /usr/bin/valgrind.bin
/usr/bin/valgrind.bin: процесс не найден

$ killall -9 "/usr/bin/valgrind.bin"
/usr/bin/valgrind.bin: процесс не найден

Очень странно. Может быть процесс какой-то особенный? А если удалить по PID? Пробую:
$ kill -9 2099

Процесс нормально удалился, причем по тому же сигналу SIGKILL.

Но мне то нужно удалять по имени. Почему процесс не находится по имени?

 , , , процесс,

Xintrea
()

Что делает опция --quiet / --silent в grep?

Форум — General

В grep есть следующая опция:

-q, --quiet, --silent
Quiet; do not write anything to standard output.
Exit immediately with zero status if any
match is found, even if an error was detected.

Перевод:

Тихий; ничего не записывать в стандартный вывод. Немедленный выход с нулевым статусом, если найдено какое-либо совпадение, даже если была обнаружена ошибка.


Что имеется в виду под термином «ошибка»?

 ,

Xintrea
()

RSS подписка на новые темы