LINUX.ORG.RU

Сообщения snake266

 

прерывания в stm32 и костыль

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

/* State machine states */
#define SMRCC_DE_INIT_LOCKFREE 0
#define SMRCC_SET_SYS_CLOCL 1
/* rcc_deinit_lockfree flags to prevent magical numbers*/
#define RCC_DEINIT_RESET 0
#define RCC_DEINIT_HSIRDY 1
#define RCC_DEINIT_HSERDY 1
#define RCC_DEINIT_PLLRDY 1
#define RCC_DEINIT_READY 3

static volatile uint8_t SMRCC_state;
static volatile uint8_t de_init_complete;

void RCC_CRS_IRQHandler(void) {
    switch(SMRCC_state) {
        /* RCC_de_init state */
        case SMRCC_DE_INIT_LOCKFREE:
            switch(RCC->CIR & (RCC_CIR_HSERDYF | RCC_CIR_HSIRDYF | RCC_CIR_PLLRDYF)) {
                case RCC_CIR_HSIRDYF:
                    RCC->CIR |= RCC_CIR_HSIRDYC;
                    de_init_complete += RCC_DEINIT_HSIRDY;
                    RCC->CIR &= ~RCC_CIR_HSIRDYC;
                    break;
                case RCC_CIR_HSERDYF:
                    RCC->CIR |= RCC_CIR_HSERDYC;
                    de_init_complete += RCC_DEINIT_HSERDY;
                    RCC->CIR &= ~RCC_CIR_HSERDYC;
                    break;
                case RCC_CIR_PLLRDYF:
                    RCC->CIR |= RCC_CIR_PLLRDYC;
                    de_init_complete += RCC_DEINIT_PLLRDY;
                    RCC->CIR &= ~RCC_CIR_PLLRDYC;
                    break;
            }
        break;
    }
}

void rcc_deinit_lockfree(void) {
    de_init_complete = RCC_DEINIT_RESET;
    NVIC_EnableIRQ(RCC_CRS_IRQn);
    /* Enable interrupts on HSIRDY, HSERDY, PLLRDY */
    RCC->CIR |= (RCC_CIR_HSIRDYIE | RCC_CIR_HSERDYIE | RCC_CIR_PLLRDYIE);
    /*Enable HSI*/
    RCC->CR |= RCC_CR_HSION;
    RCC->CR &= ~RCC_CR_PLLON;
    /* Disable CSS and HSE */
    RCC->CR &= ~(RCC_CR_CSSON | RCC_CR_HSEON);

    RCC->CFGR = 0x00; /* Also this will set SW to HSI */
    RCC->CFGR2 = 0x00;
    RCC->CFGR3 = 0x00;

    while(de_init_complete != RCC_DEINIT_READY) {}
    /* Disable interrupts on HSIRDY, HSERDY, PLLRDY */
    RCC->CIR &= ~(RCC_CIR_HSIRDYIE | RCC_CIR_HSERDYIE | RCC_CIR_PLLRDYIE);
    NVIC_DisableIRQ(RCC_CRS_IRQn);

    de_init_complete = RCC_DEINIT_RESET;
}

У меня есть пара вопросов и сомнений в моем подходе в этом коде. Первое надо ли ресетить RCC_CIR_HSIRDYC, RCC_CIR_HSERDYC и тд (в даташите я про это не нашел). Нормально ли так много кода держать в прерывании (у меня один конечный автомат, в RCC_CRS_IRQHandler, на всю работу с rcc)?

А вот теперь то, что мне не нравиться:de_init_complete += RCC_DEINIT_HSIRDY; и компания с while(de_init_complete != RCC_DEINIT_READY) {}. Мне кажется это каким-то костыльным решением, которое может сломаться, как это сделать по-человечески?

 

snake266
()

AVR + STM = ♥?

Думал написать в толксы, но подумал вдруг аноним захочет тоже что-то написать.

