diff --git a/Qtile - make groups span across screens.html b/Qtile - make groups span across screens.html new file mode 100644 index 0000000..797df29 --- /dev/null +++ b/Qtile - make groups span across screens.html @@ -0,0 +1,12 @@ + + + + + Qtile---make-workspaces-span-across-screens + + + + + + + \ No newline at end of file diff --git a/Qtile - make workspaces stick across screens.html b/Qtile - make workspaces stick across screens.html new file mode 100644 index 0000000..797df29 --- /dev/null +++ b/Qtile - make workspaces stick across screens.html @@ -0,0 +1,12 @@ + + + + + Qtile---make-workspaces-span-across-screens + + + + + + + \ No newline at end of file diff --git a/Qtile---make-workspaces-span-across-screens.html b/Qtile---make-workspaces-span-across-screens.html new file mode 100644 index 0000000..1d119c8 --- /dev/null +++ b/Qtile---make-workspaces-span-across-screens.html @@ -0,0 +1,91 @@ + +Qtile - make workspaces span across screens

linking groups - thinking

+
    +
  1. have different groups on different screens
  2. +
  3. assign i to screen 1 and i+10 to screen 2
  4. +
+
    +
  • use mod + , to toggle between screens, when one screen disconnects
  • +
+
    +
  1. will have to check if screen 2 exists or not
  2. +
+

code

+
 
+@lazy.function
+def move_window_to_alternate_group(qtile):
+ 
+    group = int(qtile.current_group.name) 
+    if group < 10:
+        qtile.current_window.togroup(str(group + 10))
+    else:
+        qtile.current_window.togroup(str(group - 10))
+ 
+keys.extend([Key([mod], "comma", focus_group, desc="Next monitor"),])
+ 
+ 
+@lazy.function
+def focus_group(qtile):
+    group = int(qtile.current_group.name) 
+ 
+    if len(qtile.screens) > 1:
+        qtile.next_screen()
+    else:
+        group = int(qtile.current_group.name) 
+        if group < 10:
+            qtile.current_screen.toggle_group(str(group + 10))
+        else:
+            qtile.current_screen.toggle_group(str(group - 10))
+ 
+ 
+    # maybe works api
+    # qtile.current_group.switch_groups('9')
+    # ^ works but group object needs to be passed
+    # qtile.groups_map['1'].to_screen()
+    # qtile.current_screen.set_group('11')
+ 
+ 
+keys.extend([Key([mod , "shift"], "comma", move_window_to_alternate_group, desc="Next monitor"),])
+ 
+ 
+ 
+groups = []
+for i in range(0,20):
+    groups.append(Group(str(i)))
+ 
+ 
+for i in range(0,10):
+    keys.extend(
+        [
+            # navigation 
+            # lazy.group[group.name].toscreen(toggle=True),
+            Key([mod], str(i), lazy.group[str(i)].toscreen(0), lazy.group['1' + str(i)].toscreen(1)),
+            # move window to group
+            # Key([mod, "shift"], group.name, lazy.window.togroup(group.name),
+            Key([mod, "shift"], str(i), lazy.window.togroup( '1' + str(i))),
+        ]
+    )
+ 
+

references

+

Feature request: allow windows from the same group to be present on multiple screens (i.e.allow groups to span screens) · qtile/qtile · Discussion #3035 · GitHub +I don’t imagine we will implement this internally as we prefer to keep things flexible and configurable enough for users to define their own specific behaviour. This use case is a good example of this as it’s already possible (with a bit of work!).

+

My first thought of how to implement it was slightly different than using the hooks - instead you could define your keybindings to directly modify pairs of groups so that they always are kept together. E.g. mod+1 could move group A and B to the screens, mod+2 would move groups C and D to the screens. Similarly mod+shift+1 could move the current window to group A or B depending on whether it was on an odd numbered group (i.e. C, E) or even (i.e. D, F). From the keybindings point of view you are considering pairs of groups as a single workspace. If you use GroupBox you could make it only display groups A, C, E etc so that it gives you a consistent experience.

