GUADEC 2017

This year is my second one attending GUADEC, this time around, in Manchester. It was a great experience this time too, because I got to meet again with the friends I made last year, but also I got to make new friends as well.

During the core days I attended a lot of great talks and I got to learn cool new things. Among these, I could mention learning about technologies that I didn’t know they existed, like Emeus, improve my view about how a good design should look like or discover more about the history of GNOME. Since this year I am a GSoC student again, I also had a lightning talk and I’m happy to say that this year I was slightly less nervous about talking in front of a lot of people.

During the unconference days I had a bit of time to work on my project and talked about it with my mentors, Carlos Soriano and Carlos Garnacho. Also, I got some feedback on the work I did this summer from Allan Day.

Besides that, we also had a lot of fun. For instance, the 20th anniversary party was great and the venue was very cool as well: the Museum of Science and Industry in Manchester. There was a trip to the Peak District, which is quite close to Manchester, and even if at the top it was a bit foggy, we still got some great views.

GUADECFinally, I would like to thank the GNOME Foundation for making it possible for me to attend GUADEC this year and I’m looking forward to the next one, which will be in Almería.

sponsored-badge-shadow

 

 

 

 

GUADEC 2017

Tags in Nautilus

As I mentioned in my last blog post, I spent the last weeks working on tags. Though, just to be clear from the beginning, general tags will probably not make it into the next versions of Nautilus. At the time I found out that this feature should not be included, I already had some of the work done, so I’ll explain below what I accomplished even if it’ll not be part of the next releases.

From what I understood, the issue with general tags is that it would add another layer of organization, as it would serve a similar purpose to folders. To some extent I understand this decision, but still, I think that even so, tags would be useful to some users, because for tags the file location doesn’t matter and you can also use colors.

General tags are stored in the tracker database using nao:Tag. In the time I worked on tags I mostly worked on the backend, so I have implemented a tag manager which does all the queries asynchronously, except for getting all existing tags and favorite files, which are queried at start up. Other actions that can be done with the tag manager are: adding/deleting a tag, getting what tags some files have or getting files that have a certain tag.

Besides that, I also got to implement a dialog which edits the tags of the selection, being able to create a new tag, add an existing tag or deleting a tag. The video below shows how it looks like.  This is just a design that I came up with and there’s definitely room for improvement. Though, if in the end we decide that general tags should be a feature of Nautilus, we’ll have the mockups of Paulo who did some nice design for this.

Instead of using general tags we decided that it would be useful to have Favorite files, which is like a tag, but focused on a single case.

The UI for favorite files is a bit different. In the list view, there is a star icon which can be toggled making/unmaking files favorite. Also, the favorite files can be accessed from the sidebar which will have an item for this, opening a location which shows all the favorite files.

The tag manager is also used for the favorite files, using the nao:predefined-tag-favorite tag for them. Nautilus keeps the urls and the tracker ids of the favorite files cached, so that there won’t be any unnecessary queries when navigating through directories. This cache is updated using Tracker Notifier which emits a signal whenever a change occurs, like starring/unstarring a file.

 

Tags in Nautilus

Improving the Search of Nautilus

This summer I’m really glad to be working again on Nautilus as part of Google Summer of Code. This time, the goal of the project is to improve the Search. Currently, it misses some features that would make searching easier and there are also some performance issues.

So far I worked on Full Text Search. This could be done until now, but from Desktop Search (tracker-needle). Since one of the main functions of Nautilus is searching files, it makes sense for it to include this feature.

Now, if the user chooses so, the search results will no longer include only matches with the file name, but also with the contents of the file. Also, to be more relevant, a short snippet with the context in which the text was found is offered. To get this information, a Tracker query is used, which means that in order to find the files, they will need to be indexed by Tracker.

Until last week I was busy with my exams and those took quite a bit of my time, but now that they’re finally done, I can give my full attention to Nautilus.

Next, I’ll focus on tags, since this is a feature that would sure come in handy at organizing files. So, there are more updates to come in the following weeks 🙂

 

Improving the Search of Nautilus

Restoring tabs

Being able to restore tabs is a common feature that most web browsers provides to their users and could come in handy for some users of Nautilus since it’s much easier to restore the tab than navigating again to a file that’s somewhere deep in the hierarchy.

In order to be able to restore a tab in Nautilus, we have to keep a list with the minimum of information to recover the tab. This means that we’ll store the history, the view before search, in case the closed tab is a search, so that we know what was the view type before searching and last but not least, the location which was closed. Storing the location also means that the window will now keep a reference of the closed locations.

Restoring a tab can be done the same way as in a web browser, by pressing Ctrl+Shift+T.

 

Restoring tabs

GUADEC 2016