Небольшая предыстория, если кому-то интересно, в общем, решил наконец взяться за голову и думать что я буду делать после института (да-да, во втором семестре третьего курса), да и еще чтоб деньги за это получать, и положил глаз на программирование микроконтроллеров, где некоторый опыт у меня уже имеется. Посмотрел на hh то, что мне нужно было там есть и в некоторых вакансиях даже требовали диплом по моей специальности (радиотехник), то что я там видел было в основном про stm и pic. Зарядившись мотивацией, я открыл свои закладки в браузере со множеством мануалов, достал свой чемодан с рассыпухой и начал потихоньку изучать как использовать atmega8a, которую я купил года два назад, и что с ней можно делать. Вообще у меня есть и stm32f103, но я ни разу не прогал для стм, а еще она у меня только одна, еще и с алика долго ждать, в отличие от трех мег, которые и дешевле и спалить одну не так страшно. А еще я поглядел код для стм32 какой-то пугающий с его бесконечными GPIO_*

В общем, у меня вопрос к местной публике, среди которых есть много программистов под микроконтроллеры и встройку: нормальная идея сначала изучить best practices для микроконтроллеров и интерфейсы на avr (в моем случае atmega8), а потом просто перейти на стм?

Мотивация сначала писать avr у меня есть потому что, субъективно, avr легче в изучении, соответственно я больше могу сфокусироваться (надеюсь) на изучаемом интерфейсе, а еще я не нашел как мне можно тестировать код под stm32 без железки (буду рад ссылкам на гайды), как можно c тем же simavr или с верилогом через icarus verilog.

 ,

snake266
()

простой в avr-gdb (simavr)

Сразу к делу, есть такой код:

#include <avr/io.h>
#include <avr/interrupt.h>

ISR(TIMER1_COMPA_vect) {
    PORTB ^= 0x01;
}

inline void init_timer(void) {
    TCCR1B |= (1 << WGM12); // CTC
    TCCR1B |= (1 << CS12); // clk/256
    OCR1AH = 0x1E; 
    OCR1AL = 0x84; // надо отсчитать секунду
}

int main(void) {
    DDRB = 0x01;
    PORTB = 0x00;
    init_timer();
    sei();
    while(1) {

    }
    return 0;
}

Собираю так:

avr-gcc -g -Og -DF_CPU=2000000UL -mmcu=atmega8a -o a.out test.c

Запускаю simavr так:

simavr -v -v -g -m atmega8 -f 2000000UL a.out

в avr-gdb запускаю так:

(gdb) file a.out 
Reading symbols from a.out...
(gdb) target remote :1234

В итоге, когда код подходит к sei() (прохожу по строчкам: n), выполнение встает после sei():

13          OCR1AL = 0x84;
(gdb) n
20          sei();
(gdb) n
^C^C^CRemote communication error.  Target disconnected.: Connection reset by peer.

Я хочу чтобы по таймеру происходило прерывание и переключало состояние первого бита PORTB. Такое ощущение, что avr-gdb не умеет в простой (или прерывания, хотя я могу и ошибаться), потому что я так и не дождался заветного PORTB ^= 0x01; по display.

 , ,

snake266
()

Сборка проекта на плюсах

В общем, чем сейчас трушно и модно собирать проект на C++ (ну или на C), да еще так чтоб и на Линуксе и на оффтопике?

CMake? Он хоть до сих пор мейнстрим (вроде как), но мой опыт это сплошная попа-боль и, вроде как, тут многие не любит CMake.

Meson? У меня был небольшой проектик, который собирался meson’ом, и все было классно, по крайней мере, мне показалось что это человечнее, чем CMake.

Make? Можно, но придется на винде ставить окружение.

Все-таки из интереса спрашиваю что сейчас используют и что уважается. Может что-то новое сделали что заслуживает внимания?

 

snake266
()

Как грамотно вытащить мини-проект из гит-репозитория

В общем, есть у меня один большой гит-репозиторий со всеми моими лабораторными (все оформлено по отдельным директориям), курсовыми и еще чем-то со всех курсов, но есть у меня один проект, в рамках учебного курса, который я бы хотел удалить из большого гит-репозитория, оформить как отдельный и добавить его как сабмодуль в репозиторий со всеми лабами. Как мне это правильно сделать ничего не сломав?