\ No newline at end of file diff --git a/index.xml b/index.xml index b3a4ea4..57f0679 100644 --- a/index.xml +++ b/index.xml @@ -6,6 +6,12 @@ Last 10 notes on 🚪 Quartz -- quartz.jzhao.xyz + Qtile - make workspaces span across screens + https://sohanglal.github.io/Qtile---make-workspaces-span-across-screens + https://sohanglal.github.io/Qtile---make-workspaces-span-across-screens + linking groups - thinking have different groups on different screens assign i to screen 1 and i+10 to screen 2 use mod + , to toggle between screens, when one screen disconnects will have to check if screen 2 exists or not code @lazy. + Mon, 18 Mar 2024 17:06:05 GMT + about https://sohanglal.github.io/about https://sohanglal.github.io/about diff --git a/sitemap.xml b/sitemap.xml index 7669a67..4a05c3b 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1,6 +1,9 @@ https://sohanglal.github.io/NixOS-on-Lenovo-Legion-5-(2021) 2024-02-19T13:23:17.668Z + + https://sohanglal.github.io/Qtile---make-workspaces-span-across-screens + 2024-03-18T17:06:05.627Z https://sohanglal.github.io/about 2024-03-14T17:30:34.911Z diff --git a/static/contentIndex.json b/static/contentIndex.json index 40a2dd1..fa7e924 100644 --- a/static/contentIndex.json +++ b/static/contentIndex.json @@ -1 +1 @@ -{"NixOS-on-Lenovo-Legion-5-(2021)":{"title":"NixOS on Lenovo Legion 5 (2021)","links":[],"tags":[],"content":"discrete graphics on in BIOS - NVIDIA\nadd the following to /etc/nixos/configuration.nix:\n # Enable OpenGL\n hardware.opengl = {\n enable = true;\n driSupport = true;\n driSupport32Bit = true;\n };\n \n services.xserver.videoDrivers = ["nvidia"];\n hardware.nvidia = {\n nvidiaSettings = true;\n forceFullCompositionPipeline = true;\n package = config.boot.kernelPackages.nvidiaPackages.production;\n };\n \nservices.xserver.dpi = 96;\n \nswitchable graphics on in BIOS - iGPU\n# https://discourse.nixos.org/t/eliminate-screen-tearing-with-intel-mesa/14724\nservices.xserver.videoDrivers = [ "intel" ];\n services.xserver.deviceSection = ''\n Option "DRI" "2"\n Option "TearFree" "true"\n '';\nEverything else worked fine out of the box - Microphone, Webcam, Bluetooth, Sound, external ports"},"about":{"title":"about","links":[],"tags":[],"content":"Software consultant\n\nGNU/Linux\nNixOS\nnix\npython\nneovim\nqtile\nrust\ngit\nollama\ntermux\n\nContact | GitHub"},"index":{"title":"‎","links":["kde-partition-manager-fiasco","NixOS-on-Lenovo-Legion-5-(2021)","resizing-boot-partition","setup-github-ssh"],"tags":[],"content":"\nkde partition manager fiasco‎\nNixOS on Lenovo Legion 5 (2021)\nresizing boot partition\nsetup github ssh\n"},"kde-partition-manager-fiasco":{"title":"kde partition manager fiasco","links":["Kubuntu","NixOS"],"tags":[],"content":"\nwanted to shrink Kubuntu to make space for NixOS\nMaybe the drive was mounted\nbut still alot of the same issues were observed when searching online regarding kde partition manager\nultimate search term\n\nkde partition manager shrink size in superblock and physical size differ\n\n\nfilesystems - “Either the superblock or the partition table is likely to be corrupt!” after partition resized - Unix & Linux Stack Exchange\n\nAccording to this answer ran e2fsck, a destructive operation just because I was afraid of the command line and didn’t want to use parted\nlong process\nresize2fs would’ve deleted rest of the partitions\nslept\nseeked a better solution\nfilesystems - “Either the superblock or the partition table is likely to be corrupt!” after partition resized - Unix & Linux Stack Exchange\n\nfound this using growpart to fill the unallocated space, atleast won’t have to delete nixos and windows reserved partitions\n\n\npartition - How to recover filesystem and physical size mismatch - Unix & Linux Stack Exchange\n\nthen came across this solution to use parted\nbasically partition table via parted got updated but resize2fs failed to resize the filesystem\nsimple solution is to update the partition table to the original standard\nused sudo fdisk -l to read start and end sectors\nentered parted /dev/nvme0n1\nresizepart 4 859174911s\n\ngave sector number for perfect granuality\nParted - ArchWiki\n\n\n\n\n\n\nhad to e2fsck again\n\nthis reversed all the destructive changes that I made the day before\n\n\nKubuntu still wouldn’t boot\nfor some reason the files in /boot vanished\nbackup was there on desktop\ncopied those files from Desktop to /boot started working again\neven though the boot partition is mounted on /boot/efi, kubuntu had installed the files in /boot which is p4 and /boot/efi is on p1\nTo boot into kubuntu using the backup files, used this guide: Classic SysAdmin: How to Rescue a Non-booting GRUB 2 on Linux - Linux Foundation\n\ngrub> set root=(hd0,1)\ngrub> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1\ngrub> initrd /boot/initrd.img-3.13.0-29-generic\ngrub> boot\n\ncouldn’t run sudo update-grub\ndid sudo mkidr <whatever had to be made>\nran after that\non success, it will show that the vmlinuz and initrd images were found\nsudo grub install /dev/nvme0n1\nRan diff -r against backups to make sure there weren’t any destructive changes\nCompleted 2024-01-11\n"},"resizing-boot-partition":{"title":"resizing boot partition","links":["FAT32","GParted"],"tags":[],"content":"resizing manually due to FAT32 limitations and GParted lacks support for the same\nTIL: to backup a boot partition you just need to cp the files from the mounted boot partition to another folder. There is nothing special to backing up. You don’t even have to use dd.\nextra reading\nBug 649324 – failure to move / resize fat32 partitions less than 256 MB in size\nWorkaround: Resizing FAT16/FAT32 Partitions (less than 256 MB)\n\nBackup the data in the FAT16/FAT32 partition\nReformat the partition to EXT4\nResize EXT4 partition to desired partition size\nReformat the partition back to FAT16/FAT32\nRestore the FAT16/FAT32 files from backup\n\nNote that if you use file system labels you may wish to re-label the partition at this time.\nGparted gives problems with Fat32 - Unix & Linux Stack Exchange\nFailure to move / resize fat32 partitions less than 256 MB in size / Newbie Corner / Arch Linux Forums\nlinux - Can’t resize /boot partition (fat32 / EFI system partition) - Unix & Linux Stack Exchange\nSince this is the /boot partition containing your kernel, you’ll need to make its new position known to the bootloader (usually GRUB) afterwards.\nThe exact commands depend on the distribution you’re using, but you’ll usually boot a live CD/USB of your distro, mount your partitions in a chroot environment, and run grub-install /dev/<your main disk>.\nWith prior experience or a good tutorial, that’s done in five to ten minutes. ;)"},"rev/Calisthenics-+-HIIT":{"title":"Calisthenics + HIIT","links":[],"tags":[],"content":"strength training\nThe Recommended Routine\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nRepsExerciseComments30sDeadbugs5-10Squat Sky ReachesYou can do these assisted.10+GMB Wrist PrepDo as many reps as you want5-10Yuri’s Shoulder Band WarmupLess good: Stick dislocates, can also be done with a tee-shirt10Arch HangsAdd these after you reach Negative Pullups. Beginner attempts will look more like this30sSupport HoldAdd these after you reach Negative Dips.10Easier Squat progressionAdd these after you reach Bulgarian Split Squats.10Easier Hinge progressionAdd these after you reach Banded Nordic Curls.\nFirst pair: Pull-Ups & Squats\nPull-Ups, rest 90sec, Negative Pistol Squats, rest 90sec\nPull-Ups, rest 90sec, Squats, rest 90sec\nPull-Ups, rest 90sec, Squats, rest 90sec\n\nSecond pair Dips & Hinge\nDips, rest 90sec, Hinge, rest 90sec\nDips, rest 90sec, Hinge, rest 90sec\nDips, rest 90sec, Hinge, rest 90sec\n\nThird pair: Rows & Push-ups\nRows, rest 90sec, Push-ups, rest 90sec\nRows, rest 90sec, Push-ups, rest 90sec\nRows, rest 90sec, Push-ups, rest 90sec\n\nCore Triplet\nanti-extension, rest 60sec, anti-rotation, rest 60sec, extension, rest 60sec\nanti-extension, rest 60sec, anti-rotation, rest 60sec, extension, rest 60sec\nanti-extension, rest 60sec, anti-rotation, rest 60sec, extension, 5ever/until next workout day\n\nhiit\nbeginners_guide - hiit\n11 sets\n30 sec work\n30 sec rest\n\nwarm up - Jump ropes\nJump Ropes\nPull-Ups\nHigh Knees\nab workout\nScissor Lunges\nBurpees\nSquat Jumps\nDips\nTortoise hold\ncool down - Jump ropes\n"},"setup-github-ssh":{"title":"setup github ssh","links":["BugsWriter"],"tags":[],"content":"\ngenerate key\n\nssh-keygen -t ed25519 -C "your@email.com"\ncat ~/.ssh/id_ed25519.pub\ncat ~/.ssh/id_ed25519.pub | xclip -sel c\n\n\ncopy key to github - https://github.com/settings/keys\n\n\nadd authentication keys and signing keys\n\n\nTesting your SSH connection\n\n\nssh -T git@github.com\n\nsigning your commits\n\ngit config --global gpg.format ssh\ngit config --global user.signingkey /PATH/TO/.SSH/KEY.PUB\nmake sure email id in ~/.gitconfig matches with your github account\ngit add index.html; git commit -S -m 'signed commit with correct email'\nextra reading\n\nPush to GitHub with Personal Access Token (PAT) - jdhao’s digital space\nGithub dominance in “Soy Tech Industry” vs Linux user - YouTube ~ BugsWriter\n"}} \ No newline at end of file +{"NixOS-on-Lenovo-Legion-5-(2021)":{"title":"NixOS on Lenovo Legion 5 (2021)","links":[],"tags":[],"content":"discrete graphics on in BIOS - NVIDIA\nadd the following to /etc/nixos/configuration.nix:\n # Enable OpenGL\n hardware.opengl = {\n enable = true;\n driSupport = true;\n driSupport32Bit = true;\n };\n \n services.xserver.videoDrivers = ["nvidia"];\n hardware.nvidia = {\n nvidiaSettings = true;\n forceFullCompositionPipeline = true;\n package = config.boot.kernelPackages.nvidiaPackages.production;\n };\n \nservices.xserver.dpi = 96;\n \nswitchable graphics on in BIOS - iGPU\n# https://discourse.nixos.org/t/eliminate-screen-tearing-with-intel-mesa/14724\nservices.xserver.videoDrivers = [ "intel" ];\n services.xserver.deviceSection = ''\n Option "DRI" "2"\n Option "TearFree" "true"\n '';\nEverything else worked fine out of the box - Microphone, Webcam, Bluetooth, Sound, external ports"},"Qtile---make-workspaces-span-across-screens":{"title":"Qtile - make workspaces span across screens","links":[],"tags":[],"content":"linking groups - thinking\n\nhave different groups on different screens\nassign i to screen 1 and i+10 to screen 2\n\n\nuse mod + , to toggle between screens, when one screen disconnects\n\n\nwill have to check if screen 2 exists or not\n\ncode\n \n@lazy.function\ndef move_window_to_alternate_group(qtile):\n \n group = int(qtile.current_group.name) \n if group < 10:\n qtile.current_window.togroup(str(group + 10))\n else:\n qtile.current_window.togroup(str(group - 10))\n \nkeys.extend([Key([mod], "comma", focus_group, desc="Next monitor"),])\n \n \n@lazy.function\ndef focus_group(qtile):\n group = int(qtile.current_group.name) \n \n if len(qtile.screens) > 1:\n qtile.next_screen()\n else:\n group = int(qtile.current_group.name) \n if group < 10:\n qtile.current_screen.toggle_group(str(group + 10))\n else:\n qtile.current_screen.toggle_group(str(group - 10))\n \n \n # maybe works api\n # qtile.current_group.switch_groups('9')\n # ^ works but group object needs to be passed\n # qtile.groups_map['1'].to_screen()\n # qtile.current_screen.set_group('11')\n \n \nkeys.extend([Key([mod , "shift"], "comma", move_window_to_alternate_group, desc="Next monitor"),])\n \n \n \ngroups = []\nfor i in range(0,20):\n groups.append(Group(str(i)))\n \n \nfor i in range(0,10):\n keys.extend(\n [\n # navigation \n # lazy.group[group.name].toscreen(toggle=True),\n Key([mod], str(i), lazy.group[str(i)].toscreen(0), lazy.group['1' + str(i)].toscreen(1)),\n # move window to group\n # Key([mod, "shift"], group.name, lazy.window.togroup(group.name),\n Key([mod, "shift"], str(i), lazy.window.togroup( '1' + str(i))),\n ]\n )\n \nreferences\nFeature request: allow windows from the same group to be present on multiple screens (i.e.allow groups to span screens) · qtile/qtile · Discussion #3035 · GitHub\nI don’t imagine we will implement this internally as we prefer to keep things flexible and configurable enough for users to define their own specific behaviour. This use case is a good example of this as it’s already possible (with a bit of work!).\nMy first thought of how to implement it was slightly different than using the hooks - instead you could define your keybindings to directly modify pairs of groups so that they always are kept together. E.g. mod+1 could move group A and B to the screens, mod+2 would move groups C and D to the screens. Similarly mod+shift+1 could move the current window to group A or B depending on whether it was on an odd numbered group (i.e. C, E) or even (i.e. D, F). From the keybindings point of view you are considering pairs of groups as a single workspace. If you use GroupBox you could make it only display groups A, C, E etc so that it gives you a consistent experience."},"about":{"title":"about","links":[],"tags":[],"content":"Software consultant\n\nGNU/Linux\nNixOS\nnix\npython\nneovim\nqtile\nrust\ngit\nollama\ntermux\n\nContact | GitHub"},"index":{"title":"‎","links":["kde-partition-manager-fiasco","NixOS-on-Lenovo-Legion-5-(2021)","resizing-boot-partition","setup-github-ssh"],"tags":[],"content":"\nkde partition manager fiasco‎\nNixOS on Lenovo Legion 5 (2021)\nresizing boot partition\nsetup github ssh\n"},"kde-partition-manager-fiasco":{"title":"kde partition manager fiasco","links":["Kubuntu","NixOS"],"tags":[],"content":"\nwanted to shrink Kubuntu to make space for NixOS\nMaybe the drive was mounted\nbut still alot of the same issues were observed when searching online regarding kde partition manager\nultimate search term\n\nkde partition manager shrink size in superblock and physical size differ\n\n\nfilesystems - “Either the superblock or the partition table is likely to be corrupt!” after partition resized - Unix & Linux Stack Exchange\n\nAccording to this answer ran e2fsck, a destructive operation just because I was afraid of the command line and didn’t want to use parted\nlong process\nresize2fs would’ve deleted rest of the partitions\nslept\nseeked a better solution\nfilesystems - “Either the superblock or the partition table is likely to be corrupt!” after partition resized - Unix & Linux Stack Exchange\n\nfound this using growpart to fill the unallocated space, atleast won’t have to delete nixos and windows reserved partitions\n\n\npartition - How to recover filesystem and physical size mismatch - Unix & Linux Stack Exchange\n\nthen came across this solution to use parted\nbasically partition table via parted got updated but resize2fs failed to resize the filesystem\nsimple solution is to update the partition table to the original standard\nused sudo fdisk -l to read start and end sectors\nentered parted /dev/nvme0n1\nresizepart 4 859174911s\n\ngave sector number for perfect granuality\nParted - ArchWiki\n\n\n\n\n\n\nhad to e2fsck again\n\nthis reversed all the destructive changes that I made the day before\n\n\nKubuntu still wouldn’t boot\nfor some reason the files in /boot vanished\nbackup was there on desktop\ncopied those files from Desktop to /boot started working again\neven though the boot partition is mounted on /boot/efi, kubuntu had installed the files in /boot which is p4 and /boot/efi is on p1\nTo boot into kubuntu using the backup files, used this guide: Classic SysAdmin: How to Rescue a Non-booting GRUB 2 on Linux - Linux Foundation\n\ngrub> set root=(hd0,1)\ngrub> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1\ngrub> initrd /boot/initrd.img-3.13.0-29-generic\ngrub> boot\n\ncouldn’t run sudo update-grub\ndid sudo mkidr <whatever had to be made>\nran after that\non success, it will show that the vmlinuz and initrd images were found\nsudo grub install /dev/nvme0n1\nRan diff -r against backups to make sure there weren’t any destructive changes\nCompleted 2024-01-11\n"},"resizing-boot-partition":{"title":"resizing boot partition","links":["FAT32","GParted"],"tags":[],"content":"resizing manually due to FAT32 limitations and GParted lacks support for the same\nTIL: to backup a boot partition you just need to cp the files from the mounted boot partition to another folder. There is nothing special to backing up. You don’t even have to use dd.\nextra reading\nBug 649324 – failure to move / resize fat32 partitions less than 256 MB in size\nWorkaround: Resizing FAT16/FAT32 Partitions (less than 256 MB)\n\nBackup the data in the FAT16/FAT32 partition\nReformat the partition to EXT4\nResize EXT4 partition to desired partition size\nReformat the partition back to FAT16/FAT32\nRestore the FAT16/FAT32 files from backup\n\nNote that if you use file system labels you may wish to re-label the partition at this time.\nGparted gives problems with Fat32 - Unix & Linux Stack Exchange\nFailure to move / resize fat32 partitions less than 256 MB in size / Newbie Corner / Arch Linux Forums\nlinux - Can’t resize /boot partition (fat32 / EFI system partition) - Unix & Linux Stack Exchange\nSince this is the /boot partition containing your kernel, you’ll need to make its new position known to the bootloader (usually GRUB) afterwards.\nThe exact commands depend on the distribution you’re using, but you’ll usually boot a live CD/USB of your distro, mount your partitions in a chroot environment, and run grub-install /dev/<your main disk>.\nWith prior experience or a good tutorial, that’s done in five to ten minutes. ;)"},"rev/Calisthenics-+-HIIT":{"title":"Calisthenics + HIIT","links":[],"tags":[],"content":"strength training\nThe Recommended Routine\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nRepsExerciseComments30sDeadbugs5-10Squat Sky ReachesYou can do these assisted.10+GMB Wrist PrepDo as many reps as you want5-10Yuri’s Shoulder Band WarmupLess good: Stick dislocates, can also be done with a tee-shirt10Arch HangsAdd these after you reach Negative Pullups. Beginner attempts will look more like this30sSupport HoldAdd these after you reach Negative Dips.10Easier Squat progressionAdd these after you reach Bulgarian Split Squats.10Easier Hinge progressionAdd these after you reach Banded Nordic Curls.\nFirst pair: Pull-Ups & Squats\nPull-Ups, rest 90sec, Negative Pistol Squats, rest 90sec\nPull-Ups, rest 90sec, Squats, rest 90sec\nPull-Ups, rest 90sec, Squats, rest 90sec\n\nSecond pair Dips & Hinge\nDips, rest 90sec, Hinge, rest 90sec\nDips, rest 90sec, Hinge, rest 90sec\nDips, rest 90sec, Hinge, rest 90sec\n\nThird pair: Rows & Push-ups\nRows, rest 90sec, Push-ups, rest 90sec\nRows, rest 90sec, Push-ups, rest 90sec\nRows, rest 90sec, Push-ups, rest 90sec\n\nCore Triplet\nanti-extension, rest 60sec, anti-rotation, rest 60sec, extension, rest 60sec\nanti-extension, rest 60sec, anti-rotation, rest 60sec, extension, rest 60sec\nanti-extension, rest 60sec, anti-rotation, rest 60sec, extension, 5ever/until next workout day\n\nhiit\nbeginners_guide - hiit\n11 sets\n30 sec work\n30 sec rest\n\nwarm up - Jump ropes\nJump Ropes\nPull-Ups\nHigh Knees\nab workout\nScissor Lunges\nBurpees\nSquat Jumps\nDips\nTortoise hold\ncool down - Jump ropes\n"},"setup-github-ssh":{"title":"setup github ssh","links":["BugsWriter"],"tags":[],"content":"\ngenerate key\n\nssh-keygen -t ed25519 -C "your@email.com"\ncat ~/.ssh/id_ed25519.pub\ncat ~/.ssh/id_ed25519.pub | xclip -sel c\n\n\ncopy key to github - https://github.com/settings/keys\n\n\nadd authentication keys and signing keys\n\n\nTesting your SSH connection\n\n\nssh -T git@github.com\n\nsigning your commits\n\ngit config --global gpg.format ssh\ngit config --global user.signingkey /PATH/TO/.SSH/KEY.PUB\nmake sure email id in ~/.gitconfig matches with your github account\ngit add index.html; git commit -S -m 'signed commit with correct email'\nextra reading\n\nPush to GitHub with Personal Access Token (PAT) - jdhao’s digital space\nGithub dominance in “Soy Tech Industry” vs Linux user - YouTube ~ BugsWriter\n"}} \ No newline at end of file