LINUX.ORG.RU

Избранные сообщения Aoka

И Снег и Сугробы и Ёлки на вашем ПеКа

Форум — Talks
--           Зависимости              -
---------------------------------------
-- curl    -  загрузка ёлочек         -
-- scrot   -  снимок рабочего стола   -
-- love2d  -  запуск снежка и ёлочек  -
---------------------------------------
-- Создать каталог `новый_год`        -
-- Создать в каталоге файл `main.lua` -
-- Скопировать в файл этот код.       -
-- Используя терминал запутсить из    -
-- созданного каталога программу      -
--                                    -
--   Вот так запустить  `love .`      -
---------------------------------------
--            Управление              -
---------------------------------------
-- Нажать 1 - установит фон рабочего  -
--            стола в программе, как  -
--            будто на нём идёт снег  -
---------------------------------------
-- Нажать 2 - убрать сугробы, но снег -
--            то падает и они вырастут-
--            снова, но другие уже :) -
---------------------------------------
-- Нажать 3 - Загрузить и отобразить  -
--            просту ёлочку           -
---------------------------------------
-- Нажать 4 - Загрузить и установить  -
--            нарядную новогоднюю ёлку-
---------------------------------------
-- Нажать 5 - Вернуть чёрный фон      -
---------------------------------------
--    Нажать esc или q для выхода     -
---------------------------------------
-- Программа проверяет время и если   -
---------------------------------------
-- Время 23:45 - Загружается и отобра -
--               жается простая ёлочка-
---------------------------------------
-- Время 00:00 - Загружается и отобра -
--               жается нарядная ёлка -
---------------------------------------
-- Эти действия по времени происходят -
-- автоматически предупреждая о под-  -
-- ходе и наступлении нового года гы  -
---------------------------------------
-- Устанавливать ли фон автоматически -
---------------------------------------
local autobackround = false; --вкл/выкл
---------------------------------------
local sugrob = {}
local snow   = {};
local snow_opacity = 0;
local screen_width = 0;
local screen_height= 0;
local tree_image = nil;
local background = nil;
local tree_opacity = 0;
local tree_url =
{
  [1] = 'https://i.ibb.co/f24xCMp/1.png';
  [2] = 'https://i.ibb.co/KLpSKdZ/2.png';
};
local once_call_tree_1 = true;
local once_call_tree_2 = true;
----------------------------------------
function get_app_path()
    return love.filesystem.getSaveDirectory()..'/';
end
function load_tree(id)
   if love.system.getOS() == 'Android' then
      if id == 1 then
         tree_image = love.graphics.newImage('tree_1.png');
      end
      if id == 2 then
         tree_image = love.graphics.newImage('tree_2.png');
      end
      tree_opacity = 0;
      return;
   end
   local path = get_app_path();
   os.execute('curl '..tree_url[id]..' --output '..path..'tree.png');
   if love.filesystem.getInfo('tree.png')  then
      tree_image = love.graphics.newImage('tree.png');
      tree_opacity = 0;
   end
end
function draw_tree()
    if tree_image then
    local w = love.graphics.getWidth()
    local h = love.graphics.getHeight()
    local sx,sy = w/tree_image:getWidth(),h/tree_image:getHeight();
    love.graphics.setColor(1,1,1,tree_opacity);
       love.graphics.draw(tree_image,0,0,0,sx,sy);
    end
end
function update_tree(dt)
    if tree_opacity < 1 then
       tree_opacity = tree_opacity + 0.1 * dt;
    end
end
function create_sugrob()
    if love.system.getOS() == 'Android' then
       return;
    end
    local x = love.graphics.getWidth()
    local y = love.graphics.getHeight()
    local s = x/y;
    for i=1,50 do
        local xp = love.math.random(0,x);
        local cs = love.math.random(s*25,s*75);
        table.insert(sugrob,{'fill',xp,y,cs,150})
    end
end
function draw_sugrob()
    if love.system.getOS() == 'Android' then
       return;
    end
    love.graphics.setColor(0.95,0.95,1,1);
    for i=1,#sugrob do
        love.graphics.circle(sugrob[i][1],sugrob[i][2],sugrob[i][3]+sugrob[i][5],sugrob[i][4]);
    end
end
function update_sugrob(dt)
    local x,y = love.window.getMode();
    for i=1,#sugrob do
        if sugrob[i][5] > 0 then
           sugrob[i][5] = sugrob[i][5] - love.math.random(0.0,i*0.05)
        end
    end
end
function create_snow()
    local x = love.graphics.getWidth()
    local y = love.graphics.getHeight()
    local s = x/y;
    for i=1,60 do
        local xp = love.math.random(0,x);
        local xy = love.math.random(0,y);
        local cs = love.math.random(s*1,s*10);
        table.insert(snow,{'fill',xp,xy,cs,0})
    end