Я бы и сам попробовал сделать, но мой опыт использования гита сводится к коммитам, пушам и созданием/сливанием веток, и я не хочу сломать себе репу (окончательно).

 

snake266
()

Организация config-файлов

В общем, у меня пара ноутбуков и возрастающее кол-во различных конфигов, которые начинают расходиться, и хочется как-то уменьшить это расхождение. Думал просто завести гит-репозиторий, в котором бы была основная часть конфигов, но есть проблема - некоторые конфиги лежат в ~/.config, некоторые в ~/ или еще где. Еще одна проблема в том, что я не хочу создавать гит-репозитрий в хомяке или ~/.config, мне почему-то кажется, что это плохая идея.

Пока, все, что я придумал это в отдельной директории создать репозиторий и написать скрипт, который бы стягивал все нужные конфиги в этот репозиторий. А дальше можно сделать и скрипт, который раскидает эти конфиги по нужным директориям из репозитория. Но мне этот план не нравиться тем, что у меня есть ощущение, что я придумываю, что-то что уже, наверно, придумано или же это просто дикий костыль.

В общем, как вы держите конфиги в актуальном состоянии на нескольких устройствах?

 , ,

snake266
()

Вопросы про одноплатник

В общем, захотел купить себе одноплатник для эксперементов и изучения, на алике. Пока что выбор пал на Orange Pi (потому что малина и банан дорогие), а именно Zero LTS с 512 мб ОЗУ или Zero 2 с 1 Гб памяти. Во-первых, меня мучают сомнения сколько памяти мне хватит. Во-вторых, хотел спросить у знающих людей отзыва по OrangePi – стоят ли они того и есть ли какие подводные.

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

Пока что, в планах только подключить жесткий диск и поднять фтп сервер, и хранить там бэкапы, нужные файлы и прочее (файлопомойка, в общем). Может в будущем появится желание, еще что-нибудь поднять.

 ,

snake266
()

Как правильно вернуть из функции динамический массив/матрицу

В общем решил немного изучить fortran (for fun), решил написать одну программку, которая делает некоторые расчеты.

Данные идут из файла, количество данных не фиксировано, поэтому массив (по идее) должен быть динамическим. Пишу real, dimension(:), allocatable :: m, а emacs’овский fortran-mode ругается на то, что ALLOCATABLE attribute conflicts with RESULT attribute, хотя gfortran даже не давится с -Wall -Wpedantic -Wextra. Код:

  function get_map() result(m)
    implicit none
    integer, dimension(:), allocatable :: m ! fortran-mode ругается именно тут
    allocate(m(15)) ! пока так, потом напишу функцию, которая возвращает кол-во элементов
    open(unit = 1, file = 'field2.txt', status = 'old')
    read (1, *) m
    close(1)
    print *, m
  end function get_map

В общем, мой вопрос: все ли так я делаю и не обращать внимание на то, что ругается fortran-mode?

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

 

snake266
()

Debian и локаль в терминале

В общем, решил поставить себе дебиан. Использовал графический инсталлер, там регион указал Россию, но локаль указал en_US.UTF-8. Зашел, плазма на английском, потом заметил, что в терминале вывод программ на русском, хотя:

[georgii@acer ~]$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US:ru
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=C
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Пробовал и dpkg-reconfigure locale, и localectl set-locale и писал в /etc/profile "${LANG:=en_US.UTF-8}"; export LANG, и в .bashrc export LANG=en_US.UTF-8.

Подтверждение того, что программы выводят русский текст

mv --help
Использование: mv [ПАРАМЕТР]… [-T] ИСТОЧНИК НАЗНАЧЕНИЕ
       или:    mv [ПАРАМЕТР]… ИСТОЧНИК… КАТАЛОГ
       или:    mv [ПАРАМЕТР]… -t КАТАЛОГ ИСТОЧНИК…