This year I’ve been to my first GUADEC in Karlsruhe, Germany. It was an awesome week, as I got to meet my mentor in person and a lot of other friendly people. Being part of the GNOME community it’s really amazing !

In the core days, I attended talks and I even had a lightning talk and though I never did this before, I managed to handle it well. Besides this, we also enjoyed other activities, like the picnic, where we played some really fun games, or having some drinks together.

During this week, me, Carlos and Razvan also spent some time together working on Nautilus, reviewing, polishing and discussing ideas about our projects. I really enjoyed this, as discussing in person is much better than doing it online. Besides this, we had a Nautilus BoF as well, where we discussed some interesting things about the past, present and the future of Nautilus.

Apart from these activities, we also did other cool stuff like going on the zip line in the park, or relaxing at the swimming pool, all adding up to making this week an wonderful experience.

I would like to thank GNOME for the sponsorship to attend the conference and let’s hope that I can attend next year in Manchester 🙂

sponsored-badge-simple

GUADEC 2016

Batch rename updates

Hey everyone, in these past weeks I’ve been working on implementing Allan’s design and now I’m getting closer and closer to having the work completed.

This is how the batch rename dialog looks like now:

photo1

The format mode consists of an entry where you can add several tags, like the original file name or numbering. For files with metadata, the user also has the option to add relevant information, like the creation date for photos or the artist of the song for music. The metadata is acquired using a tracker query, then stored and used when needed. Apart from this, there can be written text anywhere between the tags. So, now, for a photo, instead of having a default meaningless name, we could have something like this:

photo 2

If there is added numbering, there is also the option to sort the files based on some criteria.  The Add button pops up a menu with the tags that are currently available. Here is how the menus look like:

Photo 4                                     Photo 3

Keeping the arrows and labels in the listbox the way we wanted proved to be a little more difficult than we expected. The obvious solution was to use GtkSizeGroup to make the labels have the same width, but this proved to be a bad idea due to the big complexity of the GtkSizeGroup, making the dialog completely unusable when renaming a few thousand files. The workaround we used was to have three listboxes instead of one and add both the listboxes that hold the name labels in a GtkSizeGroup. This way, it looks nice and it also takes a decent amount of time.

The replace mode works the same way as it did before, having suffered only a few design changes, like the entries not being on the same row and adding highlight to the replaced text.

Screenshot from 2016-08-04 22-43-37

Conflicts are also handled in a different way now. When a conflict occurs a label with two buttons pops up, so the user will be able to navigate through all the conflicts. When the arrows are clicked, the next/previous row with a conflict is selected in the listbox.

Photo 5

Also, I will be coming to GUADEC, so see you there! 🙂

 

Batch rename updates

First results

Not so long ago I finished my last exam and though I didn’t manage to spend as much time as I wanted on the project during my exams period, I added two modes for the batch renaming: Add Text and Replace. Add Text is appending/prepending  a string to the name and Replace replaces a string from all files selected with another.  Here is a video of how this modes work.

Something else I approached until now is handling the file conflicts. When renaming multiple files, there’s a chance that one or more files will end up having the name of an already existing file, making the renaming impossible. Until now the user would have seen an expander that shows a list with all the conflicts, but we decided that it would be better to change this design.

Initially, we followed the design of Finder since it seemed good enough, but it actually has some flaws. Carlos decided to ask for ideas on his blog and that turned out really well since we got a lot of good ideas, like using metadata. With the help of that blog post we also got to Alfredo from DeviantArt who offered to help us with design ideas (Here is his work). On the design part we also got help from Allan Day who offered us a very nice mock up, which we decided to use. What I like most about Allan’s design is that it uses tags and this leads to a more flexible renaming process.

I’ve already started working on the new design, so on my next blog post I expect to have some major improvements.

First results

GSoC 2016

index

Hey!

Firstly, I’d like to say that I’m really excited that I got accepted to Google Summer of Code 2016 and for having the opportunity to work on such an interesting project as Nautilus.

The first time I learned about open-source and Linux was in the first year at University and since then I’ve been a user of open-source software and now I’m really glad to say that I’ve become a contributor. I started contributing in February this year and one thing that I love about GNOME is the community, which has some really helpful and friendly people. The person who helped me the most is my mentor, Carlos Soriano, who offered me his help every time I needed it, for which I thank him a lot!

This is my first real project that I’m working on and I can say that doing something that you know will actually benefit people gives an amazing feeling. The goal of my project is to provide the ability of renaming multiple files in Nautilus easily, using a simple, nice and intuitive UI. Until now, you could do batch renaming only by using a third party tool, but that meant that you had to spend extra time for a simple task. The way I picture this new feature is by offering several modes of renaming like append/prepend, replace or format.

Here I’ll add updates about my work, so you can follow this blog to see how my project will progress 🙂

Alex

GSoC 2016