The Linux Thread - The Autist's OS of Choice

  • Want to keep track of this thread?
    Accounts can bookmark posts, watch threads for updates, and jump back to where you stopped reading.
    Create account
I got it working without a kernel source.

I will make a long blogpost detailing HOW I figured out how to get the vmlinux working but it involved tweaking and using big brain moves/ideas in order to get it semi working. I think the UART isn't printing everything that it should. But to get it to even start PRINTING was a pain. But honestly it kinda was a out of the box working thing besides some tweaks. Its kinda insane HOW good qemu is.
View attachment 8299282
Well lets start with HOW I did it.

So first things first its able to execute a few thousand instructions before seemingly crashing
1766064617352.png
Well shit thats not good. But hold up think... Think.... Why am I doing this? Well im doing this because the vmlinux IM USING messes up when running the phillips binary because of timings that likely are specifically defined in the main kernel... So that is why instead of using a random vmlinux image I try to run the one that TV uses.

Timings.... Timings WAIT A MINUTE TIMINGS. What if its expected to run at a timing or slight delay, what if the vmlinux is designed around the hardware doing that? Ok so I asked grok for any command lines that might be of use and I was told to do
1766065409151.png
OH THAT DID IT ITS MOVING MORE, its moving very slowly after the instructions but its moving now.

Alright now lets think. What stage is it likely at? Well we don't know. I dont think many people have studied the assembly output of mipsel vmlinux images... It could very well be at the very first stage for all we know.

What I want to know is if things ARE being printed to the screen if things are being printed to the screen than we will know that its made it past its bootup phase. Problem is that no matter what append options or anything we get nothing printed to the screen. All we have is the assembly output that can be enabled via -d in_asm
Well I have a theory. If we were to get ALL the assembly instructions that got executed by qemu it would be over 410kbs. Which is HUGE. It makes me think that we are WELL past the part of the FIRST console log. I really do believe that it IS printing stuff its just that QEMU does not know where to place it. If it IS past the point to where it would be printing things to the screen then the fact im not seeing anything is likely because the UART memory address for the default malta board do not align with this different board the vmlinux was made for.

So how do we comfirm it? ... RAM. THATS IT. If it got printed I bet that somewhere it would be stored in memory. We JUST HAVE TO GET QEMU TO DUMP THE MEMORY OF THE THING.

Using Qemus terminal we can take a dump of the ram. If anything was being printed to the console it would also show up here. Now we can see if it has gotten far enough to be printing stuff to the console.

Alright so Ive taken a HEXDUMP of the ram and lets see where we can find where its printing to because remember this kernel uses a UART not a normal TTY.
(after a bit of scrolling)
1766188319043.png
BINGO its at 0x02d7828 we can write a basic UART system in QEMU that basically just reads those memory address and prints them to the console to get things well printed to the console. Malta which is the default board that QEMU uses for mips has different registers and different memory addresses for its text output/uart that dont play well so we can just manually do it.


Well there is a small problem..... Do you remember last time when I said im not on my main modern ryzen processor but on a old shitty laptop running windows from my childhood because my MAIN computer needs to be repaired..... Yeah im still at that stage and compiling QEMU with....
1766184244911.png
a pre ryzen amd LAPTOP cpu(if you do not know most cpus made before ryzen and after 2010 are considered some of the WORST cpus ever made)
AND ON TOP OF THAT I HAVE TO RUN IT THROUGH WINDOWS LINUX SUBSYSTEM BECAUSE I CANT FORMAT THIS DRIVE WILL ALSO TAKE A PERFORMANCE PENALTY AS WELL. and even worse QEMU uses python now in its build process.. Python takes FOREVER to initialize and will take EVEN LONGER ON THIS CPU... the things I do in the name of extreme autism.