Переименовывает ИСТОЧНИК в НАЗНАЧЕНИЕ, или перемещает ИСТОЧНИК(и) в КАТАЛОГ.

Что я сделал не так?

 ,

snake266
()

CMake find_package(Threads) падает

В общем, решил использовать для своего проекта CMake. В проекте использую SDL2 и SDL2_image (там еще подтянется SDL2_mixer), начал гуглить, как все это слинковать. Сначала я удивился, что CMake из коробки не может подтянуть SDL2-библиотеки, только SDL, потом нашел репозиторий с FindSDL2*.cmake. Окей, склонировал все в корень проекта в cmake/sdl2/. Написал вот такой CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)

project(prototype)

list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/sdl2)

add_executable(${PROJECT_NAME} main.c)

target_include_directories(${PROJECT_NAME} PRIVATE graphics)

find_package(SDL2 REQUIRED)
target_link_libraries(${PROJECT_NAME} SDL2::Main)

find_package(SDL2_image REQUIRED)
target_link_libraries(${PROJECT_NAME} SDL2::Image)

Валится с:

> cmake -S . -B build
CMake Error at cmake/sdl2/FindSDL2.cmake:243 (message):
  Could NOT find Threads (Threads is required by SDL2).
Call Stack (most recent call first):
  CMakeLists.txt:11 (find_package)


-- Configuring incomplete, errors occurred!

На вот этом if:

...
if(NOT APPLE)
  find_package(Threads QUIET)
  if(NOT Threads_FOUND)
    set(SDL2_THREADS_NOT_FOUND "Could NOT find Threads (Threads is required by SDL2).")
    if(SDL2_FIND_REQUIRED)
      message(FATAL_ERROR ${SDL2_THREADS_NOT_FOUND})
    else()
        if(NOT SDL2_FIND_QUIETLY)
          message(STATUS ${SDL2_THREADS_NOT_FOUND})
        endif()
      return()
    endif()
    unset(SDL2_THREADS_NOT_FOUND)
  endif()
endif()
...

Как я понял, он не может найти pthread. Решил, добавить add_compile_options(-lpthread) также валится.
Заметил, что find /lib -name "*pthread" ничего не выводит, но тестовая сборка с gcc main.c -pthread отрабатывает нормально.
Также я пробовал добавлять set(THREADS_PREFER_PTHREAD_FLAG TRUE) и в мой CMakeLists.txt и в cmake/sdl2/FindSDL2.cmake, но оно тоже не помогало

Почему cmake не может собрать проект? Что я делаю не так?

Решение

Заменить find_package на find_library таким образом:

- find_package(SDL2 REQUIRED)
- target_link_libraries(${PROJECT_NAME} SDL2::Main)
+ find_library(SDL2_LIBRARY NAMES SDL2)
+ target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARY})

- find_package(SDL2_image REQUIRED)
- target_link_libraries(${PROJECT_NAME} SDL2::Image)
+ find_library(SDL2_IMAGE_LIBRARY NAMES SDL2_image)
+ target_link_libraries(${PROJECT_NAME} ${SDL2_IMAGE_LIBRARY})

 ,

snake266
()

Grub не ставится на EFI

Чтобы занять себя этим замечательным летом, решил попробовать Gentoo, но пока только в виртуалке, для тренировки. Проблема возникла на настройке grub, а именно спотыкается об efi:

(chroot) live cd / # grub-install --target=x86_64-efi --efi-directory=/boot
Installing for x86_64-efi platform.
EFI variables are not supported on this system.
EFI variables are not supported on this system.
grub-install: error: efibootmgr failed to register the boot entry: No such file or directory.

Ядро стоит sys-kernel/gentoo-kernel-bin, efibootmgr установлен.
emerge --config sys-kernel/gentoo-kernel-bin запускал, но ни # modprobe efivars ни # modprobe efivarfs не работает, говорит что такого модуля в /lib/modules/5.10.27-gentoo-x86_64 нет (ошибка кроется тут?).
/boot точно сделан как EFI partion, размечен как vfat.