end
function draw_snow()
    for i=1,#snow do
        love.graphics.setColor(0.95,0.95,1,snow_opacity);
        love.graphics.circle(snow[i][1],snow[i][2],snow[i][3],snow[i][4]+snow_opacity);
    end
end
function lerp(from, to, t)
  return t < 0.5 and from + (to-from)*t or to + (from-to)*(1-t)
end
function update_snow(dt)
    local x,y = love.window.getMode();
    if snow_opacity < 0.7 then
       snow_opacity = snow_opacity + 0.1 * dt;
    end
    for i=1,#snow do
        snow[i][3] = snow[i][3] + i * 0.5;
        if snow[i][5] == 1 then
           snow[i][2] = snow[i][2] + i * 0.25 + i * 0.5 + love.math.random(0,3);
       elseif snow[i][5] == 0 then
           snow[i][2] = snow[i][2] - i * 0.25 + i * 0.5 + love.math.random(0,3);
        end
        if(snow[i][3] > y + snow[i][4]) then
          snow[i][3] = -snow[i][4];
          snow[i][2] = love.math.random(0,x);
          snow[i][5] = love.math.random(-1,1);
        end
    end
end
local button_colors =
{
    {0.5,0.0,0.0,1},
    {0.0,0.5,1.0,1},
    {0.0,0.0,1.0,1},
    {0.5,0.5,1.0,1},
    {0.0,0.5,1.0,1},
}
local button_circles = {}
local show_controls  = false;
function create_controls()
   local x = love.graphics.getWidth()
   local y = love.graphics.getHeight()
   local pose_y = (y * 0.5);
   local radius = (x * 0.01) * 5;
   for i=1,5 do
       local pose_x = radius*i * 3.5;
       table.insert(button_circles,{'fill',pose_x,pose_y,radius,button_colors[i]})
   end
end
function draw_controls()
   if show_controls then
      local b = button_circles;
      for i=1,#button_circles do
          love.graphics.setColor(unpack(b[i][5]));
          love.graphics.circle(b[i][1],b[i][2],b[i][3],b[i][4]);
      end
   end
end
function update_controls(px,py)
   if show_controls then
       local b = button_circles;
       for i=1,#button_circles do
           local cx,cy,cr = b[i][2],b[i][3],b[i][4];
           if((px - cx)^2 + (py - cy)^2 < cr^2) then
              if i == 1 then set_background(); end
              if i == 2 then sugrob = {}; create_sugrob(); end
              if i == 3 then load_tree(1);   end
              if i == 4 then load_tree(2);   end
              if i == 5 then background=nil; end
           end
       end
    end
end
function love.displayrotated(index, orientation)
    sugrob = {};
    create_sugrob();
    snow = {};
    create_snow();
    snow_opacity = 0;
    tree_opacity = 0;
    button_circles = {};
    create_controls();
end
function love.mousepressed(x,y)
    if love.system.getOS() ~= 'Android' then
       update_controls(x,y)
       show_controls = not show_controls;
    end
end
function love.touchpressed(b,x,y)
    update_controls(x,y)
    show_controls = not show_controls;
end
function love.load()
    love.filesystem.write('init','x',1);
    if love.filesystem.getInfo('icon.png') then
       love.window.setIcon(love.image.newImageData('icon.png'));
    end
    love.window.setTitle("Маааленькой ёёёлочке холодно зимооой.")
    if love.system.getOS() == 'Android' then
       love.window.setMode(1280,720,{fullscreen=true,resizable=true,vsync=true});
       screen_width = love.graphics.getWidth()
       screen_height = love.graphics.getHeight()
    else
       love.window.setMode(0,0,{resizable=true,borderless=true})
       love.window.setFullscreen(true,'desktop');
       screen_width = love.graphics.getWidth()
       screen_height = love.graphics.getHeight()
       love.window.setMode(0,0,{resizable=true,borderless=true})
       love.window.maximize()
    end
    create_sugrob()
    create_snow()
    create_controls()
end
function set_background()
   if love.system.getOS() == 'Android' then
      return;
   end
   local x,y = love.window.getMode();
   love.window.minimize()
   love.timer.sleep(1)
   local path = get_app_path()
   local status = os.execute('scrot -a '..screen_width-x..','..screen_height-y..','..x..','..y..' -o '..path..'screen.png');
   love.window.restore()
   love.window.maximize()
   if love.filesystem.getInfo('screen.png') then
      background = love.graphics.newImage('screen.png');
   end
end
if autobackround then
   set_background()
end
function love.keypressed(key)
   if key == 'q' or key == 'escape' then
      love.event.quit()
   end
   if key == '1' then set_background(); end
   if key == '2' then sugrob = {}; create_sugrob(); end
   if key == '3' then load_tree(1);   end
   if key == '4' then load_tree(2);   end
   if key == '5' then background=nil; end
