نمیدانم
#file_system #ext2 حالا سوال بعدی که به وجود میاد اینه که اصن این چطوری ممکنه 😂 جوابش اینطوریه : توی خانواده فایل سیستم های ext مثل ext2 و ext3 و ext4 نام فایل ها توی پوشه ها نگهداری میشن (فکر کنم توی اکثر فایل سیستم های ادمیزادی همینطوری باشه). حالا اگه…
#file_system #ext2
حالا بریم کامندشو بگم. شمام بتونید اوتیسم خودتونو به اشتراک بذارید 😂
برای این کار ما میخوایم دسترسی خام داشته باشیم که محتوی یه دایرکتوری رو بنویسیم که لینوکس در حالت عادی به ما اجازشو نمیده برای همین ما یه fs.img درست میکنیم که فایل سیستمشو خودمون دستی مدیریت کنیم. به علت سادگی و اشنایی هم ext2 در نظر میگیرم فایل سیستمشو.
حالا برای اصلاح (اوباش) خودمون کد سی زیرو میزنیم :
حالا بریم کامندشو بگم. شمام بتونید اوتیسم خودتونو به اشتراک بذارید 😂
برای این کار ما میخوایم دسترسی خام داشته باشیم که محتوی یه دایرکتوری رو بنویسیم که لینوکس در حالت عادی به ما اجازشو نمیده برای همین ما یه fs.img درست میکنیم که فایل سیستمشو خودمون دستی مدیریت کنیم. به علت سادگی و اشنایی هم ext2 در نظر میگیرم فایل سیستمشو.
truncate -s 2M fs.img
mkfs.ext2 fs.img
mkdir ./tmpdir
sudo mount -o loop fs.img ./tmpdir/
sudo touch ./tmpdir/a # add your desired number of files
sudo umount ./tmpdir
حالا برای اصلاح (اوباش) خودمون کد سی زیرو میزنیم :
#include <cstdint>
#include <fcntl.h>
#include <linux/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define EXT2_NDIR_BLOCKS 12
#define EXT2_IND_BLOCK EXT2_NDIR_BLOCKS
#define EXT2_DIND_BLOCK (EXT2_IND_BLOCK + 1)
#define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1)
#define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1)
struct ext2_inode {
__le16 i_mode; /* File mode */
__le16 i_uid; /* Low 16 bits of Owner Uid */
__le32 i_size; /* Size in bytes */
__le32 i_atime; /* Access time */
__le32 i_ctime; /* Creation time */
__le32 i_mtime; /* Modification time */
__le32 i_dtime; /* Deletion Time */
__le16 i_gid; /* Low 16 bits of Group Id */
__le16 i_links_count; /* Links count */
__le32 i_blocks; /* Blocks count */
__le32 i_flags; /* File flags */
union {
struct {
__le32 l_i_reserved1;
} linux1;
struct {
__le32 h_i_translator;
} hurd1;
struct {
__le32 m_i_reserved1;
} masix1;
} osd1; /* OS dependent 1 */
__le32 i_block[EXT2_N_BLOCKS]; /* Pointers to blocks */
__le32 i_generation; /* File version (for NFS) */
__le32 i_file_acl; /* File ACL */
__le32 i_dir_acl; /* Directory ACL */
__le32 i_faddr; /* Fragment address */
union {
struct {
__u8 l_i_frag; /* Fragment number */
__u8 l_i_fsize; /* Fragment size */
__u16 i_pad1;
__le16 l_i_uid_high; /* these 2 fields */
__le16 l_i_gid_high; /* were reserved2[0] */
__u32 l_i_reserved2;
} linux2;
struct {
__u8 h_i_frag; /* Fragment number */
__u8 h_i_fsize; /* Fragment size */
__le16 h_i_mode_high;
__le16 h_i_uid_high;
__le16 h_i_gid_high;
__le32 h_i_author;
} hurd2;
struct {
__u8 m_i_frag; /* Fragment number */
__u8 m_i_fsize; /* Fragment size */
__u16 m_pad1;
__u32 m_i_reserved2[2];
} masix2;
} osd2; /* OS dependent 2 */
};
struct ext2_dirent {
__u32 inode;
__u16 rlen;
__u8 nlen;
__u8 ttype;
};
int main(int argc, char *argv[]) {
FILE *fs = fopen("fs.img", "r+");
#define ROOT_INODE_BLK 12
#define BSIZE 1024
#define ROOT_INODE_IDX 2
#define INODE_SIZE 256
#define BPTR(id) ((id) * BSIZE)
#define INODE_PTR(id) (BPTR(ROOT_INODE_BLK) + (id) * INODE_SIZE)
// #define
// printf("x %lu\n", sizeof(struct ext2_inode));
//
struct ext2_inode nd;
fseek(fs, INODE_PTR(1), SEEK_SET);
fread(&nd, sizeof(nd), 1, fs);
__u8 dat[BSIZE];
__u32 blkptr = BPTR(nd.i_block[0]);
fseek(fs, blkptr, SEEK_SET);
fread(dat, sizeof(dat), 1, fs);
// printf("%x\n", nd.i_mode);
__u8 *ptr = dat;
struct ext2_dirent dirent;
int i = 0;
do {
memcpy(&dirent, ptr, sizeof(dirent));
if (i++ > 0) {
dirent.nlen = 1;
memcpy(ptr, &dirent, sizeof(dirent));
memcpy(ptr + sizeof(dirent), "..", 1);
}
printf("%u %u %u %u %.*s\n", dirent.inode, dirent.rlen, dirent.nlen,
dirent.ttype, dirent.nlen, (char *)(ptr + sizeof(dirent)));
ptr += dirent.rlen;
} while (ptr < dat + BSIZE);
fseek(fs, blkptr, SEEK_SET);
fwrite(dat, sizeof(dat), 1, fs);
}
🔥7
نمیدانم
#file_system #ext2 حالا سوال بعدی که به وجود میاد اینه که اصن این چطوری ممکنه 😂 جوابش اینطوریه : توی خانواده فایل سیستم های ext مثل ext2 و ext3 و ext4 نام فایل ها توی پوشه ها نگهداری میشن (فکر کنم توی اکثر فایل سیستم های ادمیزادی همینطوری باشه). حالا اگه…
این کد میاد پوشه / رو میگیره تمام بچه هاشو "." میکنه.
حالا کافیه کامپایل کنیم و اجرا کنیم :
حالا کافیه کامپایل کنیم و اجرا کنیم :
g++ wtf.c && ./a.out
sudo mount -o loop fs.img ./tmpdir/
/bin/ls ./tmpdir
🔥3
#ssd #tech
قابل توجه دوستان عزیزو و فنیم یه چیزایی رو توضیح بدم بهتون جالبه.
حافظه های ssd طبق نرخ تحملشون قیمتگذاری میشن و عملا بعد یه مدتی خورده میشه خونه های حافظشون! (حالا توی درس معماری دکتر اسدی یه سر کوچیکی میزنید به این داستان) . ssd ها بر مبنای تعداد بیت نگهداری شده در هر خونه شون دسته بندی میشن.
SLC : Single Layer Cell
DLC : Double Layer Cell
TLC : Triple Layer Cell
QLC : Quad Level Cell
این ها انواع این نوع حافظه ها هستن که به ترتیب از اولی تا پایینی اینشکلیه که ۱ بیت به ازای هر خونه، دو بیت، سه بیت و چهار بیت داده رو توی هر خونش نگهداری میکنه. با توجه به همین مساله از بالا به پایین ارزونتر و با توجه به مداراتش و نرخ نویز افزوده برای تمایز بیت ها، از پایین به بالا کارایی و سرعت بالا و دوام خونه ها افزایش پیدا میکنه (این افزایش ها گاها نمودار های نمایی داره).
حافظه های عادی که دست من و شماست معمولا اینطوریه که خوباش از نوع TLC و معمولیاش QLC هستن.
قابل توجه دوستان عزیزو و فنیم یه چیزایی رو توضیح بدم بهتون جالبه.
حافظه های ssd طبق نرخ تحملشون قیمتگذاری میشن و عملا بعد یه مدتی خورده میشه خونه های حافظشون! (حالا توی درس معماری دکتر اسدی یه سر کوچیکی میزنید به این داستان) . ssd ها بر مبنای تعداد بیت نگهداری شده در هر خونه شون دسته بندی میشن.
SLC : Single Layer Cell
DLC : Double Layer Cell
TLC : Triple Layer Cell
QLC : Quad Level Cell
این ها انواع این نوع حافظه ها هستن که به ترتیب از اولی تا پایینی اینشکلیه که ۱ بیت به ازای هر خونه، دو بیت، سه بیت و چهار بیت داده رو توی هر خونش نگهداری میکنه. با توجه به همین مساله از بالا به پایین ارزونتر و با توجه به مداراتش و نرخ نویز افزوده برای تمایز بیت ها، از پایین به بالا کارایی و سرعت بالا و دوام خونه ها افزایش پیدا میکنه (این افزایش ها گاها نمودار های نمایی داره).
حافظه های عادی که دست من و شماست معمولا اینطوریه که خوباش از نوع TLC و معمولیاش QLC هستن.
👍5👏1
نمیدانم
#ssd #tech قابل توجه دوستان عزیزو و فنیم یه چیزایی رو توضیح بدم بهتون جالبه. حافظه های ssd طبق نرخ تحملشون قیمتگذاری میشن و عملا بعد یه مدتی خورده میشه خونه های حافظشون! (حالا توی درس معماری دکتر اسدی یه سر کوچیکی میزنید به این داستان) . ssd ها بر مبنای تعداد…
#ssd #tech
حالا برای این که همه این مطالبو جمع کنم. کلا اینطوریه که کارخونه ها برای این که دوام حافظشونو با یه عدد بتونن بیان کنن میان میگن به این حافظه کلا در مجموع چقد میتونی بنویسی و همونطوری که مشاهده میکنید، من در طی ۵ سالی که این لپتاپ رو دارم تقریبا ۳۷ ترابایت بهش نوشتم (احتمالا ۲ ۳ ترابایتش به خاطر OS و چند هسته ای باشه :))) )
و همینطور این خونه ها وقتی خراب میشن، خود حافظه یه سری خونه رو دست نخورده نگهمیداره تا موقعی که یه خونه خراب میشه ازش استفاده بکنه.
اون ۱۰ درصد و ۷ درصد که اون بالا میبینید هم نشون دهنده همین مسالست و خب نکته اینجاست که وقتی این درصده از ۱ و ۲ رد میشه میره بالا کارایی ssd تون هم شروع به افت شدید میکنه!
حالا برای این که همه این مطالبو جمع کنم. کلا اینطوریه که کارخونه ها برای این که دوام حافظشونو با یه عدد بتونن بیان کنن میان میگن به این حافظه کلا در مجموع چقد میتونی بنویسی و همونطوری که مشاهده میکنید، من در طی ۵ سالی که این لپتاپ رو دارم تقریبا ۳۷ ترابایت بهش نوشتم (احتمالا ۲ ۳ ترابایتش به خاطر OS و چند هسته ای باشه :))) )
و همینطور این خونه ها وقتی خراب میشن، خود حافظه یه سری خونه رو دست نخورده نگهمیداره تا موقعی که یه خونه خراب میشه ازش استفاده بکنه.
اون ۱۰ درصد و ۷ درصد که اون بالا میبینید هم نشون دهنده همین مسالست و خب نکته اینجاست که وقتی این درصده از ۱ و ۲ رد میشه میره بالا کارایی ssd تون هم شروع به افت شدید میکنه!
👍1👏1
#arch #archlinux #daily_drive
خب بریم برای نصب آرچ
به نظرم وقت مناسبیه که ستاپ کامل ارچمو توضیح بدم.
اول از همه چی که خب اینترنت میخوایم که یه
بعدش میریم فایل
کافیه کامنت رو از خط های
خب بریم برای نصب آرچ
به نظرم وقت مناسبیه که ستاپ کامل ارچمو توضیح بدم.
اول از همه چی که خب اینترنت میخوایم که یه
iwctl میزنیم و وصل میشیمبعدش میریم فایل
/etc/pacman.conf رو اصلاح میکنیم : کافیه کامنت رو از خط های
Color و ParallelDownloads بردارید و دانلود موازی رو به اندازه دلخواهتون وابسته به تعداد هسته های پردازندتون (که با استفاده از lscpu میتونید کل اطلاعات پردازندتون از جمله همین موضوع رو ببینید) بذارید به عنوان مثال من 8 میذارمش.❤🔥1
#arch #archlinux #daily_drive
حالا وقت
اینجا میایم mirror رو میذاریم ایران.
disk config رو میایم
یه پارتیشن حدودا ۵۰۰ مگی /boot درست میکنیم و بقیشو میدیم به /
Bootloader رو میذاریم grub
Hostname و User account
رو تعیین میکنیم
Profile رو میذاریم روی
Kde
و اگه کارت گرافیک انویدیا دارید همینجا درایورشو مشخص کنید nvidia proprietary
Audio رو میذاریم pipewire
Network رو میذاریم network manager
Additional رو میتونید هرچی که خواستید بذارید ولی توصیه من اینه که firefox و neovim رو داشته باشید
Optional repo رو هم بذادید multilib
Timezone هم که تهران
و در نهایت نصب میکنیم
حالا وقت
archinstall عه که خب نصاب tui ارچه و جدیدا یه بهبود هایی هم داشته نسبت به قدیم رابط کاربریش.اینجا میایم mirror رو میذاریم ایران.
disk config رو میایم
یه پارتیشن حدودا ۵۰۰ مگی /boot درست میکنیم و بقیشو میدیم به /
Bootloader رو میذاریم grub
Hostname و User account
رو تعیین میکنیم
Profile رو میذاریم روی
Kde
و اگه کارت گرافیک انویدیا دارید همینجا درایورشو مشخص کنید nvidia proprietary
Audio رو میذاریم pipewire
Network رو میذاریم network manager
Additional رو میتونید هرچی که خواستید بذارید ولی توصیه من اینه که firefox و neovim رو داشته باشید
Optional repo رو هم بذادید multilib
Timezone هم که تهران
و در نهایت نصب میکنیم
🥰2👎1
نمیدانم
#arch #archlinux #daily_drive خب بریم برای نصب آرچ به نظرم وقت مناسبیه که ستاپ کامل ارچمو توضیح بدم. اول از همه چی که خب اینترنت میخوایم که یه iwctl میزنیم و وصل میشیم بعدش میریم فایل /etc/pacman.conf رو اصلاح میکنیم : کافیه کامنت رو از خط های Color و P…
از پشت صحنه (پارسا پردلی) میگن که پرچم ILoveCandy رو هم فعال کنید :)
❤1
نمیدانم
#arch #archlinux #daily_drive حالا وقت archinstall عه که خب نصاب tui ارچه و جدیدا یه بهبود هایی هم داشته نسبت به قدیم رابط کاربریش. اینجا میایم mirror رو میذاریم ایران. disk config رو میایم یه پارتیشن حدودا ۵۰۰ مگی /boot درست میکنیم و بقیشو میدیم به / Bootloader…
#arch #archlinux #daily_drive
خب برگردیم به ادامه این داستان :)
حالا که ارچ و kde اومدن بالا
شلمون fish https://news.1rj.ru/str/dontknowlinux/5 و starship https://news.1rj.ru/str/dontknowlinux/12
و پارو https://news.1rj.ru/str/dontknowlinux/10 (برای aur)
همچنین ابزار های
البته من از یه سری mirror های غیر رسمی هم تحت عنوان alhp برای بیلد های مطابق نسخه x86 پردازندم استفاده میکنم ولی خب خیلی توصیه بهتون نمیکنم این سمتی بیاید چون بعضی وقتا پکیجا با همدیگه نمیخونن و این داستانا
همچنین فونت های فارسی رو هم با توجه به اینجا اوکی میکنیم https://news.1rj.ru/str/dontknowlinux/11 البته توی تنظیمات kde هم فک کنم باید اصلاح بشه
علاوه بر این داستانا من برای اوکی کردن قابلیت های لپتاپم
برای vscode من از پکیج های
از
همینطور اخیرا با استفاده از
برای مانیتور کردن سیستم هم از
خب برگردیم به ادامه این داستان :)
حالا که ارچ و kde اومدن بالا
شلمون fish https://news.1rj.ru/str/dontknowlinux/5 و starship https://news.1rj.ru/str/dontknowlinux/12
و پارو https://news.1rj.ru/str/dontknowlinux/10 (برای aur)
همچنین ابزار های
less fzf bat zoxide رو میریزیمالبته من از یه سری mirror های غیر رسمی هم تحت عنوان alhp برای بیلد های مطابق نسخه x86 پردازندم استفاده میکنم ولی خب خیلی توصیه بهتون نمیکنم این سمتی بیاید چون بعضی وقتا پکیجا با همدیگه نمیخونن و این داستانا
همچنین فونت های فارسی رو هم با توجه به اینجا اوکی میکنیم https://news.1rj.ru/str/dontknowlinux/11 البته توی تنظیمات kde هم فک کنم باید اصلاح بشه
علاوه بر این داستانا من برای اوکی کردن قابلیت های لپتاپم
rog-control-center رو از paru نصب میکنم که قابلیت هایی مثل کنترل باتری و این چیزای لپتاپم رو هندل کنه. اگه asus ه لپتاپتون که همینو بریزید. اگه نیست احتمالا یا خودش اوکی باشه یا یه بنده خدایی یه ابزار دیگه ای زده براش.برای vscode من از پکیج های
code و code-marketplace و code-features به جای vscode استفاده میکنم. اولی نسخه اوپن سورسه وسکده برای همین ممکنه یه سری قابلیت خاص مرتبط با مایکروسافت رو نداشته باشه که این مشکلات رو دوتا پکیج بعدی حل میکنن.از
imfile به عنوان دانلود منیجرم استفاده میکنم که حقیقتا قوی ترین دانلود منیجر ممکنه و اکثر فرمت هارو پوشش میده و مثل IDM روی ویندوز میاد یه دانلود رو به چندین تیکه میشکونه و هرکدوم رو موازی دانلود میکنه. البته این در واقع کار backendش هست که اون aria2 هست که تحت ترمینال کار میکنه و این imfile یک gui روی اونه.همینطور اخیرا با استفاده از
webapp-manager اومدم از deepseek و این پیامرسانای داخلی وب اپ درست کردم که دسترسیش راحت تر بشه.برای مانیتور کردن سیستم هم از
btop و nvtop(برای gpu) استفاده میکنم.Telegram
نمیدانم
# install fish e.g. sudo apt install fish | sudo pacman -S fish
chsh # then select /bin/fish as your shell
همین! حالا شما تقریبا هرچی میخواستید رو دارید.
یه سری ابزار دیگه که من رو هر شلی سوار میکنم رو اوردم توش
برای تنظیم کردن fish باید برید فایل
~/.con…
chsh # then select /bin/fish as your shell
همین! حالا شما تقریبا هرچی میخواستید رو دارید.
یه سری ابزار دیگه که من رو هر شلی سوار میکنم رو اوردم توش
برای تنظیم کردن fish باید برید فایل
~/.con…
❤🔥1
نمیدانم
#arch #archlinux #daily_drive خب برگردیم به ادامه این داستان :) حالا که ارچ و kde اومدن بالا شلمون fish https://news.1rj.ru/str/dontknowlinux/5 و starship https://news.1rj.ru/str/dontknowlinux/12 و پارو https://news.1rj.ru/str/dontknowlinux/10 (برای aur) همچنین ابزار های less fzf bat zoxide…
#arch #archlinux #daily_drive #hyprland
در نهایت ui اصلی که درش زندگی میکنم رو بهتون معرفی میکنم.
اسمش hyprland عه و خب نکته اینجاست که هایپرلند در حالت عادی صرفا بهتون یه اصطلاحا tiling window manager میده و صرفا پنجره هاتون رو مدیریت میکنه. برای همین ما فقط به همین بسنده نمیکنیم و یه "اجرا کننده برنامه" و "نوار بالایی" هم میریزیم.
https://hyprland.org/
نوار بالایی مون اسمش هست
البته یه نکته هم که هست اینه که خود هایپر لند کلی ماژول های مختلف داره برای همین برای ریختنش صرفا به
رو میریزیم.
(البته من خودم نسخه گیتشونو ریختم)
در نهایت ui اصلی که درش زندگی میکنم رو بهتون معرفی میکنم.
اسمش hyprland عه و خب نکته اینجاست که هایپرلند در حالت عادی صرفا بهتون یه اصطلاحا tiling window manager میده و صرفا پنجره هاتون رو مدیریت میکنه. برای همین ما فقط به همین بسنده نمیکنیم و یه "اجرا کننده برنامه" و "نوار بالایی" هم میریزیم.
https://hyprland.org/
نوار بالایی مون اسمش هست
waybar و اجرا کننده برنامه مون اسمش هست wofi.البته یه نکته هم که هست اینه که خود هایپر لند کلی ماژول های مختلف داره برای همین برای ریختنش صرفا به
paru -S hyprland بسنده نمیکنیم و ابزار های hypridle : فرایند هایی مانند قفل کردن خودکار رو هندل میکنهhyprpaper : تصویر پس زمینهhyprlock : صفحه قفلgrimblast و hyprpicker : گرفت عکس از صفحهرو میریزیم.
(البته من خودم نسخه گیتشونو ریختم)
hypr.land
Hyprland: Dynamic tiling window compositor with the looks
Hyprland - Dynamic tiling Wayland compositor with the looks.
👎1
نمیدانم
#arch #archlinux #daily_drive #hyprland در نهایت ui اصلی که درش زندگی میکنم رو بهتون معرفی میکنم. اسمش hyprland عه و خب نکته اینجاست که هایپرلند در حالت عادی صرفا بهتون یه اصطلاحا tiling window manager میده و صرفا پنجره هاتون رو مدیریت میکنه. برای همین ما…
اینم فایل های تنظیمات خودمن که کافیه توی
~/.config
استخراجشون کنید
~/.config
استخراجشون کنید
🔥2
نمیدانم
hypr.zip
#arch #archlinux #daily_drive #hyprland
تنها نکته ای که میمونه اینه که برای این که بدون مشکل از این تنظیمات بتونید استفاده بکنید باید به موارد زیر توجه کنید :
1. تصویر پس زمینه توسط یه اسکریپت تحت عنوان bingwallpaper.sh تنظیم میشه که این بنده خدا دنبال یه عکس تصادفی توی پوشه
2. تصویر پس زمینه صفحه قفل توی فایل hyprlock.conf تعیین شده
3. به طور کلی فایل اصلی تنظیمات هایپرلند توی hyprland.conf تعیین شده و از اونجا بقیه کدا سورس شدن. هر کدومشونم با توجه به اسمشون یه کارکرد خاص داره و مثلا میتونید برید توی bindings.conf و کلید های میانبر سیستم رو ببینید. البته یه چیزی هم میگم میتونید الگو یابی کنید چطوریه! :) میانبر تصویر صفحه گرفتن Super+S S هست و بعدش صفحه یکم تار میشه و اون قسمتی که میخواید رو مشخص میکنید و اون تیکه توی clipboard تون قرار میگیره. حالا میتونید با یه پیست ساده ازش استفاده بکنید یا اینکه مثل من با استفاده از پکیج
4. تاپ بارتون برای اینکه از تمام قابلیت هایی که تنظیم کردم بتونه استفاده بکنه به پکیج های
تنها نکته ای که میمونه اینه که برای این که بدون مشکل از این تنظیمات بتونید استفاده بکنید باید به موارد زیر توجه کنید :
1. تصویر پس زمینه توسط یه اسکریپت تحت عنوان bingwallpaper.sh تنظیم میشه که این بنده خدا دنبال یه عکس تصادفی توی پوشه
~/Pictures/BingWallpaper/ میگرده و اونو به عنوان پس زمینتون میذاره. میتونید برید اونجا بذارید یا این اسکریپته رو بخونید ببینید چطوری کار میکنه2. تصویر پس زمینه صفحه قفل توی فایل hyprlock.conf تعیین شده
3. به طور کلی فایل اصلی تنظیمات هایپرلند توی hyprland.conf تعیین شده و از اونجا بقیه کدا سورس شدن. هر کدومشونم با توجه به اسمشون یه کارکرد خاص داره و مثلا میتونید برید توی bindings.conf و کلید های میانبر سیستم رو ببینید. البته یه چیزی هم میگم میتونید الگو یابی کنید چطوریه! :) میانبر تصویر صفحه گرفتن Super+S S هست و بعدش صفحه یکم تار میشه و اون قسمتی که میخواید رو مشخص میکنید و اون تیکه توی clipboard تون قرار میگیره. حالا میتونید با یه پیست ساده ازش استفاده بکنید یا اینکه مثل من با استفاده از پکیج
wl-clipboard و استفاده از دستور wl-paste > test.format عکسه رو ذخیره کنید.4. تاپ بارتون برای اینکه از تمام قابلیت هایی که تنظیم کردم بتونه استفاده بکنه به پکیج های
pcal-calendar-git و pavucontrol و brightnessctl وswaync نیاز داره. اولی که تقویم فارسیه، دومی پنجره تنظیم صداست، سومی ابزار تنظیم روشناییه (میتونید روی ایکون ها اسکرول کنید ببینید چه اتفاقایی میوفته)، اخری هم notification هارو پشتیبانی میکنه.❤🔥3
Forwarded from Programming Deadlock
TypeScript types can run DOOM
https://youtu.be/0mCsluv5FXA?si=zf54kXxxGbkaIE9w
https://youtu.be/0mCsluv5FXA?si=zf54kXxxGbkaIE9w
YouTube
TypeScript types can run DOOM
Yep. We got the Doom engine running purely in TypeScript types. Like. For real. We’ve prepared two more videos, one answering “why we did this” (storytime format) and another answering “how we did this” (technical deep-dive). What would you like to hear…
🔥1🤯1💩1
Programming Deadlock
TypeScript types can run DOOM https://youtu.be/0mCsluv5FXA?si=zf54kXxxGbkaIE9w
عجیب ترین چیزی که در مدت خیلی زیادی دیدم این بود
💩1👌1