LINUX.ORG.RU

Сообщения yukiome

 

Не понимаю работу cron, или не получается настроить его

На данный момент у меня Debian Trixie, не могу никак понять работу демона cron и как его правильно настроить.

Для теста решил написать cron job, который выводит каждую минуту уведомление с фразой «Hello World».

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

Nov 14 11:23:00 trixie-sid CROND[1859]: (gramevar) CMD (/usr/bin/dunstify "Hello" "World")
Nov 14 11:23:00 trixie-sid CROND[1856]: (gramevar) CMDEND (/usr/bin/dunstify "Hello" "World")
Nov 14 11:23:00 trixie-sid CROND[1856]: pam_unix(cronie:session): session closed for user gramevar

Решил попробовать по совету https://stackoverflow.com/a/53524203, но и это не дало своих плодов.

 , ,

yukiome
()

Странное поведение venv

Когда виртуальное окружение создается через

python -m venv venv
source venv/bin/activate

проблем никаких нет, но после условного ребута системы окружение как бы и активируется, но как будто и нет. Причем никаких перемещений и переименований venv/ не было.

pip freeze возвращает в окружении все пакеты, установленные лишь в системе, но среду он даже не затронул.

Сам я новичок в программировании на python, только изучаю азы.

 

yukiome
()

Не могу в Xorg переключаться по рабочим столам

Проблема заключается в том, что нет возможности переключения на рабочие пространства посредством alt+{0-9}, когда на условный alt+d работает прекрасно.

Даже dwm vanilla попробовал поставить, все равно не получалось

Эксперимента ради попробовал переключиться по Win+{0-9}. Работает, но до жути неудобно.

Дистрибутив Debian Trixie Sid, впервые у меня подобное.

 , , ,

yukiome
()

Authentification failure, или почему не получается войти в систему?

На Fedora Linux 40, kernel 6.10.12-200.fc40.x86_64 не получается войти в систему в связи с ошибкой, представленной ниже

"System is booting up. Unprivileged users are not permitted to log in yet. Please come back later. For technical details, see pam_nologin(8)."

Authentication failure

На данный момент резервная ОС Void Linux.

Прочитав немного man-страницу и немного проведя эксперименты с файлом /etc/pam.d/login были изменения, но они никакого результата не дали, разве что получалось так, что логин правильный, но система думает об обратном.

Вот так выглядит структура файла у Fedora

#%PAM-1.0
auth       substack     system-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
session   optional     pam_ck_connector.so

У Void Linux в этом плане гораздо проще

#%PAM-1.0

auth 		required 	pam_securetty.so
auth 		requisite 	pam_nologin.so
auth 		include 	system-local-login
account 	include 	system-local-login
session 	include 	system-local-login

Точной причины не могу знать, разве что последним действием было sudo chmod 1777 /tmp, либо же один из демонов systemd, как systemd-tmpfiles-setup (или один из), не дает войти.

 , ,

yukiome
()

ffmpeg - Почему gif и прочие форматы видео не отображаются в Telegram на телефоне?

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

Правда видео, полученное с ffmpeg, оно будет хорошо отображаться на desktop-версии, когда на мобильной - требует стороннего плеера (как в случае с mkv) или вовсе не открывает (как в случае с gif).

Надеюсь есть подобные опции вроде -support (поддержка мобильных и прочих).

 , , ,

yukiome
()

Как в imagemagick получить метаданные выделенной области экрана?

Для чего мне это нужно?

  1. Зачем другие программы, когда есть imagick
  2. Для ffmpeg, чтобы снимать выделенную область

Возникает мысль, что все это можно организовать через import, ведь он и отвечает как раз за выделение

Сейчас пока мысли в псевдокоде

$ изображение="/tmp/png.png"
$ import $изображение

# решение из <https://askubuntu.com/questions/120234/how-can-i-read-image-info-on-the-command-line>
$ identify -format "%wx%h" $изображение

$ ffmpeg -f x11grab область экрана $изображение выходной_файл

Звучит как что-то неправильное, но это единственное, что могло мне прийти в голову.

 , ,

yukiome
()

Как установить phpactor в neovim, или что выбрать вместо него?

Возникла ситуация, что не получается установить phpactor в neovim посредством пакетного менеджера Lazy.

Многочисленные поиски сводятся к тому, что вместо него устанавливается intelephense через npm

npm i intelephense -g

Но это условно-бесплатная альтернатива, т.е. больше функционала доступно лишь по подписке, а оно мне не нужно.

Версии исполняемых файлов

  • Composer 2.7.8
  • PHP 8.3.11
  • Phpactor 2024.06.30.0

Cтруктура init.lua

-- Basic
require('core.plugins')
require('core.mappings')
require('core.configs')

-- Plugins
require('plugins.treesitter')
require('plugins.lspconfig')
require('plugins.cmp')
require('plugins.lint')
require('plugins.mason')
require('plugins.lualine')