end

function love.update(dt)
    if os.date('%H%M') == '2345' then
       if once_call_tree_1 then
          load_tree(1);
          once_call_tree_1 = false;
       end
    end
    if os.date('%H%M') == '0000' then
       if once_call_tree_2 then
          load_tree(2);
          once_call_tree_2 = false;
       end
    end
    update_snow(dt)
    update_tree(dt)
    update_sugrob(dt)
end
function love.draw()
    if background then
       love.graphics.setColor(1,1,1,1);
       love.graphics.draw(background)
    end
    draw_tree();
    draw_sugrob();
    draw_snow();
    draw_controls();
end

Внешний вид. Видео. Досвиданья.


По просьбе @apt_install_lrzsz сборки


Добавил кнопки появляются и исчезают по нажатию на экране.
Как альтернатива нажатия 1,2,3,4,5.
На Андроиде часть не работает.


В истории правок этого сообщения есть прошлая версия, если с этой пробелмы, но прошлая только для ПК.

 , , ,

LINUX-ORG-RU
()

А как нонче запускать amdvlk?

Форум — General

Поставил amdvlk и amd-vulkan-prefixes

При попытке запуска пишет:

vk_amdvlk mangohud vkcubeCannot find a compatible Vulkan installable client driver (ICD).

Please look at the Getting Started guide for additional information. 

При этом:

ls /usr/share/vulkan/icd.d
amd_icd32.json  amd_icd64.json  radeon_icd.i686.json  radeon_icd.x86_64.json 

и

cat /usr/share/vulkan/icd.d/amd_icd64.json
{
  "file_format_version": "1.0.0",
  "ICD": {
    "library_path": "/usr/lib/amdvlk64.so",
    "api_version": "1.3.269"
  },
  "layer": {
    "name": "VK_LAYER_AMD_switchable_graphics_64",
    "type": "GLOBAL",
    "library_path": "/usr/lib/amdvlk64.so",
    "api_version": "1.3.269",
    "implementation_version": "1",
    "description": "AMD switchable graphics layer",
    "functions": {
      "vkGetInstanceProcAddr": "vk_icdGetInstanceProcAddrSG",
      "vkGetDeviceProcAddr": "vk_icdGetDeviceProcAddrSG"
    },
    "disable_environment": {
      "DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1": "1"
    }
  }
} 

 

Vochatrak-az-ezm
()

vim в русской раскладке

Форум — Desktop

Как мне заставить работать vim нормально в русской раскладке? Перебивать все хоткеи вручную употеешь, учитывая что например dw и df нужно перебивать отдельно. Есть идеи?

 ,

Werenter
()

Проблемы с Grub, не могу восстановить загрузчик!

Форум — Linux-install

Форумчане, здравия, я ещё зелёный в вопросах линукс, прошу не судите строго. Вообщем, я решил значит поставить себе Parrot OS вместо Windows 10, поигрался с разметкой диска, установка произошла с ошибкой, поэтому я её отложил, важное примечание: после этого мне пришлось переустановить Windows, что, вероятно, могло повлиять на загрузчик. Вообщем, пытаюсь установить сейчас, но Grub не может её загрузить, открывается лишь сам терминал Grub’a, в котором ничего нельзя сделать, потому что он не может прочитать ВСЕ разделы[(hd0),(hd0,msdos1), ((hd1), (hd1,gpt[1-5]), если это важно][Вероятно, повреждён boot, или ещё что, но я, честно, не знаю]. Я пытался смонтировать вручную, но эффекта никакого не достиг, потому что раздел весом 20 гб, где предположительно должен лежать дистрибутив, банально зашифрован. Тогда я через винду удалил эту разметку(винда запускается, но только она, надеюсь это важно). Тогда я решил опробовать утилиту Boot-Repair, если быть конкретным установил LiveCD образ на флешку(самой утилиты и Linux Mint), но она не может мне помочь, пишет примерно такое:please enable a repository containing the grub-efi packages in the software sources of parrot os 5.1, после удаления тома и такого не написала. У меня огромная просьба, пожалуйста, помогите мне, можно ли мне помочь? Можно ли поставить Linux без Grub’a(допустим заменить его), изначально ставил систему в дуалбут, но мне винда не нужна. Можно ли восстановить Grub через Windows(допустим, удалить его полностью и поставить заново)? Бэкапы всех важных данных я сделал, может есть утилита которая переустановит абсолютно всё под ноль? Мне важно поставить линукс, буду благодарен любой помощи.

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

 , , , ,

at5tek
()

пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ

Форум — Web-development

Это мне такое VSCode сейчас наделал в файлах с cp1251 при поиске и глобальной замене. Менял-то я английские слова. А сломались русские.

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

А что это? Почему именно эти? Как получить

пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
из абсолютно любого текста кириллицей в cp1251?

 , ,

Toxo2
()