Нашел эту страницу на хэнбуке. Проверяю:

# mount | grep efivars

А у меня там ничего. В русском переводе указано такое предложение:

Если данная файловая система не смонтирована (она должна быть смонтирована через скрипт инициализации sysfs), можно смонтировать ее вручную следующей командой:root #mount -t efivarfs efivarfs /sys/firmware/efi/efivars

Но у меня нет ни /sys/firmware/efi/efivars ни /sys/firmware/efi, а создать я их не могу.

efibootmgr -v тоже отвечает: EFI variables are not supported on this system.

Что я делаю не так? Что мне надо сделать чтобы все заработало?

P.S. Я хочу попробовать поставить именно EFI, потому что до этого все ставил на BIOS (Legacy mode), хочу открыть для себя что-то новое.

 , ,

snake266
()

Не работает микрофон у наушников

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

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

Вывод pactl list с pipewire: pastbin
Вывод pacmd lis-soursec (пульса):

❯ pacmd list-sources
2 source(s) available.
    index: 0
	name: <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
	driver: <module-alsa-card.c>
	flags: DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
	state: RUNNING
	suspend cause: (none)
	priority: 1030
	volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB
	        balance 0.00
	base volume: 65536 / 100% / 0.00 dB
	volume steps: 65537
	muted: no
	current latency: 0.00 ms
	max rewind: 6 KiB
	sample spec: s16le 2ch 44100Hz
	channel map: front-left,front-right
	             Stereo
	used by: 1
	linked by: 1
	configured latency: 40.00 ms; range is 0.50 .. 2000.00 ms
	monitor_of: 0
	card: 1 <alsa_card.pci-0000_00_1b.0>
	module: 7
	properties:
		device.description = "Monitor of Built-in Audio Analog Stereo"
		device.class = "monitor"
		alsa.card = "1"
		alsa.card_name = "HDA Intel PCH"
		alsa.long_card_name = "HDA Intel PCH at 0xb3614000 irq 50"
		alsa.driver_name = "snd_hda_intel"
		device.bus_path = "pci-0000:00:1b.0"
		sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card1"
		device.bus = "pci"
		device.vendor.id = "8086"
		device.vendor.name = "Intel Corporation"
		device.product.id = "9c20"
		device.product.name = "8 Series HD Audio Controller"
		device.form_factor = "internal"
		device.string = "1"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
  * index: 1
	name: <alsa_input.pci-0000_00_1b.0.analog-stereo>
	driver: <module-alsa-card.c>
	flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
	state: RUNNING
	suspend cause: (none)
	priority: 9039
	volume: front-left: 9628 /  15% / -49.98 dB,   front-right: 9628 /  15% / -49.98 dB
	        balance 0.00
	base volume: 5206 /   8% / -66.00 dB
	volume steps: 65537
	muted: no
	current latency: 0.01 ms
	max rewind: 0 KiB
	sample spec: s16le 2ch 44100Hz
	channel map: front-left,front-right
	             Stereo
	used by: 1
	linked by: 1
	configured latency: 40.00 ms; range is 0.50 .. 2000.00 ms
	card: 1 <alsa_card.pci-0000_00_1b.0>
	module: 7
	properties:
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "ALC283 Analog"
		alsa.id = "ALC283 Analog"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "0"
		alsa.card = "1"
		alsa.card_name = "HDA Intel PCH"
		alsa.long_card_name = "HDA Intel PCH at 0xb3614000 irq 50"
		alsa.driver_name = "snd_hda_intel"
		device.bus_path = "pci-0000:00:1b.0"
		sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card1"
		device.bus = "pci"
		device.vendor.id = "8086"
		device.vendor.name = "Intel Corporation"
		device.product.id = "9c20"
		device.product.name = "8 Series HD Audio Controller"
		device.form_factor = "internal"
		device.string = "front:1"
		device.buffering.buffer_size = "352800"
		device.buffering.fragment_size = "176400"
		device.access_mode = "mmap+timer"
		device.profile.name = "analog-stereo"
		device.profile.description = "Analog Stereo"
		device.description = "Built-in Audio Analog Stereo"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
	ports:
		analog-input-mic: Microphone (priority 8700, latency offset 0 usec, available: unknown)
			properties:
				device.icon_name = "audio-input-microphone"
	active port: <analog-input-mic>