Cтруктура lspconfig.lua

-- Setup language servers.
local lspconfig = require('lspconfig')
lspconfig.pylsp.setup {}
lspconfig.clangd.setup {}
lspconfig.phpactor.setup {
	on_attach = on_attach,
    init_options = {
        ["language_server_phpstan.enabled"] = false,
        ["language_server_psalm.enabled"] = false,
    }
}
lspconfig.html.setup {}

-- Global mappings.
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float)
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist)

-- Use LspAttach autocommand to only map the following keys
-- after the language server attaches to the current buffer
vim.api.nvim_create_autocmd('LspAttach', {
  group = vim.api.nvim_create_augroup('UserLspConfig', {}),
  callback = function(ev)
    -- Enable completion triggered by <c-x><c-o>
    vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'

    -- Buffer local mappings.
    -- See `:help vim.lsp.*` for documentation on any of the below functions
    local opts = { buffer = ev.buf }
    vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
    vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
    vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
    vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
    vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
    vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts)
    vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts)
    vim.keymap.set('n', '<space>wl', function()
      print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
    end, opts)
    vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts)
    vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts)
    vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts)
    vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
    vim.keymap.set('n', '<space>f', function()
      vim.lsp.buf.format { async = true }
    end, opts)
  end,
})

Конфигурация plugins.lua (конфигурация урезана в целях компактности)

require("lazy").setup({
{ 'nvim-treesitter/nvim-treesitter' },
{ 'neovim/nvim-lspconfig', },
-- mason
{ "williamboman/mason.nvim", },
{ "williamboman/mason-lspconfig.nvim" }
-- completion
{ 'hrsh7th/cmp-nvim-lsp' },
{ 'hrsh7th/cmp-buffer' },
{ 'hrsh7th/cmp-path' },
{ 'hrsh7th/cmp-cmdline' },
{ 'hrsh7th/nvim-cmp' },
})

Как можно заметить, у меня установлен mason.nvim, через него установлен phpactor, который лежит в ~/.local/share/nvim/mason/packages/phpactor/phpactor.

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

Фрагмент файла cmp.lua

local cmp = require'cmp'
cmp.setup({
    snippet = {
      expand = function(args)
        require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
      end,
    },
    window = {
      -- completion = cmp.config.window.bordered(),
      -- documentation = cmp.config.window.bordered(),
    },
    mapping = cmp.mapping.preset.insert({
    ["<C-k>"] = cmp.mapping.select_prev_item(), -- previous suggestion
    ["<C-j>"] = cmp.mapping.select_next_item(), -- next suggestion
    ["<C-b>"] = cmp.mapping.scroll_docs(-4),
    ["<C-f>"] = cmp.mapping.scroll_docs(4),
    ["<C-Space>"] = cmp.mapping.complete(), -- show completion suggestions
    ["<C-e>"] = cmp.mapping.abort(), -- close completion window
    ["<CR>"] = cmp.mapping.confirm({ select = false }),
  }),
    sources = cmp.config.sources({
      { name = 'nvim_lsp' },
      { name = 'luasnip' }, -- For luasnip users.
      { name = 'buffer' },
      { name = 'path' }, -- For vsnip users. 
   }),
})


cmp.setup.cmdline({ '/', '?' }, {
    mapping = cmp.mapping.preset.cmdline(),
    sources = {
      { name = 'buffer' }
    }
  })

  cmp.setup.cmdline(':', {
    mapping = cmp.mapping.preset.cmdline(),
    sources = cmp.config.sources({ { name = 'path' } }, 
    { { name = 'cmdline' } })
  })

  -- Set up lspconfig.
  local capabilities = require('cmp_nvim_lsp').default_capabilities()
    
  local phpactor_capabilities = vim.lsp.protocol.make_client_capabilities()
        phpactor_capabilities.textDocument.foldingRange = {
        dynamicRegistration = false,
        lineFoldingOnly = true
    }

    phpactor_capabilities['textDocument']['codeAction'] = {}
  
    require('lspconfig')['phpactor'].setup {
        capabilities = phpactor_capabilities,
        on_attach = on_attach
  }

Структура configs.lua

vim.wo.number = true
vim.wo.relativenumber = true

vim.opt.shell = "/usr/bin/zsh"
vim.opt.number = true
vim.opt.swapfile = false
vim.opt.mouse = "a"
vim.opt.mousefocus = true
vim.opt.clipboard = "unnamedplus"

vim.opt.termguicolors = true
vim.cmd('colorscheme retrobox')

-- Indent Settings
vim.opt.expandtab = true
vim.opt.shiftwidth = 4
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.smartindent = true

Послесловие. Возможно трудности с конфигурацией phpactor, которую так и не понял, либо composer.

 ,

yukiome
()

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