"Hey guys, I guess thats /dev/null"
after a very and i mean VERY long test compile I finally got everything ready and we can start.
I first edit the malta board and because there is a text limit here Ill give you the MAIN important function that does this shit(you dont have to understand it. All it does is read from kernel memory WHERE the tty output is in ram and then just prints it to the screen its ok if you don't get how this works completely its mainly because of other functions that go on to long for me to show. I used grok to clean this up so it will be.... acutally readable to anyone besides myself)
C:
static const MemoryRegionOps pnx_periph_ops = {
    .read = pnx_periph_read,
    .write = pnx_periph_write,
    .endianness = DEVICE_LITTLE_ENDIAN,
};
static struct {
    QEMUTimer *poll_timer;
    uint32_t last_read_ptr;
    bool initialized;
} pnx_console = {0};

static void pnx_console_poll(void *opaque)
{
    uint32_t write_ptr, read_ptr;
    uint32_t buffer_base, buffer_size;
 
    /* Ring buffer addresses (physical, subtract 0x80000000 from kernel addresses) */
    uint32_t write_ptr_addr = 0x02d7828;  /* 0x802d7828 - 0x80000000 */
    uint32_t read_ptr_addr = 0x02d7810;   /* 0x802d7810 - 0x80000000 */
    uint32_t base_addr_ptr = 0x02a1c04;   /* 0x802a1c04 - 0x80000000 */
    uint32_t size_addr_ptr = 0x02a1c00;   /* 0x802a1c00 - 0x80000000 */
 
    /* Read ring buffer state */
    cpu_physical_memory_read(write_ptr_addr, &write_ptr, 4);
    cpu_physical_memory_read(read_ptr_addr, &read_ptr, 4);
 
    if (!pnx_console.initialized) {
        pnx_console.last_read_ptr = read_ptr;
        pnx_console.initialized = true;
        printf("\n[PNX8543 Console Active - Reading kernel messages]\n");
        fflush(stdout);
        goto reschedule;
    }
 
    /* Check for new data */
    if (write_ptr != pnx_console.last_read_ptr) {
        cpu_physical_memory_read(base_addr_ptr, &buffer_base, 4);
        cpu_physical_memory_read(size_addr_ptr, &buffer_size, 4);
 
        /* Sanity check */
        if (buffer_size > 0 && buffer_size < 0x100000 &&
            buffer_base >= 0x80000000 && buffer_base < 0x90000000) {
 
            uint32_t ptr = pnx_console.last_read_ptr;
            int count = 0;
 
            while (ptr != write_ptr && count < 4096) {
                uint32_t offset = ptr & (buffer_size - 1);
                uint32_t phys_addr = (buffer_base - 0x80000000) + offset;
                uint8_t ch;
 
                cpu_physical_memory_read(phys_addr, &ch, 1);
 
                /* Print printable characters and newlines */
                if (ch >= 32 && ch <= 126) {
                    putchar(ch);
                } else if (ch == '\n') {
                    putchar('\n');
                } else if (ch == '\r') {
                    /* Skip carriage returns */
                } else if (ch == '\t') {
                    putchar('\t');
                }
 
                ptr++;
                count++;
            }
 
            if (count > 0) {
                fflush(stdout);
            }
            pnx_console.last_read_ptr = ptr;
        }
    }
 
reschedule:
    /* Re-arm timer for next poll (every 1ms) */
    timer_mod(pnx_console.poll_timer,
              qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + 1000000);
}
1766184900708.png
Alright NOW WE GOT TEXT OUTPUT. Everything past here begins the work I did yesterday and today. Everything before that I just talked about was done on Wensday and earlier. .(This includes installing a proper IDE as I was using notepad to write ALL OF THIS AND HAD WRITTEN ALL THE CODE AND MORE YOU SEE WITH GROK IN FUCKING NOTEPAD)

SO THATS IT RIGHT??? WE DID IT. well ive kinda cropped that screenshot you see above for a reason...
1766185129896.png
This gets spammed. And spammed and spammed and spammed.
If you do not know a interrupt is how the computer INTERRUPTS what the CPU is currently doing to do something else. Now if your thinking
"Dear guy on the kiwis of farms if the CPU is currently doing instructions how would it be able to interrupt itself and stop what its doing to go do something else. It can only do one instruction at a time"

This is where the PIC comes in. On your motherboard and on every other form of motherboard there is a device called a PIC(Programmable interrupt controller) This allows the operating system to assign interrupts to almost anything and then when that event happens IE a keyboard press it INTERRUPTS the cpu and tells it to do something. The PIC acts as a separate chip from the CPU so that it can interrupt it at any time as the CPU can only do one instruction at a time and unless the CPU is to check the status of EVERY single interrupt check(IE disk operations keyboard keys being pressed) after EVERY instruction it would be extremely slow. So that's why the PIC is independent from the CPU and works on its own to tell it when to stop what its doing and go handle something else.

Now mips and embedded systems don't have a PIC in the traditional sense. What you will learn about embedded systems is that almost NOTHING is unifed. You don't just grab a random linux image and boot from that device, No you have to BUILD the operating system for your device or build the board around the operating system image if your emulating. And this includes interrupt tables.
Now that spam is likely the values of the interrupts(0x07 belonging to the TIMER interrupt 3 belonging to etc) are likely out of order because the MALTA board for qemu is of course different from the one taken from a random TV.

Now here is the good news, the good news is that I was able to by viewing the strings of the kernel figure out that the board for it was a "NXP PNX8543/TV543" and ill tell you right now I orginally had the WRONG idea. I originally thought that I should be searching online for schematics. Really I should have just checked the linux kernel to see if they had support for the device and just viewed the data there and inferred stuff. But ill show you how THAT rabbithole went towards

Schematic Hell

Alright the goal is to find the interrupt table/Schematics for the interrupt table that we can use to reconfigure the malta source code

Alright so lets do a search for TV543 and HEY LOOK WE ALRIGHT FOUND A DATASHEET/Schematic
1766186406371.png
Alright now this. THIS looks promising. Lets just scroll down and.
1766186438522.png
Thats it..... Thats the whole fucking thing.......

Ok well obviously that did not get us far and I cant find anything so lets search by oh I don't know PNX8543.
Alright so I cant find a EXACT datasheet for the PNX8543 I know its a chip or board.. Or well its either a CPU or board..
BUT I was able to find a HUGE service sheet for a TV(Q552.2L LA) with a PNX8543 by Philips and after going through over 203 PAGES.(And to anyone 10 years in the future where society has collapsed and your looking for this datasheet. Check the attached files) of codewords

1766186731361.png

Electrical engineering sheets
1766186866680.png
VGA pinouts
1766186906114.png
And by the way I do not know WHAT service engineer would need this stuff considering that its not like they can change the circuitry of this shit. Anyone who knows well... ANYTHING about electrical engineering feel free to quote and tell me why a service repairman would want/need to know this.
and "I don't even know what what the fuck this is or can describe it"
1766187086251.png
I came up with absolutely nothing.... Maybe its because im not exactly a electrical engineer and can BARELY understand the circut shit. Maybe its because they dont give the circuitry of the INTERNALS of the chip just the outside internals that communicate with it. Only things related to interrupts were little raillines that had the label of IRQ but never told us where it was going.

Alright so now we have to throw ALL of this out the window and try a new solution.
Realizing that ALL the time I spent was for nothing.
Now on google PNX8543 shows nothing in terms of files or github repository's however eventually I stumbled upon a file relating to the linux kernel to the PNX833xx
Now admittly I could have used this but I knew in the back of my mind what if i spend the next week desinging this board around the info of a similar enough chip only to find out that things are completely different and the "PNX8543" is almost completely different from "PNX83xxx"(xs just mean generic). Don't want that to happen. So I searched a 2010 linux kernel archive for PNX85XXX and while I did not find anything I did find PNX8550 which although not PNX8543 may be just a generic name. PNX8550 may not be a specific chip but rather support for a FAMILY of chips under PNX85XX which is what im hoping for. And guess what this PNX85XX folder has

1766187587461.png
A ENTIRE TABLE OF THE HARDWARE INTERRUPTS AND WHICH EACH ONE BELONGS TO.
1766187657063.png
So we can now edit QEMUS Malta board to align with what THIS board expects..

after some basic GIC work and a entire day of testing and going back and forth I eventually just came to a conclusion.
Setup basic initialization stubs for the GIC(general interrupt controller which is where ONE interrupt IE 0x02, acts as a function to where it will read a memory address and take the value of that and then return/do/act based on that. Allowing you to have MUCH more interrupts than what a standard chip/board provides 70 in fact in this case. You don't have to understand this explination because what im giving is very basic and if you want more feed what I put into chatgpt or something).

And then we just disable ALL interrupts except 0x07 or the timer interrupt.
And what do you know after that and days of testing, waiting 9 seconds to compile ONE SINGLE CHANGED FILE at a time, and over well ive kinda lost track I want to say 2 weeks on this piece of shit laptop.

We did it.
1766191767012.png
Well not really.
1766191784279.png
Remember when I said "Some things between the malta board and this random board are mismatched and expect different stuff" Well that applies to IO.. So no matter what I attach it will not properly mount or even acknologe that a disk exists. But hey I mean this is further than I thought id EVER get. But BELIEVE me I spent alot of time
trying before and after I came to that conclusion.

ALOT OF STUFF
1766193155106-png.8307005

So yeah not TECHNICALLY working but that is where im at.
Some other things I figured out today
Yeah so I learned how to use binwalk PROPERLY(apparently if there is a file like .BMP binwalk will like a dumbass refuse to extract it. you have to add --dd="bitmap:bmp" in order to extract it)
So was cool i guess, using that I rescanned the Phillips(Main TV application) Binary and found the SONY little bootup logo. If you ever wanted it here it is.

1766189654403.png
I cant upload the MAIN bmp as both for some reason imgur and kiwifarms refuse to display it but ill add a catbox link in a sec


Anyways I need to clarify for this that I have 2 MAIN sources I use for emulating this thing.
I have a NAND dump I found online
and a UPDATE file.
Now because of bad jffs2 tools I was not able to find this file in the NAND but I was in the update. I want to present to you THIS IMAGE.
BRAVIA.jpg
It was found in the update files and at first looks like just a random Forest right. Well look at the name BRAVIA.jpg. Could just be a placeholder but NOWHERE and i do mean NOWHERE I checked does this little image appear in the menus or anything.

Maybe its just a DEMO asset, used to show the picture quality when set to some demo mode and put at a store.

That could be but look at the upgrade file and the importance of the image(ALL the other images are stored in images.img by the way which makes this even more strange)
1766189970659.png
Writing Bravia Image? I mean all the other files like PANEL settings and all that apperently is not important enough to be printed but this RANDOM jpeg is?

I then realized that this JPEG is actually a hidden secret file. It most likely
  1. Hides a encryption/singing key or is ITSELF a signing/encryption key
  2. Used to detect if the NAND is corrupted by checking on bootup or something?
  3. Used as a calibration image by the auto calibrate software(although unlikely considering there is only ONE image here)
Images with secret properties to them? Interesting. And very cool.

Now yes I did find the source of this image and yes I did manage to do this all in a day as well as decode and fix the interrupt table, decode BMP files, spend hours tweaking and fixing shit with mtdblocks before I realized that the malta board is just incompatible without tweaks and then trying a bit more regardless before trying to manually fix it by fixing the source again, and also now figuring out secret images and tracing the exact location of them.

To be honest it was not even that hard.
Inside the JPEG are strings for adobe photoshop and "Gettyimages" and the EXACT place. So just searching Oirase river japan. Which is what the metadata says followed by "gettyimages" gave me this.
1766190385101.jpeg
Now admittedly the colors are off but like common, its a exact 1:1 of the image taken at the EXACT same position with the exact same little details. They could have just changed the colors.
 

Attachments

Last edited:
2025-12-19-161833_915x612_scrot.png

There's an EJTAG connector on the board. Apparently this can be used for full control if you know what you're doing. I hate hardware so I don't, but this is a possible advancement for the project.

ejtag program below said:
This program allows you to connect a MIPS EJTAG capable CPU to the PC parallel port. The CPU can then be booted from the PC, i.e. the PC loads the u-boot bootloader into the MIPS target SDRAM, and runs it.


at first looks like just a random Forest right.

I'd be hesitant to ascribe any more importance to that image than "leftover resource from some other project some lazy dev forgot to delete" unless you have something concrete regarding some side-channel behaviour. Corporate device images are riddled with extraneous bullshit. You'd be surprised.


its a exact 1:1 of the image

yeah that's exactly how stock photos work
 
Last edited:
. Corporate device images are riddled with extraneous bullsh
Thing is that in the almost 300 line update file its not just flashed to the TV but its coded to be PRINTED to the screen that it got put there
Code:
  MESSAGE " WRITING BRAVIA IMAGE "

      COPYUPG "BRAVIA.jpg" "/mnt/jffs1"


Compared to the other stuff that is just flashed without notice.
Code:
        COPYUPG "32inch_FHD_LTYZ320HM03.pqs" "/mnt/jffs1"
        COPYUPG "32inch_FHD_LTYZ320HM03.pqf" "/mnt/jffs1"
        COPYUPG "32inch_FHD_LTYZ320HM03.pqu" "/mnt/jffs1"
        COPYUPG "32inch_FHD_LTYZ320HM03.pns" "/mnt/jffs1"
        COPYUPG "40inch_FHD_LTYZ400HM02.pqs" "/mnt/jffs1"
        COPYUPG "40inch_FHD_LTYZ400HM02.pqf" "/mnt/jffs1"
        COPYUPG "40inch_FHD_LTYZ400HM02.pqu" "/mnt/jffs1"
        COPYUPG "40inch_FHD_LTYZ400HM02.pns" "/mnt/jffs1"

        COPYUPG "40inch_FHD_LTYZ400HM04.pqs" "/mnt/jffs1"
        COPYUPG "40inch_FHD_LTYZ400HM04.pqf" "/mnt/jffs1"
        COPYUPG "40inch_FHD_LTYZ400HM04.pqu" "/mnt/jffs1"
        COPYUPG "40inch_FHD_LTYZ400HM04.pns" "/mnt/jffs1"

If it was insignificant it would have been removed or not had a entire PRINT statement attached to it and if it was for testing it would not have been placed in between important stuff but instead at the end or beginning of the file.

And the name not "placeholder" well not that it would ever be named placeholder but it not being named anything random or well "testy" but instead "BRAVIA.JPEG" and to also have the updater script PRINT OUT "WRITING BRAVIA IMAGE" and not "Writing PLACEHOLDER NAME" is really suspicious to me
 
Last edited:
View attachment 8306829

There's an EJTAG connector on the board. Apparently this can be used for full control if you know what you're doing. I hate hardware so I don't, but this is a possible advancement for the project.



Also I want to thank you for giving me that . But there is a UART on the VGA that you can use and to be quite honest im scared to even use that. I am not opening up that motherboard I have heard the horror storys of opening up displays.... I am not a hardware guy, I mean I know more than like PC builders I can install a PC and all that and do basic rasberry pi GPIO stuff. But that is just way outta my league. Sorry.
 

I see and raise you the ultimate ricer accessory:

fetchfetch

Or seen elsewhere:

Onefetch is a command-line Git information tool written in Rust that displays project information and code statistics for a local Git repository directly in your terminal.

In the world of open source, curiosity will rape your mind.
 
I see and raise you the ultimate ricer accessory:

fetchfetch
This supposed 'tool' is a SERIOUS SECURITY RISK if run with su -c.
1766231846428.png
The script running as /usr/bin/env python3 could cause an impersonation of python3 through a user's bashrc to be passed through to root. I will be lodging a CVE over this vulnerability.
 
Sometimes it's nice to have a way to quickly share your specs. The fact that *fetch tools are used for e-peen measurements is another thing.

Anyways, out of boredom I've decided to tinker with my Windows install and move more software to a secondary drive as well as make it as portable as I can. Wrote a little PortableApps wrapper to launch Neovim with alternative XDG environment variables to make it portable, moved some directories and symlinked them back just so that the actual files sit on the secondary drive and so on. All with the idea to have as little present on the system drive if it ever shits itself and I need to reinstall, lower the friction of setting everything up again.

How feasible is doing something similar on Linux? Keeping all of your software somewhere within /home so that when you need to reinstall you transfer not only your personal files and configs, but also the software as well?
 
Sometimes it's nice to have a way to quickly share your specs. The fact that *fetch tools are used for e-peen measurements is another thing.

Anyways, out of boredom I've decided to tinker with my Windows install and move more software to a secondary drive as well as make it as portable as I can. Wrote a little PortableApps wrapper to launch Neovim with alternative XDG environment variables to make it portable, moved some directories and symlinked them back just so that the actual files sit on the secondary drive and so on. All with the idea to have as little present on the system drive if it ever shits itself and I need to reinstall, lower the friction of setting everything up again.

How feasible is doing something similar on Linux? Keeping all of your software somewhere within /home so that when you need to reinstall you transfer not only your personal files and configs, but also the software as well?
If you want everything contained in your home, add $HOME/.local/bin to your $PATH and $HOME/.local/lib to your $LIBRARY_PATH and $CPATH, and edit the makefiles of software you compile manually so that they install to those locations. Alternatively, I believe Guix has a setup where you can use it as a non-sudo user and install things to your home directory.

However, thanks to the magic of Unix’s single file tree, you can just mount your system directories on a different partition. The biggest issue you’d run into is getting all the alternate install locations (/bin /sbin /usr/bin etc.) to point to the same drive. For distros that have opted for the usrmerge (Debian and debian-based, I think others), you’d just have to mount /usr on a seperate partition. If not, you could mount it as like /mnt/sys and symlink /bin and all that to /mnt/sys/bin o algo
 
How feasible is doing something similar on Linux? Keeping all of your software somewhere within /home so that when you need to reinstall you transfer not only your personal files and configs, but also the software as well?
That's very doable. Just depends how autistic/deep you want to go with it.

It could be as simple as having home, and all the normal user files on another partition, or drive that's mounted on /home at boot.

If you want to also have certain programs in home too, or even everything outside of system packages. You can use flatpak, appimages, or the nix package manager. And place everything extra you install in that. So you can move between a different distro, only needing what the base system provides.

If you were going with that option. I think flatpak, set up to be installed on the user level is probably the simplest. Then nix will be less simple, but will be a lot more flexible. And work with things like command line tools much better. There are also things like distrobox, for installing command line stuff, or anything really in your home directory. And appimages. While they work decently when you are installing one or two. I imagine if you had a lot it could be a bit less practical.

How you do it would depend on how you want it to end up.

Edit to avoid doublepost :

Watched this video about arch. I wouldn't really call it a guide. But I think overall he is spot on in the advice he gives on how to run arch as a daily driver. That is stick with the KISS princple, which is the moto of the whole distro. Really doing that alone will keep you out of trouble, but the rest is pretty good advice.

I actually do something similar to him with the notes he takes. I'm not as extensive though. I just make a file with a relevant name in ~/Documents any time I manually install dependencies for a program I am building myself outside of the package manager so I can keep. Track of them.

I also show all the packages I have explicitly installed every few months, look at the list, and uninstall anything I'm not actually using. That's one thing I've noticed some people don't bother to do. They just install a bunch of stuff, never worry about removing it afterwards, and it accumulates over time. Even if it doesnt directly cause problems, it's more software you have to update, and more disk space wasted.
 
Last edited:
People complain about vim's weird way to quit out of it (:q/:wq), but every single time, without fail, I get completely confused as to what the hell I'm doing in nano, how the fuck do I get out, get out, get out, what do you mean it's not saved, just let me out, now, let me out, get out, get out, now, let me out, now, please.
Ctrl-X. Nano tells you right at the bottom of the screen how to exit, you dumb shit.

Any useful text editor will ask to verify unsaved changes. It's a simple Y/N answer.
 
How feasible is doing something similar on Linux? Keeping all of your software somewhere within /home so that when you need to reinstall you transfer not only your personal files and configs, but also the software as well?
You would be best off using an immutable distro to accomplish this, then use brew for cli and flatpak for UI for all applications. It's possible without immutable distros but you'll inevitably slip up.
 
Ctrl-X. Nano tells you right at the bottom of the screen how to exit, you dumb shit.
tbf the thing that annoys me in Nano is how they go against the standard keybind conventions. My brain associates Ctrl+X with cutting, not exiting, yet that's how Nano does it and it moves cutting to Ctrl+K. Now let's say I want to save my edit, so I hit Ctrl+S like in other programs, no? Wrong, it's Ctrl+O!

One thing that's nice about Vim is that since it forces you to think the Vim way you don't have these confusions, you know it's :w and :q since it's Vim and once you get used to it it becomes natural, while Nano will confuse you due to how deceitfully familiar it feels. If you're going to come up with your own convention, then tear down any foundations and start from scratch instead of doing it half-and-half.

Though Vim's bigger issue is having to "*y "*p whenever you want to go in and out of Vim and the system clipboard with no sensible noremaps available.
 
tbf the thing that annoys me in Nano is how they go against the standard keybind conventions. My brain associates Ctrl+X with cutting, not exiting, yet that's how Nano does it and it moves cutting to Ctrl+K. Now let's say I want to save my edit, so I hit Ctrl+S like in other programs, no? Wrong, it's Ctrl+O!

One thing that's nice about Vim is that since it forces you to think the Vim way you don't have these confusions, you know it's :w and :q since it's Vim and once you get used to it it becomes natural, while Nano will confuse you due to how deceitfully familiar it feels. If you're going to come up with your own convention, then tear down any foundations and start from scratch instead of doing it half-and-half.

Though Vim's bigger issue is having to "*y "*p whenever you want to go in and out of Vim and the system clipboard with no sensible noremaps available.
i didnt rly have trouble with nano shortcuts cause in almost every terminal ctrl+x does not cut and ctrl+v does not paste
ctrl+shift+x/v may do it though
but i found myself using shift+ins and ctrl+ins
 
i didnt rly have trouble with nano shortcuts cause in almost every terminal ctrl+x does not cut and ctrl+v does not paste
ctrl+shift+x/v may do it though
but i found myself using shift+ins and ctrl+ins
Yeah to be fair it's not the Ctrl+X that I have an issue with but Ctrl+O. Especially when IIRC Ctrl+S is unused in Nano. You can noremap <C-s> to :w and there'll be no conflicts, so why Ctrl+O? Why the direct opposite of the keyboard where any other software, including terminal based, puts it's saving keybinds to the left? Really annoying.
 
Though Vim's bigger issue is having to "*y "*p whenever you want to go in and out of Vim and the system clipboard with no sensible noremaps available.
Ctrl-Shift-C and Ctrl-Shift-V work great in vim and nvim under st. Bucky bits make me feel like a bit of an emigger here but whatever it solves the problem.
 
Seriously distributions just need to have nano load the very sensible settings from the very handily set up and commented nanorc in /etc every distribution ships with. It would make the command line so much more comfortable for new users.
 
I'm mixed on fetches as well, but I do love onefetch. It's nice for revisiting repos I haven't touched in a while.
 
Ctrl-Shift-C and Ctrl-Shift-V work great in vim and nvim under st
Then I don't know what's wrong under Winshit since for some reason Neovim doesn't handle copy calls from Windows Terminal or from Alacritty. Be it Ctrl+Shift+C or Ctrl+Insert. Pasting works fine though, so I can only assume what happens is that neither of those two terminal emulators treats Vim's visual mode as an actual selection when copying as they're expecting the emulated text to be selected, and since you're operating on Vim and not on the terminal emulator you don't copy anything.

It's be nice if I could get it set up within Nvim rather than relying on the terminal emulator with noremap, but AFAIK it's impossible to make a binding with two modifier keys. Adding something like :vnoremap <C-S-c> would solve my issue, though I guess you could get away with :vnoremap <C-c> since that won't cause any conflicts, just as a crutch for copying things from Vim where you'll be doing it through visual mode 99% of the time anyways.
 
tbf the thing that annoys me in Nano is how they go against the standard keybind conventions. My brain associates Ctrl+X with cutting, not exiting, yet that's how Nano does it and it moves cutting to Ctrl+K. Now let's say I want to save my edit, so I hit Ctrl+S like in other programs, no? Wrong, it's Ctrl+O!

One thing that's nice about Vim is that since it forces you to think the Vim way you don't have these confusions, you know it's :w and :q since it's Vim and once you get used to it it becomes natural, while Nano will confuse you due to how deceitfully familiar it feels. If you're going to come up with your own convention, then tear down any foundations and start from scratch instead of doing it half-and-half.

Though Vim's bigger issue is having to "*y "*p whenever you want to go in and out of Vim and the system clipboard with no sensible noremaps available.
Set an alias for nano to nano --modernbindings.
 
Back
Top Bottom