В pavu отображается только встроенный микрофон. Что сделать с пульсой, чтобы микрофон заработал?

 , ,

snake266
()

Gnome и уведомления

А можно как-то в гноме отключить уведомления типа "Application name" is ready скрин? Особенно такие уведомления появляются у телеграмма и без разницы какие уведомления выбраны нативные или телграмовские.

 ,

snake266
()

Приложение для чтения книг с удобной интеграцией словаря/переводчика.

Сабж.

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

В принципе, если есть что-то такое и для онтопика, то тоже может подойти.

UPD. В общем, решил остановиться на GoldenDict, его поддерживают популярные читалки (я пробовал с Moon Reader) и для него есть огромное кол-во словарей.

 , ,

snake266
()

lstlisting русские буквы съезжают

Сабж. Использую tectonic и listing. Есть вот такой код для octave:

n = 5; %Кол-во измерений
x = [2 : 6];
y = [17.2, 45.5, 96.5, 175.8, 288.9];

s(1,1) = n;
s(2, 1) = sum(x);
s(1, 2) = s(2, 1);
s(2, 2) = sum(x.^2)
b = [sum(y); sum(y*x')]

a = s\b
y2 = a(1) + a(2)*x
hold on; grid on;
plot(x, y, 'linestyle', 'none', 'marker', 's', 'color', 'r', 'markerfacecolor', 'r');
plot(x, y2, 'color', 'g');
legend('Тест', 'Апроксимирующая прямая')

Русский текст съезжает и получается так. Настройки для listing

\lstset {
  backgroundcolor = \color{backcolor},
  frame = single
}

Судя по этому топику (LaTeX: Русский в Listings) это проблема именно listing. Попробовал добавить

\usepackage[utf8x]{inputenc}
\lstset {
  backgroundcolor = \color{backcolor},
  frame = single,
  inputencoding=utf8x,
  extendedchars=\true
}

Но это не помогло.

 ,

snake266
()

Пропал ярлык после редактирования .desktop

Заметил, что в emacs не работает compose key (не в терминале). Нашел решение XMODIFIERS=@im=none emacs, скопировал emacs.desktop к себе в .local/share/applications, поменял строчку с Exec=emacs %F на Exec=XMODIFIERS=@im=none emacs %F и отваливается ярлык в de. Что я делаю не так?

 ,

snake266
()

Как запустить ip link set up на логине

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

Надо запустить sudo ip link set enp1s0f1 up и sudo dhcpcd. С sudo dhcpcd решено, я нашел dhcpcd.service, а вот по ip link set up я такого найти не смог. Какие есть варианты запускать эту команду на старте? Может системд юнит есть какой? Или самому написать?

 

snake266
()

Нет доступа к /home

В общем, давно как то устанавливал этот сетап и как то сделал такой финт, что /home который на sda7 не прописан в fstab. Сейчас решил починить это, потому что некоторые программы неверно рассчитывают свободное место в хомяке, ну /home нету в выхлопе df -h. Прописал в fstab: /dev/sda7 /home ext4 noatime 0 2

Теперь при логине выдаёт:<user>: /home/<user>: change directory failed: Permission denied. Могу предположить что этот юзер не состоит в нужно группе, но я не знаю в какой.

 ,

snake266
()

Края тачпада

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

Может это можно как то реализвать? Беглый взгляд на ман libinput не дал результатов.

 , , ,

snake266
()

Непонятные отступы у urxvt в awesome wm

Проблема: у urxvt снизу и справа непонятные отступы раз два. Как решить эту проблему?

 ,

snake266
()

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